RScript

**RScript** - главная утилита для работы со скриптами игры. Весь основной код модов пишется с её помощью. В данном редакторе работали гейм-дизайнеры Elemental Games при создании всей серии игр Космические рейнджеры.

**Авторы**: Алексей "dab" Дубовой (v1.5), Константин "Кос" Савенков (v1.6), Алексей "evilcoward" Бондарчук & noname (v1.7 - v2.10).

## Общая информация

* В Космических Рейнджерах скрипты имеют визуальное представление, подобие нод-системы
* С помощью стрелочек строится порядок скрипта и кода
* При компиляции, RScript заменяет все текстовые вставки в коде, обрамлённые двойными кавычками, на ссылки (ведущие в файл Lang.dat). Сам текст при компиляции выводится в отдельный txt-файл, откуда его необходимо добавить в Lang.dat.
* При обнаружении ошибки, сообщается номер символа в текущем объекте
* Lite Build скрывает ход компиляции, что сокращает время обработки больших скриптов в два раза; ценой, однако, является меньшая информативность в случае ошибки

## Основные возможности

* **svr** - открытие / редактирование / конвертация в rson / компиляция в scr
* **rson** - открытие / редактирование / конвертация в svr / компиляция в scr

## Главные недостатки

* Нету поддержки удобного перевода скриптов
* Нету опции переноса строк

## История версий

### Версия 2.10

* Добавлена частичная поддержка HiDPI экранов (масштабирование с учётом настроек ОС, большие значки)
* Добавлена частичная поддержка темной темы
* Добавлен тип запуска в подсказки Op
* Убран полностью формат json, остался только переименованный вариант rson и оригинальный формат svr
* Небольшие правки интерфейса

### Версия 2.9.3

* Добавлена работа через командную строку, позволяющая компилировать / пересохранять / конвертировать. Подробнее - в файле cli.txt

### Версия 2.9

* Исправлена ошибка открытия скриптов в формате json/rson, если разделитель дробных чисел в ОС отличается от записанного в скрипте. Все дробные числа и разделители теперь читаются и пишутся через точку независимо от настроек ОС
* Формат rson теперь является выбором по умолчанию для сохранения новых скриптов и конвертации из svr

### Версия 2.8

**Настройки**

* Исправлены отступы для чисел и блоков кода в json
* Добавлен формат rson - это 1 в 1 json, но с другим именем
* Исправлены ошибки счётчика конвертации и ошибки при многократном открытии скриптов перед конвертацией
* Добавлена обратная конвертация в svr

### Версия 2.7

**Настройки**

* Изменена логика работы галочки Run game, теперь она дополнительно появляется на форме компиляции и запоминает состояние для рабочей сессии
* Добавлена галочка показа спец-символов при выделении в редакторе кода
* Добавлена галочка светлой темы для окна компиляции
* Добавлена галочка показа координат для диалогов
* Добавлена галочка светлой темы для окна диалогов
* В нижем левом углу теперь можно кликнуть по строке с координатами и изменить текущее положение камеры

**Ошибки**

* Исправлена ошибка автодополнения после символов '{', '(', '['
* В окно диалогов добавлен скроллбар

### Версия 2.6

**Настройки**

* Добавлена массовая конвертация svr в json.
* Файлы конвертируются рекурсивно вглубь указанного каталога и сохранятся рядом, возле svr файлов.
* Без указания пути, RScript сконвертирует файлы, находящиеся в его каталоге

**Ошибки**

* Настройка разворачивания окна кода на полный экран теперь работает корректно
* Галочка Lite Build без учёта настроек теперь запоминается для сессии

### Версия 2.5

**Настройки**

* Новая кнопка на панели инструментов, которая вызывает форму с настройками
* Данные настройки хранятся в реестре
* Добавлена настройка светлой темы редактора
* Добавлена настройка скрытия всплывающих окон на объектах OP
* Добавлена настройка Override Path, она перезаписывает пути компиляции svr и txt на путь, указанный в поле настроек. В самом файле скрипта значения путей не затрагиваются, это небольшая помощь при работе с горой скриптов, у которых кем-то уже проставлены пути для компиляции
* Добавлена настройка запуска игры при окончании удачной компиляции скрипта. Путь к игре необходимо задать

**Форма компиляции**

* Добавлена кнопка сохранения scr файлов, которая составит путь до нужной папки, имея уже проставленное название скрипта
* При использовании кнопки сохранения scr файлов, поле с txt-файлом автоматически заполняется по пути рядом с scr; но можно и отредактировать

**Ошибки**

* Исправление ошибки в формате json
* Исправление ошибки запоминания последней папки, при открытии скриптов по двойному клику на файле
* При чтении json, счётчики объектов, количества строк в Op-If-While, количество строк в базе BlockPar не учитываются, они остались в файле для простой наглядности

### Версия 2.4

**Оптимизация компиляции скриптов**

* В обычном режиме компиляции время на большинстве скриптов сократилось в два раза
* Появился новый режим компиляции - Lite, при котором время сократится ещё в два раза, но вывод информации по ходу компиляции будет максимально кратким; при этом выходные файлы скрипта получаются такими же как и в полном режиме
* По умолчанию, галочка Lite Build не стоит и будет сниматься каждый раз при заходе на форму компиляции; для опытных мододелов можно включить её принудительно через rscriptCFG.txt, который лежит в папке с программой, там есть новый параметр "LiteBuildForce", его нужно переключить в True

**Изменения формата JSON**

* Формат json был изменён, старые версии rscript не совместимы с ним

**Изменения редактора кода**

* В rscriptCFG.txt вынесен параметр редактора "UndoGroup", который позволяет переключать режимы работы с действием Ctrl + Z (Undo)
* В rscriptCFG.txt вынесен параметр редактора "OpenCodeFullScreen", который позволяет открывать окна с кодом на полный экран, каждый раз когда вы кликаете по объектам кода

**Исправления**

* Все формы RScript теперь ведут себя адекватно на системах с 2+ мониторами и появляются относительно центра главной формы

### Версия 2.3

**Добавлена новая кнопка на панель инструментов**

* Предоставляет быстрый доступ ко всем визуальным объектам скрипта кроме (If-While-Op) в виде списков, разбитых на типы
* При двойном клике на объекте откроется его стандартная форма редактирования
* Диалоги имеют начальное превью и реальный номер диалога на доске

### Версия 2.2

**Добавлена поддержка формата JSON**

* Для работы нескольких человек над одним модом теперь есть данный текстовый формат в кодировке UTF8, это в разы облегчит мердж любых правок по скрипту, а так же даст возможность нормально видеть историю в любой VCS
* RScript так же как и раньше сможет работать с бинарным форматом svr (создавать-сохранять-компилировать)
* По умолчанию, новые скрипты создаются в формате json, но в окне сохранения всегда есть выбор, в какой конкретный формат сохранить скрипт.
* Для конвертации скрипта из svr в json, нужно открыть необходимый скрипт и с зажатой клавишей Ctrl нажать на иконку "Сохранить" - появится диалоговое окно сохранения, в котором уже будет проставлено имя файла и выбран тип json.
* Только при работе с форматом json происходит обработка текста, автоматически принудительно заменяются спец-символы табуляции (на 4 пробела каждый) - чтобы любой скрипт был однородным и его вид не зависел от того, в каком редакторе создавался код и какие настройки этого редактора были. Потому что символ табуляции не константа.
* При нажатии на кнопку "открыть", у вас по умолчанию будут показываться все файлы, которые поддерживает RScript (.svr и .json)

**Нововведения в объектах**

* У объекта Place добавлен новый тип - ScriptPlace
* Изменены вкладки у объекта State, появилась секция для ActCode
* У объекта Var при типе Array появились стартовые значения (можно в квадратных скобках указать перечисление элементов - вместо размера массива)
* В объект While добавлен редактор кода

**Изменения редактора кода**

* Добавлена горячая клавиша для отделения отступом выделенного блока. Теперь Tab умеет выделенные участки двигать
* Исправлена ошибка со скроллбаром в случаях, если вставить из буфера текст, имеющий большую длину, чем окно редактора
* Исправлена ошибка горячей клавиши Ctrl + Z, которая отменяла сразу массу действий за раз, а не пошагово

**Общие изменения RScript**

* Изменения текста в объектах Dialog.Msg, Dialog.Answer, Ether больше не меняет номера этих диалогов при компиляции скрипта. (Редактирование текста хранящегося в Op-If-While всё равно изменит свои номера)
* Добавлена горячая клавиша для сохранения скрипта - Ctrl + S на главной доске; если файл уже существует, то диалоговое окно не вызывается, а вместо этого происходит тихая перезапись
* Добавлена горячая клавиша для вызова компиляции скрипта - Ctrl + B на главной доске
* Компиляция scr в обновленном формате
* Сортировка по значениям номеров диалогов при компиляции и экспорте в txt
* Всплывающие окна большого кода теперь обрезаются и не загораживают весь экран при наведении мышкой; также в разы быстрее работают

### Версия 2.1

* Исправлены лаги при Ctrl линках
* Убрана зависимость стиля текстового блока от стрелочек
* Добавлена возможность открывать скрипты по двойному клику файла
* Добавлен редактор кода в IF объекты
* Исправлен баг со скроллбаром

### Версия 2.0

* Добавлен редактор кода в объекты OP, с подсветкой и автодополнениями кода

### Версия 1.7

* Компиляция scr в обновленном формате
* Выкинуты все устаревшие неиспользуемые параметры
* Добавлена дифференциация цветом для Normal, Init, Global и DialogBegin элементов
* Добавлено немного более информативное сообщение об ошибке компиляции

### Версия 1.6

* Компиляция scr в обновленном формате: собирает scr, подходящие для КРHD
* Добавлены галочки под новый тип доминаторских кораблей

### Версия 1.5

* Оригинальная версия от Алексея dab Дубового, собирает scr для КР1 / КР2Д / КР2ДП