Все заметки

Рефакторинг обработки ввода

Обработка ввода – это вообще первое, что я написал в движке и сейчас, когда я смотрю на код написанный 5 лет назад, некоторые моменты хочется поменять. Для начала я отказался от своих кастомных именований событий в пользу того как они есть в нативном JavaScript. Может “RIGHT_CLICK” выглядит и понятнее чем “contextmenu”, но для Frontend разработчиков скорее всего второй вариант будет привычнее. Далее вместо привязки к числовому коду клавиши “keyCode”, который уже давно deprecated, я переехал на более актуальный строковый код клавиши. Тем самым избавился от необходимости держать в проекте маппинг с числа на символ. Это нужно было чтобы при настройке управления ты мог указать именно символ клавиши, а не ее числовой код, о значении которых никто не знает.

Вместе с отказом от маппинга клавиш понадобилось доработать виджет KeyboardControl компонента в редакторе. Раньше я брал этот маппинг и пихал в селект, но его больше нет да и селект на все возможные клавиши это очень неудобно. Поэтому я реализовал специальное поле, которое слушает нажатия клавиш и вставляет в поле код нажатой клавиши. Чтобы не ломать навигацию с клавиатуры, по умолчанию поле находится в режиме только для чтения и по нажатию на кнопку справа или на Enter, включается режим смены клавиши.