Skip to content

Latest commit

 

History

History
138 lines (112 loc) · 19.6 KB

todo.md

File metadata and controls

138 lines (112 loc) · 19.6 KB

TODO

Отмеченное датой изменение внесено в исходники. Изменения, вошедшие в релизную версию, добавлены в раздел "Внесённые изменения".

Внесённые изменения:

QSP-Package for Sublime Text

до версии 0.7

  • [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.

v.0.8

  • [2023.06.11] Исправлены scopes сниппетов новой игры и новой локации
  • [2023.06.16] Исправлены области синтаксических определений для многих последовательнсотей символов. Добавлена подсветка экранированных кавычек в строках.
  • [2023.06.17] Переписана подсветка под стандартные Scopes. Код QSP теперь должен адекватно подсвечиваться во всех цветовых схемах.
  • [2023.06.24] Встроено контекстное меню с различными вспомогательными командами для обработки qsp и qsps-файлов (конвертеры и сплиттер).

v.0.9

  • [2023.07.06] Исправлена ошибка обработки пустой локации.
  • [2023.08.03] Исправлены ошибки в логике работы препроцессора (неверно обрабатывались некоторые условия).

v.0.10

  • [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-теги.

v.0.11

  • Добавлены все операторы, функции и системные переменные в списки автоподстановок.
  • При создании новой локации редактор подскажет вам, что эта локация уже существует в проекте (пока что полноценно работает только на новых проектах)

v.0.12

  • [2024.02.12] Доработаны алгоритмы ведения workspace. В корневой папке создаётся qsp-project-workspase.json и в него пишутся все собранные о проекте данные: пути к файлам, расположение локаций, etc.
  • При вводе повторяющегося в проекте имени локации, или повторяющейся в текущем файле метки, всплывает системное окошко с сообщением, что такая локация или метка уже существуют. Это не ошибка, это предупреждение на тот случай, если вы вдруг не планировали в проекте двух локаций с одинаковыми названиями.
  • При вводе названия локации в кавычках после gosub, func(, goto, xgoto, а так же при написании конструкции неявного вызова, будет предложен список автоподстановки. Если хоть одна буква в названии локации совпадает частично с уже созданными в проекте названиями локаций, будет предложен список автоподстановки из названий локаций. Аналогично с метками для jump, но список предлагаемых меток подбирается с текущего файла. Поведение полностью исправлено и работает.
  • В подсветку синтаксиса добавлена подстветка неизвестных действий. Т.е. если вы ошиблись и написали showact 1, Sublime Text подсветит это как ошибку.
  • [2024.02.12] Для функционала, описанного выше, исправлен файл подсветки синтаксиса, где учтены необходимые scopes. Так же в плагин добавлена асинхронность.
  • Разнёсены некоторые части плагина в разные модули и перенесены в библиотечку qSpy.
  • Исправлена работа с большинством путей, что теоретически должно обеспечить более корректную работу на linux.
  • Произведён серьёзный рефакторинг кода, но требуется ещё более серьёзный. Пока что там сущий бардак и нет единства.

предстоящие изменения:

QSP-Builder:

  • Сборщик сторонних файлов по аналогии с webpack. См. раздел #bundles
  • ???

Подсветка синтаксиса:

  • Подсветка не закрытых квадратных, круглых и фигурных скобок
  • ???

Вспомогательные скрипты:

  • Скрипт, который готовит .qproj на основе структуры папок, в которых размещены локации (только верхний уровень!)
  • ???

Общие, не в релизе

Подробнее о задумках

Принял решение о приостановке разработки инсталятора, поскольку билдер полностью перенесён в пакет QSP и реализован в виде плагина. Теперь просто копируем весь пакет и всё работает из коробки.

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

Это всё будет добавляться в надежде, что Sublime Text станет более предпочтительным редактором, чем Quest Generator, им станет пользоваться большее число людей, и плагин начнёт разиваться быстрее. Уже после этого можно будет начать работать над установщиком.

bundles

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

Например, в 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 нужно прогонять через препроцессоры, получая один выходной файл. Некоторые файлы достаточно склеить, например скрипты. Итоговый файл нужно адекватно подключить в "точке входа", и если файлов получается много, то они тоже должны легко подключаться.

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