Я долго думал, каким должен быть редактор ТОМ-а. Идеи были заоблачные, например: в главном окне программы рисуешь контуры локаций, объекты в ней, всё лёгкими движениями мыши превращается в объекты, связывается между собой... эхх, мечты-мечты. Потом я спустился на землю и начал искать пути попроще. Начал не выдумывать свои компоненты, а максимально использовать существующие. Представил всё в виде нескольких деревьев: дерево классов, дерево локаций и объектов в них, и дерево действий. Хотел поделить дерево классов на 2: глобальные (что-то вроде стандартной библиотеки объектов) и локальные (сохраняются только в текущем проекте). Потом подумал ещё немного и убрал деление, всё упростил до минимума, набросал это на форму... а дальше уже пошло всё само-собой.
Редактор сохраняет и загружает проекты в виде файлов своего формата. И лишь при компиляции превращает их в программу для ТОМ-а. Функции декомпиляции нет и не будет, т.е. нельзя открыть уже готовую игру и начать её редактировать в редакторе. Всё это вызвано тем, что для сохранения и загрузки проекта в формате tom нужно было бы делать нехилый парсер языка tom. А я не собираюсь дублировать платформу ТОМ. По этим же причинам в редакторе не будет полноценной подсветки синтаксиса и поиска ошибок в коде.
Вот скринчик зачатков редактора:
На данный момент реализовано:
- Сохранение/Загрузка проекта.
- Отладочная компиляция проекта (намечается 2 режима компиляции: отладочная и чистовая. В отладочном режиме каждый объект помещается в отдельный файл. Это значительно ускоряет частую компиляцию больших проектов. Чистовая, соответственно, помещает всё в один или несколько файлов). Уже опробовано на игре To_Pawn - всё работает.
- Редактирование параметров локаций и объектов.
- Редактирование действий.
В разработке:
- Добавление/Удаление объектов.
- Поддержка классов.
Всё представлено в виде вложенных деревьев, объекты которых можно перетаскивать, переименовывать. При клике на объектах, справа появляется окно редактирования параметров объекта. Не знаю, будет ли такая структура удобной, и будет ли это удобнее редактирования в блокнотике... время покажет.
Так-же хочу приправить всё различными мастерами и помощниками (на подобии того-же Редактора словоформ).