ТОМ - платформа для текстовых игр

Объявление

Платформа ТОМ предназначена для создания текстовых игр на русском языке и имеет развитый парсер, позволяющий взаимодействовать с играми с помощью команд на близком к естественному языке. В данный момент активно разрабатывается версия ТОМ 2.
Последнюю версию платформы можно скачать здесь.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



vTOM2

Сообщений 1 страница 30 из 90

1

Для затравки скину прототип конструктора слов для моей среды разработки под платформу ТОМ2.
Интерфейс (только для конструктора слов) пилил 2 дня, но осталось ещё много шероховатостей. А вот генератор словоформ взял из старого плагина автоматической генерации лексем и впилил его за пол часа в этот конструктор практически ничего не меняя. Так-что автоматическая генерация работает только в показательном режиме и выдаёт слова с морфкодами из первого ТОМа. И ударения глючат, не обращайте внимания.
Основная форма ничего не делает. Это просто заготовка под среду разработки. Единственное, что нас интересует сейчас, это код слова в центре и кнопка "Test" в левом верхнем углу. По нажатии на эту кнопку открывается конструктор слова, код которого был в главном окне. Дальше объяснять не буду, кому надо потыкаете и сами разберётесь. Это ведь только прототип для проверки юзабильности. Если кто посмотрит, отпишитесь как оно по удобности.
Ах да, для автоматической генерации словоформ нужно ввести начальную форму слова в поле "Имя" и только потом нажать кнопку "Создать" -> "Словарь АОТ".
http://s7.uploads.ru/t/dbg68.png

Прототип

2

Посмотрел, работает =)
Что-то предлагать или критиковать пока еще слишком рано.
Начало интересное, ждём во что вырастет =)

3

Что касается чтения словаря tom.dic и вытягивания из него какой-либо информации, не спеши пока с этим.
Есть идея импорта словаря в формат http://www.sqlite.org/
Тогда будет доступна масса полезной служебной информации. Для среды разработки может пригодиться.

4

Всё в БД хочешь сделать? Только не используй БД при парсинге, иначе скорость совсем потеряешь. БД конечно удобно и выгодно для некоторых задач, но для парсинга в риалтайме никак не годится на мой взгляд.
А tom.dic я уже расковырял по простому. Но для среды разработки нужна будет ещё кое-какая метаинформация, так-что рядом с этим файлом будет ещё один с этой информацией. И просто взять новую версию tom.dic и скормить старой среде разработки не получится. Метаинформации для новых/изменённых объектов будет не хватать.

5

Alexandr написал(а):

Всё в БД хочешь сделать?

У меня и так всё в БД сделано. Нужно просто перелить всё из одного формата БД в другой, полностью сохранив всю структуру и выкинув лишний мусор. Это избавит конечного пользователя от необходимости инсталировать SQL-сервер.

Alexandr написал(а):

Только не используй БД при парсинге, иначе скорость совсем потеряешь. БД конечно удобно и выгодно для некоторых задач, но для парсинга в риалтайме никак не годится на мой взгляд.

На MySQL уже пробовал, нормально там всё со скоростью =) Откуда такое предубеждение?

Alexandr написал(а):

А tom.dic я уже расковырял по простому. Но для среды разработки нужна будет ещё кое-какая метаинформация, так-что рядом с этим файлом будет ещё один с этой информацией. И просто взять новую версию tom.dic и скормить старой среде разработки не получится. Метаинформации для новых/изменённых объектов будет не хватать.

Вот это очень плохо. Библиотека будет долго еще развиваться, а среда разработки не будет за ней поспевать...

6

Годзилла vTOM2 возвращается! На днях открыл проект vTOM2 и походил по нему напильником. В результате похождений был сделан редактор объектов и локаций, дерево мира (локации, объекты в них), загрузка-сохранение проекта (тестовый вариант), компиляция с последующим запуском. Хоть за два дня и не получилось сделать полноценный редактор, но уже сейчас в нём можно наваять элементарный проект с парой локаций и объектов (переходить между локациями не получится, ведь пока нет ни секций, ни редактора кода), а так-же скомпилировать и запустить наработанное прям из редактора.

Не думаю, что хорошо выкладывать такие ранние альфы, но т.к. на форуме всё-равно никого нет, то ничего страшного не произойдёт если я положу сюда этот экспериментальный прототип:
vTOM2

Для примера распишу процесс создания и компиляции простейшего проекта.

Запускаем vTOM2.exe. На форме много всего лишнего - осталось от тестирования разных возможностей. Всё что мы сейчас будем использовать, выделено красным на скрине ниже:
http://se.uploads.ru/t/SmRsk.png
Слева снизу - дерево проекта. Там уже есть нечто страшное с именем "<NullEntity>" - это нечто иное как корневой узел проекта. Все объекты и локации так или иначе находятся в нём. Так-же там есть объект "ты", он выделен жирным потому-что это главный герой (персонаж).
Теперь создадим локацию: кликнув по элементу "<NullEntity>" правой кнопкой выберем "Add Location":
http://se.uploads.ru/i2HAU.png
Назовём её, например "мост".
Перетащим мышью нашего героя "ты" на локацию "мост". Должно получиться как-то так:
http://se.uploads.ru/seta5.png

Кликнув два раза по локации откроем её:
http://se.uploads.ru/IqCA9.png

Слева есть дерево параметров объекта "мост". Пока оно пустое. Кликнув на папку Propertys правой кнопкой выберем "Add Property Page":
http://se.uploads.ru/dKL3D.png

Назовём создаваемую страницу, например, "Описание", т.к. на ней мы разместим свойства, относящиеся к описанию локации. Так-же можно создать ещё страницы свойств, рассовать их по папкам, но мы не будем этим заниматься.
Два раза кликнув по этой странице справа откроется сама вкладка.
http://se.uploads.ru/SZlXj.png

Теперь нам нужно добавить свойство на вкладку. Для этого служит неприметная кнопочка снизу "Add Property". Жамкнув её и введя имя "полное_описание" на нашей вкладке добавится новое свойство.
Пока это свойство не типизировано. Напротив него будут две кнопки, нажмём левую и выберем "Type -> Text".
http://se.uploads.ru/a3Ju2.png

Теперь это свойство имеет тип многострочного текста. Можно написать в появившемся поле какое-нибудь описание, например "огромный железобетонный мост через широкую реку".
Закроем окно, нажав "Ok" (если нажать "Cancel", то все изменения пропадут).

По аналогии можно добавить "яблоко" в объект "ты":
http://se.uploads.ru/pGka7.png
Нам ведь не жалко яблок ;)

Чтобы сохранить проект, можно нажать в главном меню "Project -> Save Project".

Для компиляции нажмём в главном меню "Compiler -> Compile". На первый взгляд ничего не произошло, но если заглянуть в папку с программой, то там должен появиться файлик "Demo.txt" с примерно таким содержимым:
http://se.uploads.ru/TqiI4.png

Так-же можно было просто нажать F9, тогда проект скомпилируется и запустится в программе tom2.exe (если таковая имеется в папке с vTOM2):
http://se.uploads.ru/7KBHN.png

На этом возможности пока заканчиваются.

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

7

Скачал, смотрю, работает! =)

8

Дерево проекта
Примерно так я себе его и представлял. По сути дерево напрямую отражает структуру файла.
Замечания и предложения:
- NullEntity - здесь лучше бы видеть имя проекта (оно же имя скомпилированного файла), здесь же его можно и редактировать.
- стандартное расширение для файла игры: .tom
- помимо объектов в дереве могут быть участки кода и глобальные переменные, надо бы это тоже предусмотреть.
- объекты, прикреплённые к другому объекту, должны делиться на 3 кучки: внутри, снаружи и части.
- нет возможности добавить в дерево проекта свою функцию (а они там очень понадобятся =)

Entity Edit
Со страницами свойств явно перемудрил, не так уж много свойств у объектов, чтобы разбивать их на страницы.
Одной страницы Propertys вполне достаточно. И свойства можно создавать и показывать непосредственно в дереве.
Папки там тоже лишние, простой линейный список свойств нагляднее.

Страница свойств
- кнопку выбора типа логичнее разместить самой первой, а галку включения/выключения свойства разместить рядом с кнопкой удаления;
- булевый тип помимо да/нет должен иметь поле для ввода текстового комментария.

Страница Code
Эта страница сейчас, как я понимаю, не работает.
Вообще структура кода в объекте выглядит так:
- конструктор (выполняется 1 раз при создании объекта)
  -- описание свойств
  -- произвольный код (обычно это дополнительный класс или уточнение размещения объекта, но может быть и что-то еще)
- секции (методы)
  -- стандартные секции (выполняются при возникновении соответствующих событий)
  -- произвольные секции
можно было бы взять эту структуру за основу.

9

ASBer написал(а):

- NullEntity - здесь лучше бы видеть имя проекта (оно же имя скомпилированного файла), здесь же его можно и редактировать.

Тоже об этом думал. Но сейчас в редакторе ещё нет работы с проектами. В нём всегда открыт один проект и нет полноценной загрузки-сохранения проекта в указанный файл. Поэтому оставлю пока вот так, чтобы не смущало:
http://se.uploads.ru/UAJST.png
На счёт файла проекта: он сохраняется в бинарном файле с расширением ".vtom". При компиляции проект преобразуется в файл с кодом с расширением ".tom" (уже не txt). Обратное преобразование из кода в проект vtom невозможно. Во-первых, проект содержит много вспомогательной информации, которая просто не сохраняется в .tom, а во-вторых, я не собирался писать ещё один парсер языка ТОМ2, только теперь на Delphi.

ASBer написал(а):

- стандартное расширение для файла игры: .tom

Исправил.

ASBer написал(а):

- помимо объектов в дереве могут быть участки кода и глобальные переменные, надо бы это тоже предусмотреть.

Дерево проекта на самом деле довольно гибкое. В нём могут храниться очень разные элементы. На данный момент поддерживаются только локации и объекты. Добавить любой другой объект не составит труда, но я не вижу смысла добавлять туда участки кода. Нужно смотреть на дерево проекта взглядом игрописателя, а не программиста. На счёт глобальных переменных тоже сомневаюсь, что их стоит отображать прямо в дереве. Оно и так будет перегружено объектами. Если присыпать всё это ещё и переменными, то будет трудно ориентироваться. По крайней мере я так считаю.

ASBer написал(а):

- объекты, прикреплённые к другому объекту, должны делиться на 3 кучки: внутри, снаружи и части.

Тоже вспоминал про это. Скорее всего реализую в виде трёх необязательных вложенных папочек. Т.е. можно конкретно засунуть объект в папочку, а можно просто положить в другой объект, тогда он будет помещён по умолчанию.

ASBer написал(а):

- нет возможности добавить в дерево проекта свою функцию (а они там очень понадобятся =)

Не слышал ни о каких функциях в ТОМ2. Секции знаю, конструкторы знаю, глобальный код знаю... функции? нет, не слышал. :)

ASBer написал(а):

Со страницами свойств явно перемудрил, не так уж много свойств у объектов, чтобы разбивать их на страницы.
Одной страницы Propertys вполне достаточно. И свойства можно создавать и показывать непосредственно в дереве.
Папки там тоже лишние, простой линейный список свойств нагляднее.

Помню первую версию редактора, где я пытался впихать все свойства на одну страницу. А если учесть, что объект унаследован от класса, который ещё десять раз унаследован от чего-то, то список свойств получается немаленький. Сейчас я даже не задумываясь развернул систему вкладок. Вот кстати, скрин из первой версии редактора:
http://savepic.org/1775488.png
Но с папками я действительно перемудрил. Только после того как уже сделал, заметил это. Но т.к. всё это уже готово и протестировано вдоль и поперёк, не вижу смысла убирать.
Показывать свойства в дереве уже не получится. Поле слева в редакторе объекта - ничто иное как дерево страниц. Только эти страницы ещё можно рассовывать по папочкам. Каждая страница открывается в отдельной вкладке справа. Это могут быть страницы свойств, конструктор, секции и ещё что-нибудь, если понадобится.

ASBer написал(а):

- кнопку выбора типа логичнее разместить самой первой, а галку включения/выключения свойства разместить рядом с кнопкой удаления;

Ок, кнопку перемещу. Точнее сделаю ещё одну, чтобы сразу выпадал список типов, а не через вложенное меню "Types". "Галка включения/выключения" на самом деле отображает унаследованность свойства от другого класса (сейчас она пока ничего не отображает, рано ей). В будущем, при создании объекта от какого-либо класса, все свойства всей цепочки классов будут отображаться в редакторе свойств созданного объекта. Только у них будет снята эта галочка. Если её поставить, то свойство переопределится непосредственно в объекте и его можно будет редактировать для объекта.

ASBer написал(а):

- булевый тип помимо да/нет должен иметь поле для ввода текстового комментария.

Забыл про эту фишку. Будет сделано.

ASBer написал(а):

Страница Code
Эта страница сейчас, как я понимаю, не работает.

Да, рудимент.

ASBer написал(а):

Вообще структура кода в объекте выглядит так:
- конструктор (выполняется 1 раз при создании объекта)
  -- описание свойств
  -- произвольный код (обычно это дополнительный класс или уточнение размещения объекта, но может быть и что-то еще)
- секции (методы)
  -- стандартные секции (выполняются при возникновении соответствующих событий)
  -- произвольные секции
можно было бы взять эту структуру за основу.

Так и собираюсь сделать. Работать будет примерно так:
http://se.uploads.ru/weuDA.png
Порядок частей в коде нормальный? Глюков не будет?

10

Alexandr написал(а):

Дерево проекта на самом деле довольно гибкое. В нём могут храниться очень разные элементы.

Это хорошо, потому что элементов нужно будет много разных.

Alexandr написал(а):

я не вижу смысла добавлять туда участки кода. Нужно смотреть на дерево проекта взглядом игрописателя, а не программиста. На счёт глобальных переменных тоже сомневаюсь, что их стоит отображать прямо в дереве. Оно и так будет перегружено объектами. Если присыпать всё это ещё и переменными, то будет трудно ориентироваться.

Хорошо, пусть будет так. Пусть будут в другом месте.

Alexandr написал(а):

Не слышал ни о каких функциях в ТОМ2. Секции знаю, конструкторы знаю, глобальный код знаю... функции? нет, не слышал.

Ну как же! а действия, факты и выражения? вроде бы они и есть функции :)

Alexandr написал(а):

Поле слева в редакторе объекта - ничто иное как дерево страниц. Только эти страницы ещё можно рассовывать по папочкам. Каждая страница открывается в отдельной вкладке справа. Это могут быть страницы свойств, конструктор, секции и ещё что-нибудь, если понадобится.

Ок. Только поначалу совсем не понятно, что для того чтобы создать переменную, нужно для неё создать страницу.
Может быть тогда первую страницу создавать автоматом при открытии редактора объекта?

Alexandr написал(а):

Порядок частей в коде нормальный? Глюков не будет?

Да, всё правильно.

11

За сегодня сделано:
+ Секции в объектах и локациях.
+ Наследование (можно перечислить классы, от которых унаследован объект. Унаследованные свойства не отображаются, т.к. стандартная библиотека ТОМ2 ещё не поддерживается).
+ Ключ (морфологический)
+ Новые объекты по умолчанию имеют страницу свойств "Основные".
* Частичная русификация, мелкие прихорашивания.
http://se.uploads.ru/RzYaV.png

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

12

Alexandr написал(а):

- Поддержка функций (действия, факты и выражения).
Неужели их придётся создавать в дереве проекта? Я изначально подразумевал его как дерево мира и в нём должны были отображаться только видимые/осязаемые объекты. С другой стороны городить ещё один элемент на форме, чтобы засунуть в него функции - излишество.

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

Alexandr написал(а):

- Поддержка стандартной библиотеки ТОМ2.
В прошлый раз я начинал редактор именно с этой части, но ничего хорошего не получалось. Чтение из БД; не до конца определённый формат записей, который к тому-же часто меняется; необходимость как-то хранить ещё и метаинформацию к этим записям и синхронизация при обновлении стандартной библиотеки - все эти палки в колёсах так и не дали мне тогда сделать редактор.

Специально для редактора хочу сделать выгрузку служебной информации из библиотеки.
Какой формат лучше сделать?
Можно взять XML, но мне больше нравится JSON. Или же придумать свой собственный формат...

13

ASBer написал(а):

Специально для редактора хочу сделать выгрузку служебной информации из библиотеки.
Какой формат лучше сделать?
Можно взять XML, но мне больше нравится JSON. Или же придумать свой собственный формат...

Оба формата (XML и JSON) поддерживаются Delphi из коробки, но работал я только с XML. Собственный формат можно разрабатывать разве что для сокращения размера файла.
Выгрузка разрешит две проблемы: "чтение из БД" и "не до конца определённый формат". Мы ведь хорошо распишем формат файла выгрузки?

Проблемы с хранением метаинформации и синхронизация при обновлении остаются. Дело в том, что у меня помимо необходимых данных в объектах хранится ещё и дополнительная информация для редактора. Например, вкладки свойств - это тоже метаинформация.
Помимо вкладок там есть комментарии, списки выбора для свойств, возможно ещё-что то. Эта информация не нужна ТОМ-у в базе данных, но нужна редактору для более удобного отображения пользователю.
Допустим, мы вручную создадим эту метаинформацию для стандартной библиотеки. Но при обновлении новые/изменённые объекты снова её потеряют. Вот такие пироги.
Возможно ты думаешь, что это не нужно, и для стандартной библиотеки можно генерировать всё по простому автоматически: без комментариев, с одной вкладкой свойств и т.д. Но всё это и разрабатывалось в первую очередь для стандартной библиотеки. Пользователь вряд-ли будет писать подсказки, делать списки выбора для своих объектов. Ведь большинство объектов у него будут уникальными. Стандартная библиотека наоборот будет использоваться всеми и должна иметь максимально удобный вид с подсказками и прочими облегчающими штучками.

В любом случае я сейчас сконцентрируюсь на функциях. Пока добавлю их прямо в дерево проекта, а там посмотрим как пойдёт. На первом цикле разработки надо сделать редактор, в котором можно будет создать проект, сопоставимый с демкой из ТОМ2. А для этого стандартная библиотека не понадобится... вроде-как. Задать от каких классов наследуются объекты можно уже сейчас в простом поле ввода. Для первого приближения хватит.

14

Alexandr написал(а):

Оба формата (XML и JSON) поддерживаются Delphi из коробки, но работал я только с XML.

Пусть тогда будет XML.

Alexandr написал(а):

Мы ведь хорошо распишем формат файла выгрузки?

Формат текстовый, свободно читаемый. Выгружаются только классы. Там и расписывать то в общем особо нечего...
- имя класса
- список родителей
- список свойств
- список секций
и это кажется всё... там больше ничего и нет.

Alexandr написал(а):

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

Обновление библиотеки это чаще всего добавление новых объектов. Большая часть информации остаётся прежней. Было бы здорово, если бы метаинформация сама умела присоединяться к новой выгрузке по именам классов и свойств.

15

За сегодня сделано:
+ Функции (действия, факты и выражения)
+ 3 вложенных в объект папки: внутри, снаружи, часть
+ Вложенные папки в дереве проекта
+ Удаление объектов из дерева проекта

http://se.uploads.ru/ZNB6V.png

Прямо перед выкладыванием заметил странный глюк: при перемещении объекта с несколькими вложенными объектами, некоторые из них визуально пропадают. Сейчас уже нет времени глубоко искать причину, просто добавил кнопку "Перестроить дерево" в контекстное меню.
vTOM2

При запуске сразу открывается проект Demo.vtom (так быстрее тестировать).
Подозреваю, что уже сейчас можно повторить в редакторе демо-проект, идущий с ТОМ2, но сам ещё не пробовал. Пока редактор не очень удобен. Например вбивать в объект много свойств утомительно с теперешними элементами управления. Но шлифовать всё это будем потом. Сейчас нужно стремиться к полноте покрытия языка ТОМ2.

16

Замечаний пока не много:
- Локации должны создаваться только в корне проекта.
- Внутрь функций нельзя добавлять элементы.
- Для вновь созданных локаций хорошо бы сразу добавлять секции "описание", "вход", "выход".
- Также нужна проверка на уникальность имен локаций и объектов.

А так всё здорово, работает =)

17

ASBer написал(а):

- Локации должны создаваться только в корне проекта.

Разве нельзя поместить локацию внутрь другой локации?

18

Alexandr написал(а):

Разве нельзя поместить локацию внутрь другой локации?

Описание локации можно пометить внутри конструктора другой локации, но на её расположение это ни как не повлияет.
Поэтому совершенно бессмысленно.

19

А на счёт проверок: я пока их все пропускаю. Сначала надо максимально быстро сделать полную поддержку всех возможностей ТОМ2, а уже потом допиливать все вкусности. Т.е. сначала редактором сможет пользоваться только опытный пользователь, знающий язык и все правила ТОМ2. Потом, с каждым обновлением, он будет всё более ориентирован на новичков и обрастать всё более интересным функционалом.
Почему надо сделать максимально быстро? Да потому-что я не знаю, на сколько хватит энтузиазма.
Сейчас, на сколько я понял, для полноты покрытия языка ТОМ2 не хватает только конструкторов (части кода, который описывается прямо в теле объекта) и глобальных переменных. Может я ещё что-то упустил?

20

Alexandr написал(а):

Сейчас, на сколько я понял, для полноты покрытия языка ТОМ2 не хватает только конструкторов (части кода, который описывается прямо в теле объекта) и глобальных переменных. Может я ещё что-то упустил?

Ну по мелочам еще много чего может вылезти, особенно после завершения текущего рефакторинга, но вроде бы ничего страшного.

что еще необходимо:
- в коде игры должна упоминаться библиотека =)

- Вы должны были привлечь её внимание простым естественным вопросом. А вы что спросили?
- «Как пройти в библиотеку?»
- В три часа ночи?! Идиот!

желательно в самом конце файла, если нам нужно быстродействие, или в самом начале, если в коде используются конструкции ЕЯ.

- если ГГ описан отдельно от стартовой локации, в конце должен быть Goto, перемещающий персонажа на старт.

- в начале игры может быть приветствие, или любой другой произвольный код (глобальный конструктор).

и пока всё...

21

За сегодня сделано:
+ Страница "Конструктор" в объектах и локациях.
+ Для вновь созданных локаций сразу добавляются секции "описание", "вход", "выход".
+ В коде игры упоминается библиотека.
* Кнопка выбора типа свойства отделена и помещена перед именем свойства.
* Исправлены пропадающие вложенные объекты при перетаскивании объекта с несколькими вложенными.

vTOM2

Видимо в версии tom2, которую использую я, ещё нет разделения секций на текстовую и кодовую часть:
http://se.uploads.ru/4nroL.png

22

ASBer написал(а):

- если ГГ описан отдельно от стартовой локации, в конце должен быть Goto, перемещающий персонажа на старт.

Думаю, помещение ГГ в стартовую локацию прямо в дереве проекта будет интуитивнее, чем создание дополнительного пункта в настройках проекта, в котором надо будет указать эту локацию. Goto будем использовать для последующего перемещения героя по локациям.

Когда займёмся выгрузкой стандартной библиотеки в XML?

23

Сидел, думал куда же запихать глобальный конструктор и глобальные переменные. И меня осенило: открывать корневой узел проекта (Demo.vtom) так-же как и обычные объекты/локации, и там: свойства = глобальные переменные, конструктор = глобальный конструктор. Это же так очевидно и понятно, почему сразу такое в голову не пришло.

24

Alexandr написал(а):

Когда займёмся выгрузкой стандартной библиотеки в XML?

в самое ближайшее время =)

25

Вот первый вариант.
https://cloud.mail.ru/public/790c87d40252/tomdic.xml

Простой список классов. Посмотри, пожалуйста, в таком виде подойдет?

26

ASBer написал(а):

Простой список классов. Посмотри, пожалуйста, в таком виде подойдет?

Список пойдёт. А как же слова, предлоги, свойства и код? Это всё ведь тоже есть в стандартной библиотеке.

27

Alexandr написал(а):

Список пойдёт. А как же слова, предлоги, свойства и код? Это всё ведь тоже есть в стандартной библиотеке.

Ну тогда давай список всего, что тебе нужно выгрузить, а еще лучше XML-структуру, из которой тебе будет удобнее загружать.

28

За сегодня сделано:
+ Глобальные переменные.
+ Глобальный конструктор.
+ Фиксация вкладок открытых страниц (частично: только свойства и код. Секции пока нет.)
+ Контекстное меню для вкладок открытых страниц (в нём - пункт Закрыть).
+ Картинка "секция", "свойство" и др. в заголовке вкладки.
* Локации создаются только в корне проекта.
* Закрытие вкладки при удалении секции или страницы свойств.

Ну вот, за исключением текстового описания для логических значений, вроде-бы всё. Можно выходить на второй этап: добавление различных проверок и поддержки стандартной библиотеки.

29

ASBer написал(а):

Ну тогда давай список всего, что тебе нужно выгрузить

А нельзя как-нибудь всё выгрузить? Оно ведь там вперемешку друг-на-друга всё завязано.

30

Alexandr написал(а):

А нельзя как-нибудь всё выгрузить? Оно ведь там вперемешку друг-на-друга всё завязано.

https://cloud.mail.ru/public/790c87d40252/tomdic.xml
Вот что получилось.
Словоформы пока еще не выгружены, с ними нужно повозиться.