Все заметки

Копировать, вырезать и вставить

Январь позади, а я уже закончил первую большую задачу – добавил операции: копировать, вырезать и вставить. Теперь можно скопировать или перенести выбранные элементы в произвольное место. Ранее операции совершались только над одним элементом за раз, а возможности переноса не было совсем, только создание дубликата на том же месте.

Пришлось перелопатить кучу кода. Дала о себе знать проблема, что разные сущности в конфиге игры представлены по-разному, а также у некоторых элементов есть побочные эффекты при изменении. Например, при удалении шаблона нужно также удалить все наследуемые от него акторы. Акторы можно вкладывать друг в друга, но сцены и уровни – нет. Поэтому базовый каркас для работы с буфером обмена и горячими клавишами общий, но обработчики пришлось писать отдельно для каждого списка.

И это далеко не все проблемы с которыми я столкнулся. При вставке в место, где уже есть элемент с таким именем, нужно генерировать новое имя для копии. Для этого пришлось перебирать все элементы в точке назначения, чтобы исключить возможность совпадения. А при множественном переносе нужно учесть, что по нажатию на ctrl+Z все должно вернуться на свои места.

Очередное улучшение сделало редактор значительно удобнее. Всего на год я запланировал как минимум 4 задачи для движка и редактора, которые я посчитал самыми важными. Следующая на очереди – звук.