Skip to content

gretmn102/QSP-VSCode

Repository files navigation

Quest Soft Player (QSP) language provider

Зочем?

— А-а, зачем мне эта ерунда, если уже есть QGen?! Обчитаются своих книжечек, а потом в гаражах кодють! Такую страну про...

Согласен, если вы — гений программирования, никогда не ошибаетесь в синтаксисе и не забываете, что делают операторы/функции, всегда даете правильные названия переменным и локациями и мгновенно можете отыскать в коде всё, что душе угодно, то что вы здесь забыли? Итак:

Щито оно умеет

  • На лету проверять синтаксис и невменяемо орать на вас в случае ошибок

    — Вопль тысячи токенов

  • Подсказывать, что делает та или иная функция

    hover

  • Переименовывать переменные и локации (F2)

  • Искать определения переменных/локации и их использование (F12)

  • Форматировать убогий код

  • Показывать локации

  • Дико тормозить на больших файлах... к сожалению.

Щито оно не умеет, но могло бы

  • IntelliSense, aka умные подсказки во время набора.
  • Работать с проектом. К сожалению, сейчас оно работает с каждым исходником отдельно, и те друг о друге ничего не знают, хотя счастье так близко. Такая вот драма.

Допустим, я хочу попробовать

Под Windows нужен .Net Framework >= 4.6.1 (скачать можно тут, если лень гуглить).

Под другие платформы нужен .Net Core:

  • Под Linux в целом написано тут, для Ubuntu в частности — тут На время написания инструкции достаточно было выполнить:
    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    
    sudo apt-get update; \
      sudo apt-get install -y apt-transport-https && \
      sudo apt-get update && \
      sudo apt-get install -y dotnet-sdk-3.1

Далее всё гораздо прозаичнее:

  1. Установите VS Code
  2. Создайте новый файл с Hello World'ом:
    # начало
    'На первый день Byte создал QSP...'
    -
    
  3. Непременно сохраните его с расширением .qsps — отныне это формат для всех исходников QSP'а, просто потому что
  4. И VS Code любезно должен предложить поискать расширение. Смело давите "Search"
  5. Вот то единственное, что найдется (если, конечно, у меня не появились соперники, грр), и устанавливайте
  6. На всякий случай перезапустите VS Code (F1 -> Developer: Reload Window)
  7. Всё

Проделал все в точь-точь, как написано, все равно ничего не работает

А черт его знает. Лучше свяжитесь со мной по контактным данным, что написаны внизу.

Ну накодил я, что теперь-то?

Скомпилировать в .qsp и запустить. Сделать это очень просто:

  1. Убедитесь, что исходник сейчас открыт
  2. Жмите F1
  3. Введите QSP: Build and run

По-идеи, должно скомпилироваться в то же место, что и ваш исходник и запуститься.

Важно: исходник должен быть в кодировке Cyrillic (Windows 1251), иначе, например, классический плеер станет отображать кракозябры, вместо нормального текста. О том, как сменить кодировку, сами найдете, дети интернетов.

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

У меня уже есть игра, но скомпилирована в .qsp, как ее декомпилировать?

Запускаете (ох и ах) QGen. Жмете Игра -> Экспорт -> Текстовый файл формата TXT2GAM... и, собственно, сохраняете, куда душа пожелает. Не забудьте сменить расширение файла на .qsps.

Кстати, существует отдельная программа qsp2txt, но там же сообщением ниже пишут:

Эта утилита экспортит не все локации. Если в игре много локаций, она бесполезна.

Так что использовать на свой страх и риск.

По-хорошему, нужно бы выдрать из исходников QGen'а этот функционал, но вы уже знаете ответ 😉

Важно

Поскольку добровольцем на испытания вызвался лишь один человек, то черт его знает, заработает ли оно вообще у вас. У меня-то, как у автора, всегда всё работает, ха-ха! Но делаем для других с любовью, так что, пожалуйста, все ошибки, недомогания и вопросы шлите на форум или сюда или свяжитесь со мной по нику Pseudopod#4902 в Discord'е.

Благодарности

  • Garrett Fletcher, спасибо, что помог разобраться в этом языке. Без тебя я бы вряд ли справился. Да и приятно было пообщаться с родной душой и обменяться идеями (чего только один QSP на Lisp'е стоит!)
  • Бари, спасибо, что отвлекал своими философствованиями, но без этого я бы перегорел
  • Ionide-Fsharp, которыми вдохновился и у них же беспардонно стащил реализацию JSON-RPC, да и вообще всё стащил, чего уж греха таить. Но клятвенно поклялся, что сделаю по-своему!

Как это скомпилировать?

— Я не доверяю тебе, потому сейчас пересмотрю твой код...

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

— ...скомпилирую его, а потом запущу, так уж и быть, дурак...

— Ладно, нужен dotnet 3.1.200, а дальше запустить *невнятное бормотание*...

Будущее проекта

Его нет: всё — тлен... пока что.