Расширение синтаксиса TXT2GAM

Расширение синтаксиса TXT2GAM

Предлагаю расширить синтаксис входного текста для утилиты TXT2GAM – кроме описания локаций и комментариев добавить еще и действия (базовые и «Выполнить при посещении»). При этом можно сохранить совместимость со старым. Например, так:

Код:


#Начало
     Здесь       текст
     локации
- (конец локации)
=
     Команды, которые нужно
      выполнить при посещении
      локации Начало

=Действие1
     Команды      Действия 1
     для локации Начало
=Действие2
     Команды  Действия 2
     для локации Начало

#Локация2
     Здесь       текст
     Локации2
-

#Локация3
     Здесь       текст
     Локации3
- (конец локации)
=
     Команды, которые нужно
      выполнить при посещении
      Локации3

Старая утилита TXT2GAM читает только между строками "#Имя" и  "-", поэтому добавления не заметит, а новая TXT2GAM понимает  текст и в старом формате ,т.к. действия "=" могут отсутствовать.

Feuerbart
useravatar
Offline
39 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Расширение синтаксиса TXT2GAM

Между "#" и "-" как раз код, который выполняется при посещении smile

Byte
useravatar
Offline
586 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Расширение синтаксиса TXT2GAM

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

Между "#" и "-" как раз код, который выполняется при посещении

Точно! Это я описанием формата GAM увлекся. smile
А было бы удобно писать там просто текст, без кавычек, а код-после =. Но тогда полной совместимости не выйдет. А может тогда "#" выполнить при посещении "-", а просто текст (описание локации)где-то еще?

Feuerbart
useravatar
Offline
39 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Расширение синтаксиса TXT2GAM

Нужно обдумать разные варианты.

Byte
useravatar
Offline
586 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Расширение синтаксиса TXT2GAM

Совместимость нужно обязательно сохранить!
Вот, придумал:

Код:

#Начало 

     Команды, которые нужно
      выполнить при посещении
      локации Начало
- (конец локации)
      Здесь   
      текст
      локации
=Действие1
@имя файла с картинкой1
     Команды      Действия 1
     для локации Начало
=Действие2
@имя файла с картинкой2
     Команды  Действия 2
     для локации Начало

#Локация2
...

Кстати, может сразу включить возможности формата QSP для утилиты TXT2QSP? И желательно при этом также сохранить совместимость. Верно ли я понимаю, что QSP-формат только картинкой для действия отличается?
UPD. А раз только картинка, то добавить для действия еще 1 строчку: "@имя файла с картинкой". Исправил код выше. Если генерируется GAM, то @ просто игнорируется, а если  QSP-файл, то вставляется соответствующая строчка.

Изменено: Feuerbart
24.Апр.10 11:47:33
Feuerbart
useravatar
Offline
39 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Расширение синтаксиса TXT2GAM

Я не вижу особого смысла добавлять базовые действия в формат TXT2GAM - их ведь можно с тем же успехом разместить в "выполнить при посещении". Также как и "текст локации".
Я думал над вариантом, когда эти поля находятся в начале кода локации, но разделены каким-либо специальным комментарием.

Код:

#локация

*p 'Текст локации'
!-
act 'Базовое действие 1','картинка':
(код действия)
end
act 'Базовое действие 2','картинка':
(код действия)
end
!-
(остальной код локации)
-

Byte
useravatar
Offline
586 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Расширение синтаксиса TXT2GAM

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

Я не вижу особого смысла добавлять базовые действия в формат TXT2GAM - их ведь можно с тем же успехом разместить в "выполнить при посещении". Также как и "текст локации".

Однако, в редакторе QGen есть отдельные элементы "текст локации", "выполнить при посещении" и "базовые действия". И это не просто внешнее удобство, они напрямую отображаются в формат GAM\QSP, где также все эти сущности есть отдельно. Поэтому расширенный TXT-формат позволит производить импорт\экспорт "один к одному".
UPD. Текст локации и базовые действия излишни, достаточно только кода локации ("выполнить при посещении"). Однако это  излишество только функциональное. Т.е.  можно перенести описание локации в кавычках в ее код и  перенести туда же базовые действия в виде "act...end" - в результате игра будет работать так же. Но функциональность - одно, а наглядность и удобство создания игры - другое.Нагляднее получится явное "синтаксическое" разделение, а не имитация при помощи операторов *р и act.К тому же и написать легче - кавычек и *р лишних не надо, "=действие" вместо "act действие:...end"

Изменено: Feuerbart
24.Апр.10 22:34:26
Feuerbart
useravatar
Offline
39 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Расширение синтаксиса TXT2GAM

Разделители в виде комментариев и нужны, чтобы один-к-одному конвертировать.

Byte
useravatar
Offline
586 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Расширение синтаксиса TXT2GAM

Можно и вообще без разделителей. Все операторы act из начала кода локации переносятся в базовые действия, а все строковые константы (с явным или подразумеваемым *p)- в описание локации. Но это программировать труднее, чем с явным синтаксическим указанием и, еще раз повторю, менее наглядно и менее удобно для написания.

Feuerbart
useravatar
Offline
39 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Расширение синтаксиса TXT2GAM

Вариант с "=" и "@" для меня жутко ненагляден smile

Byte
useravatar
Offline
586 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Информация

Статистика форума:
 
Всего тем:
981
Всего опросов:
14
Всего сообщений:
16790696
Сообщений на этой неделе:
4
Пользователи форума:
 
Всего пользователей:
2419
Последним зарегистрировался:
silviel