Отмеченное датой изменение внесено в исходники. Изменения, вошедшие в релизную версию, добавлены в раздел "Внесённые изменения".
- [2022.05.27] Добавлена возможность проводить собственную постпроцессорную обработку с помощью python-скриптов, подключаемых через
project.json
. При этом можно повесить неограниченное количество скриптов, при этом набор скриптов можно использовать как общий для всех собранных файлов форматаtxt2gam
, так и для каждого отдельного такого собранного файла. В этот раз решено отказаться от лишнего вложения словарей с "path" в список, а все пути просто перечисляются элементами в списке. - [2022.05.27] Добавлен упрощённый запуск простых файлов. Если вы написали qsps файл, который лежит не в папке проекта, вы можете запустить его без создания
project.json
, а точнееproject.json
будет создан автоматически. При этом в папкеC:\Program Files\QSP\converter\
обязательно должен лежать свежийtxt2gam.exe
, а в папкеC:\Program Files\QSP\qsp570\
классический плеер, и в частности файлqspsgui.exe
. Заменить классический плеер на иной можно, отредактировав вmain.py
билдера путь в переменнойplayer_exe
(12-ая строчка программы), заменив его на свой. - [2022.05.28] Добавлен параметр
"scans"
, который позволяет автоматически встроить в игру локацию, содержащую список требуемых для игры файлов. Список файлов так же составляется автоматически на основе списка "исследуемых" папок и файлов. В локацию уже встроен механизм проверки, достаточно передать на неё путь, который требуется проверить, в качестве аргумента, и она вернёт 1 (если путь в списке есть) или 0 (если пути в списке нет). Все пути, добавляемые на локацию, будут относительным, и выстраиваются относительно файла.qsp
, прописанного в параметре"start"
. Пути, которые невозможно прописать относительно этого файла, игнорируются и не добавляются в список. - [2021.06.29] Добавлены команды препроцессора и различные режимы его работы. См. соответствующий раздел в "
README.md
". - [2022.07.01] Багфикс. Ругался на отсутствие
.qproj
. - [2022.07.24] Исправлена ошибка в препроцессоре, которая не позволяла использовать имена меток, состоящие из уже существующих имён меток.
- [2023.02.22] Написаны конвертеры в одну и в другую сторону. Все подключаемые модули вынесены в пакет
qSpy
. - [2023.06.06] Билдер перенесён в пакет QSP для Sublime Text и реализован, как плагин. Это облегчает установку билдера, поскольку всё теперь ставится единым пакетом. Далее разработка билдера будет проводиться врамках единого пакета QSP для Sublime Text. В связи с этим я решил переименовать проект в "QSP-Package for Sublime Text" (Пакет QSP для ST). Название репозитория останется прежним.
- [2021.06.06] Добавлена правильная подсветка
end loop
,end act
,end if
- теперь такие сочетания подсвечиваются, как отдельное ключевое слово. - [2021.06.06] Добавлены сниппеты с привязкой к клавишам. Выделяем текст и нажимаем клавиши:
b
- Оборачивает выделенный текст в теги<b>
и</b>
i
- Оборачивает выделенный текст в теги<i>
и</i>
p
- Оборачивает выделенный текст в теги<p>
и</p>
f
- Оборачивает выделенный текст в теги<font color=#000000 size=0>
и</font>
d
- Оборачивает выделенный текст в теги<div>
и</div>
h
- Оборачивает выделенный текст в теги<h1>
-<h6>
и</h1>
-</h6>
alt+h
- Оборачивает выделенный текст в теги<qhtml>
и</qhtml>
- [2021.06.07] Добавлены поведения:
- если пишешь
act
,loop
,if
и т.п., затем после двоеточия нажимаешьEnter
, в следующей строке автоматически добавляется отступ. Если после этого вводишьend
, отступ передend
сокращается. - Сочетание
Ctrl+Shift+R
запускает GOTO по проекту, при этом открывается список локаций по всему проекту, а так же меток на текущей локации. - Сочетание
Ctrl+R
запускает GOTO по текущему файлу, при этом открывается список локаций и меток по текущему файлу.
- если пишешь
- [2021.07.03] Добавлено поведение: При нажатии
Ctrl+/
все выделенные строки помечаются, как однострочные комментарии. При нажатииCtrl+Shift+/
весь выделенный текст помещается в блок комментария! { ... }
. - [2021.07.03] Добавлен сниппет в привязке к горячим клавишам. При нажатии
alt+/
вставляется строка комментария& !@
без текста. - [2021.07.03] Багфикс подсветки. Неверно вытеснялись scope внутри локации, все подменялись на meta.diff.
- [2022.02.16] Изменён тег выделения html-кода внутри строк QSP-кода на
<qhtml></qhtml>
. В таких плеерах, как Quest Navigator и qSpider недопустимо в дереве DOM наличие ещё одних тегов<html></html>
. - [2022.07.18] Багфикс. Неверно подсвечивались ключевые слова в составе других слов.
- [2022.07.24] Багфикс. Неверно подсвечивались операторы
+=
,-=
и т.п. Не подсвечивалась, как конец локации строка с отступом и-
, теперь подсвечивается, как ошибка. - [2022.07.24] Изменены горячие клавиши для вызова сниппетов HTML-форматирования. Скорее всего я их совсем исключу:
ctrl+alt+b
- Оборачивает выделенный текст в теги<b>
и</b>
ctrl+alt+i
- Оборачивает выделенный текст в теги<i>
и</i>
ctrl+alt+p
- Оборачивает выделенный текст в теги<p>
и</p>
ctrl+alt+f
- Оборачивает выделенный текст в теги<font color=#000000 size=0>
и</font>
ctrl+alt+d
- Оборачивает выделенный текст в теги<div>
и</div>
ctrl+alt+h
- Оборачивает выделенный текст в теги<h1>
-<h6>
и</h1>
-</h6>
alt+h
- Оборачивает выделенный текст в теги<qhtml>
и</qhtml>
- [2022.08.30] Добавлен сниппет цикла. Вызывается набором ключевого слова
loop
.
- [2023.06.11] Исправлены scopes сниппетов новой игры и новой локации
- [2023.06.16] Исправлены области синтаксических определений для многих последовательнсотей символов. Добавлена подсветка экранированных кавычек в строках.
- [2023.06.17] Переписана подсветка под стандартные Scopes. Код QSP теперь должен адекватно подсвечиваться во всех цветовых схемах.
- [2023.06.24] Встроено контекстное меню с различными вспомогательными командами для обработки qsp и qsps-файлов (конвертеры и сплиттер).
- [2023.07.06] Исправлена ошибка обработки пустой локации.
- [2023.08.03] Исправлены ошибки в логике работы препроцессора (неверно обрабатывались некоторые условия).
- [2023.11.18] Различные мелкие правки алгоритмов и синтаксиса.
- [2023.11.19] Добавлен инструмент для быстрой генерации проекта.
- [2024.01.12] Создан установочник для пакета. Теперь пакет можно ставить в несколько кликов.
- [2024.01.13] Добавлен инструмент для быстрого создания файла игры.
- [2024.01.13] Некритические ошибки теперь тоже выводятся в консоль.
- [2024.01.14] Добавлены автодополнения операторов.
- [2024.01.14] Добавлены подсказки по ключевым словам в статусбаре.
- [2024.01.14] Исправлены scopes и списки Символов для удобного поиска названий локаций и меток.
- [2024.01.14] Добавлен файл рабочего пространства для проекта QSP.
- [2024.01.14] Добавлена автоподстановка названий локаций при вводе конструкции неявного вызова функций.
- [2024.01.15] Удалены сниппеты для оборачивания текста в HTML-теги.
- Добавлены все операторы, функции и системные переменные в списки автоподстановок.
- При создании новой локации редактор подскажет вам, что эта локация уже существует в проекте (пока что полноценно работает только на новых проектах)
- [2024.02.12] Доработаны алгоритмы ведения workspace. В корневой папке создаётся
qsp-project-workspase.json
и в него пишутся все собранные о проекте данные: пути к файлам, расположение локаций, etc. - При вводе повторяющегося в проекте имени локации, или повторяющейся в текущем файле метки, всплывает системное окошко с сообщением, что такая локация или метка уже существуют. Это не ошибка, это предупреждение на тот случай, если вы вдруг не планировали в проекте двух локаций с одинаковыми названиями.
- При вводе названия локации в кавычках после
gosub
,func(
,goto
,xgoto
, а так же при написании конструкции неявного вызова, будет предложен список автоподстановки. Если хоть одна буква в названии локации совпадает частично с уже созданными в проекте названиями локаций, будет предложен список автоподстановки из названий локаций. Аналогично с метками дляjump
, но список предлагаемых меток подбирается с текущего файла. Поведение полностью исправлено и работает. - В подсветку синтаксиса добавлена подстветка неизвестных действий. Т.е. если вы ошиблись и написали
showact 1
, Sublime Text подсветит это как ошибку. - [2024.02.12] Для функционала, описанного выше, исправлен файл подсветки синтаксиса, где учтены необходимые scopes. Так же в плагин добавлена асинхронность.
- Разнёсены некоторые части плагина в разные модули и перенесены в библиотечку
qSpy
. - Исправлена работа с большинством путей, что теоретически должно обеспечить более корректную работу на
linux
. - Произведён серьёзный рефакторинг кода, но требуется ещё более серьёзный. Пока что там сущий бардак и нет единства.
- Сборщик сторонних файлов по аналогии с webpack. См. раздел #bundles
- ???
- Подсветка не закрытых квадратных, круглых и фигурных скобок
- ???
- Скрипт, который готовит
.qproj
на основе структуры папок, в которых размещены локации (только верхний уровень!) - ???
Принял решение о приостановке разработки инсталятора, поскольку билдер полностью перенесён в пакет QSP и реализован в виде плагина. Теперь просто копируем весь пакет и всё работает из коробки.
Буду дорабатывать плагин, чтобы он мог делать из коробки и другие всякие штуки. Например, составлять списки локаций и меток, генерировать переходы между метками, локациями и прочим при наведении на них, подсвечивать локальные переменные и прочее-прочее прочее.
Это всё будет добавляться в надежде, что Sublime Text станет более предпочтительным редактором, чем Quest Generator, им станет пользоваться большее число людей, и плагин начнёт разиваться быстрее. Уже после этого можно будет начать работать над установщиком.
Вебпак собирает различные подключаемые файлы к выходной версии проекта и даже прописывает к ним правильные пути. Хотелось бы, конечно, что-то такое же мощное, но для подобного нужно писать иснтрумент уровня вебпака, что одному человеку может оказаться не по времени и не по силам. Поэтому неплохо бы для начала сделать сборщик "точки входа", или любого иного организующего файла с сопустствующими подключаемыми файлами.
Например, в Quest Navigator такой точкой входа является gameAwesomium.html
. Именно к нему подключаются таблицы стилей и скрипты. Плюс есть отдельный файл конфигурирования игры config.xml
. Поэтому разумно было бы вести в исходниках игры не только сами ".qsps
" файлы, но и файлы стилей (возможно даже в scss-варианте), и файлы скриптов, чтобы потом собирать готовый проект, объединяя всё это. Плюс нужна возможность подключать внешние препроцессоры, чтобы иметь возможность не силами скрипта верстать готовые для релиза файлы, а скрипту отдавать уже готовые на отправку в релиз версии.
Поэтому, есть идея опции bundles:
{
"bundles": [
{
"folders": [
{
"path": "./css"
}
],
"files": [
"./hide-css/hide.css"
],
"output": "release/styles/main.css",
"multiply": true,
}
]
}
Возможно нужна не только опция bundles. Некоторые файлы/папки нужно переносить в проект, как есть (например, изображения). Некоторые файлы типа css нужно прогонять через препроцессоры, получая один выходной файл. Некоторые файлы достаточно склеить, например скрипты. Итоговый файл нужно адекватно подключить в "точке входа", и если файлов получается много, то они тоже должны легко подключаться.
Короче, тут надо крепко подумать об удобстве записи, поскольку подобная настройка сильно усложнит проект, а люди и так не горят желанием разбираться в чём-то сложнее утюга.