===============================================================================================
|   ЯРИЛ 2.0 Заметки к выпускам                                                               |
===============================================================================================
|   Обозначения:                                                                              |
|   +	добавление                                                                            |
|   ^   улучшение                                                                             |
|   *	исправление                                                                           |
|   ~	изменение                                                                             |
|   !	информация                                                                            |
===============================================================================================
|   Issue tracker: http://ifml2.myjetbrains.com/youtrack/issues                               |
===============================================================================================

-----------------------------------------------------------------------------------------------
Выпуск 2016/5
-----------------------------------------------------------------------------------------------
26.02.2016
    ^   [Движок] Поддержка коротких логических вычислений. Например, выражение "нет И ..."
        сразу вернёт логическое "нет" без вычисления правой части, т.к. не зависимо от того,
        что в правой части, выражение всё равно будет равно "нет" (см. логическое И). Это можно
        использовать для проверки наличия роли у объекта в левой части и проверки свойства этой
        роли в правой - тогда не будет ошибки, что свойство не найдено, и не нужно вкладывать
        внутреннюю проверку условия. Например: "предмет.надеваемое и предмет.надето".
    ^   [Движок] Улучшен отладочный вывод списков объектов - теперь выводится ид и название.
11.06.2016
    +   [Движок] Новое системное свойство предметов: СодержащаяКоллекция. Удобна для случая,
        когда нужно знать, где лежит предмет (например, чтобы переместить туда другой).
    *   [Движок] При инциализации (старте) игры все "висящие" предметы (не развещённые в
        инвентаре, локациях и других предметах) помещаются в системную коллекцию Пустота.
    +   [Пример] В игру-пример "Гардероб" добавлена возможность сжечь шляпу.

-----------------------------------------------------------------------------------------------
Выпуск 2016/4
-----------------------------------------------------------------------------------------------
21.02.2016
    +   [Движок] Поддержка операции вычитания ("-") в выражениях.

-----------------------------------------------------------------------------------------------
Выпуск 2016/3
-----------------------------------------------------------------------------------------------
16.02.2016
    +   [Движок] Добавлены системные переменные "секунды" и "минуты", возвращающие кол-во время
        с начала игры. При перезапуске игры время обнуляется.
    +   [Движок] Добавлена поддержка операций сравнения (">" и "<") в выражениях.
    +   [Движок] Добавлена поддержка операции неравенства ("<>") в выражениях.

-----------------------------------------------------------------------------------------------
Выпуск 2016/2.1
-----------------------------------------------------------------------------------------------
07.02.2016
    ifml2-8 При запуске Плеера из Редактора не видно картинок
    *   [Платформа] Исправлен баг, когда при запуске Плеера из Редактора не отображались
        картинки. Но для этого нужно хотя бы один раз сохранить истории (если она новая).

-----------------------------------------------------------------------------------------------
Выпуск 2016/2
-----------------------------------------------------------------------------------------------
06.02.2016
    ~   [Движок] Внутренний переход на фичи плеера.
    +   [Движок] Вывод изображений - инструкция "Вывести изображение" (showPicture).

-----------------------------------------------------------------------------------------------
Выпуск 2016/1
-----------------------------------------------------------------------------------------------
13.12.2013
    +   [Плеер] Режим отладки. Переключается командой "!отладка".
16.12.2013
    +   [Плеер] В режиме отладки добавлены сообщения разбора Парсера.
06.04.2015
    *   [Библиотеки] Исправлена опечатка "Не съедобено".
12.04.2015
    ~   [Игры] Примеры игр переименованы: к примерам добавлен постфикс [пример]. Во избежание
        дублирования файлов перед установкой рекомендуется удалить предыдущую версия ЯРИЛ.
    +   [Игры] Добавлена официальная версия игры "Лабиринт фавна".
    +   [Игры] Добавлена официальная демо-версия игры "Комсомолец [демо-1.1б]".
    ^   [Установщик] Убрано ограничение на запуск в Java 6. В комплект включена JRE 8.
22.04.2015
    *   [Игры] Исправлена официальная версия игры "Руслан и Людмила".
02.06.2015
    ^   [Парсер] Дополнительные отладочные логи парсера, небольшие исправления.
10.12.2015
    ^   [Поставка] Доп. файлы jar убраны внутрь ifml2.jar; при запуске из Пуска появляются
        сплэш-скрины.
    ^   [Проект] Библиотеки заменены на maven'овские.
20.01.2016
    *   [Тестер] Исправлен единственный тест.
01.02.2016
    ~   [Платформа] Платформа переведена на Java 8.
    ~   [Установщик] Переход на новый установщик (BitRock), пока без поставки Java.

-------------------------------------------------
Выпуск 2015/1.6
-------------------------------------------------
24.12.2015
    ^   [Код] Enum'ы перенесены внутрь классов. Enum'ы типа SupertypeTypeEnum переименованы в
        Type. Им установлен namespace в @XmlType.
    +   [Движок] Добавлена возможность отключать системные команды для истории (помощь и
        отладка).

-------------------------------------------------
Выпуск 2015/1.5.1
-------------------------------------------------
07.12.2015
    ^   [Парсер] Ответ "Не понимаю, что значит "XX YY", но я понял начало фразы "XX" заменён
        на "В данной команде "YY" мне не понятно." по совету ASBer'а.

-------------------------------------------------
Выпуск 2015/1.5
-------------------------------------------------
26.11.2015
    ^   [Код] Улучшены юнит-тесты.
    ^   [Движок] [Вычисление выражений] При вычислении выражений: если какое-то свойство,
        полученное через точку (".") не задано, то возвращается Пустота, а не ошибка, как
        раньше.
27.11.2015
    *   [Движок] [Вычисление выражений] Исправлена ошибка, из-за которой не работали выражения
        с логическими операторами (не, и, или).
    ^   [Код] Юнит-тесты переведены на Mockito, добавлены новые тесты.
30.11.2015
    *   [Редактор] Исправлена ошибка, из-за которой при редактировании перехватов процедур
        история не помечалась как изменённая, и при закрытии Редактора не предлагалось её
        сохранить.
    ^   [Код] Улучшены модели комбобоксов.
01.12.2015
    *   [Плеер] Исправлена ошибка, из-за которой после диалогов в Плеере терялся фокус со
        строки ввода.
    ^   [Код] Запуск приложений сделан более правильно - через SwingUtilities.InvokeLater().
    +   [Движок] Добавлены отладочные системные текстовые переменные "локации" и "предметы",
        а также текстовая переменная "системные", выводящая список системных переменных.
04.12.2015
    420434 Вывод корректного сообщения
    ^   [Парсер] Теперь, если в шаблоне забита фраза вида XX YY, а игрок вводит вида XX ZZ,
        то парсер сообщает: "Не понимаю, что значит "XX YY", но я понял начало фразы "XX"."

-------------------------------------------------
Выпуск 2015/1.4
-------------------------------------------------
01.11.2015
    456077 [КРИЛ2015] Процедура обработки ошибок парсера
    +   [Движок] Добавлена системная процедура обработки ошибки парсинга и возможность её
        перекрывать пользовательской.
12.11.2015
    456077 [КРИЛ2015] Процедура обработки ошибок парсера
    *   [Движок] Исправлена ошибка, при которой не выводилась ошибка парсинга, если процедура
        обработки не перекрывалась.
13.11.2015
    456077 [КРИЛ2015] Процедура обработки ошибок парсера
    +   [Редактор] Добавлен пункт меню "История -> Перехваты системных процедур...". Но пока не
        полностью доработана форма редактора.
17.11.2015
    456077 [КРИЛ2015] Процедура обработки ошибок парсера
    +   [Редактор] Форма редактора полностью доработана.
    +   [Редактор] Редактирование инструкции "Вернуть значение".

-------------------------------------------------
Выпуск 2015/1.3
-------------------------------------------------
12.06.2015
    435156 Не работают два объекта подряд в одном падеже
    *   [Парсер] Изменён алгоритм подбора слов для объекта в шаблоне - теперь они пытаются
        подобраться рекурсивно, пока это получается.
16.07.2015
    435156 Не работают два объекта подряд в одном падеже
    *   [Парсер] Теперь если при подборе слова для объекта попадается такое же слово, то
        считается, что оно (и все слова от первого повторяющегося слова до второго) относится к
        другому элементу шаблона. Т.е. при анализе фразы "положить в тарелку розовую тарелку"
        при встрече второй "тарелки" парсер решит, что слова "розовую тарелку" относятся к
        другому объекту (элементу шаблона).

-------------------------------------------------
Выпуск 2015/1.2
-------------------------------------------------
19.04.2015
    *   [Движок] Bug #420341 Криво прописывается библиотека: обёрнуто получение относительного
        пути для библиотеки - перед сравнением они преорбазуются в нижний регистр
23.04.2015
    425212 Неверно работает сохранение
    ^   Рефакторинг: уменьшена зависимость Parser от других классов.
    *   Добавлена очистка данных при инициализации игры в Движке и Виртуальной машине - стал
        правильно работать перезапуск игры.
    *   Исправлена ошибка загрузки сохранения, из-за которой предметы вместо перемещения
        копировались. В лог выводится ошибка, если контейнер, привязанный к предмету, его не
        содержит.

-------------------------------------------------
Выпуск 2015/1.1
-------------------------------------------------
11.04.2015
    *   [Библиотеки] Bug #417504 "А также тут" в Комсомольце
    *   [Поставка] Bug #418941 Вместе с игрой лежит тест на тайны заброшенного замка, но самой
        игры вроде как нет: убран тест

-------------------------------------------------
Выпуск 2015/1
-------------------------------------------------
19.01.2015
    279604 [Замечание #8-1] Инструкция "Выполнить процедуру"
    +   [Движок] Добавлена инструкция "Выполнить процедуру" - пока на уровне ядра, поддержки в
        Редакторе ещё нет. Поддерживает передачу параметров и возврат значения.
04.02.2015
    279604 [Замечание #8-1] Инструкция "Выполнить процедуру"
    *   [Движок] Исправлен механизм выполнения инструкций, исправлены ошибки.
    +   [Редактор] Поддержка инструкции "Выполнить процедуру".
    +   [Движок] Новая отладочный символ "глобальные" - выводит список глобальных переменных.
        Вызвать в Плеере через команду "?глобальные".
    ~   [Движок] Глобальные и процедурные переменные теперь устанавливаются напрямую при
        выполнении инструкции, а не сохраняются в контексте.
13.03.2015
    Task #402306 Значение пустота (NullValue)
    +   [Движок] Новый особый тип данных - Пустота. Существует только одно значение этого типа
        - Пустота.
    +   [Движок] Новая системная константа - "пустота", равна Пустоте.
    +   [Движок] Любое значение можно сравнивать с Пустой: если значение тоже Пустота, то будет
        положительный результат, иначе отрицательный.
    ~   [Движок] При вызове процедуры все незаданные параметры принимают значение Пустота.
17.03.2015
    Bug #382635 [Джон-03] Ошибка с контейнерами
    *   [Библиотеки] Исправлено действие "Положить": теперь нельзя класть предметы в закрытый
        контейнер.
    *   [Игры] Исправлен словарь в Зорке.
19.03.2015
    Ifml-8 Ошибка с переходом в локацию, если не указана начальная локация
    ~   [Движок] Изменена логика установки стартовой локации:
        1. Если есть проца, выполняется она.
        2. Если указана стартовая локация, она устанавливается.
            2.1. Если стоит галочка вывода описания, оно выводится.
        3. Если до сих пор не установлена никакая локация, устанавливается любая, но без вывода
        описания.
    *   [Редактор] Теперь можно отменить выбор стартовой локации (теперь есть пустой элемент в
        выпадающем списке).
    ^   [Редактор] Редактор глобальных переменных переехал на новый редактор списков.

-------------------------------------------------
Версия 2014.12
-------------------------------------------------
29.12.2014
    *   [Редактор] Добавлена валидация процедур: имя не должно быть пустым и не должно совпадать с существущей в истории процедурой.
30.12.2014
    *   [Редактор] Исправлена ошибка, внесённая предыдущим исправлением. :) Теперь процедуру можно отредактировать и сохранить под своим
        именем.

-------------------------------------------------
Прототип 10 выпуск 5 правка 4 (2014)
-------------------------------------------------
10.03.2014
    +   Роль "надеваемое": теперь предметы можно надевать на себя и снимать
        Ограничения:
            нельзя надеть: ненадеваемое; то, что уже надето; то, что не в инвентаре.
            надетый предмет: нельзя взять (пока кроме "взять всё")
        Надетость отражается при осмотре предмета (как, например, открытость).
        При выбрасывании надетый предмет снимается автоматически.
16.03.2014
    +   Переработана утилита по заливке данных в библиотеки.
02.04.2014
    ifml2-287221 диалоговые фильтры библиотек
    +   Редактор списка используемых библиотек переделан на транзакционный (изменения можно принять или отменить); оформление кнопок
        вынесено в форму для наглядности, а действия создаются по кнопкам
    *   В диалог выбора файла библиотеки исправлен фильтр и добавлены иконки
    ~   Запрет добавления повторяющихся библиотек
09.04.2014
    *   Исправлена ошибка, из-за которой не подгружались роли.
    *   Исправлена ошибка, из-за которой при попытке редактировать инструкцию "Установить значение свойства" вываливалась здоровенная
        ошибка.
10.04.2014
    +   [Внутреннее] Добавлен класс ButtonAction для автоматизации создания действий на кнопках и повышения наглядности кнопок в интерфейсе.
        На кнопки локаций повешены иконки для наглядности, их действия превращены в ButtonAction.
    +   [Редактор] Главное окно переделано: добавлены закладки "Локации и предметы" и "Процедуры и действия". Вторая пока пустая.
    +   [Редактор] Ошибки сохранени истории переведены на большое окно.
01.09.2014
    ~   [Внутреннее] Загрузка локаций теперь осуществляется по новому методу.
    +   [Редактор] Поддержка редактирования всех направлений: к обычным С, В, Ю, З добавились ещё СВ, ЮВ, ЮЗ, СЗ, Вверх, Вниз.
10.09.2014
    ~   [Редактор] Редактирование процедур и действий перенесено из главного меню во вкладку в главном окне.
    +   [Редактор] Редактирование процедур теперь транзакционное - т.е. отменяется при нажатии кнопки "Отмена".
    +   [Редактор] При редактированиие процедур можно редактировать их параметры.
12.09.2014
    ^   [Редактор] При удалении процедуры осуществляются проверки, используется ли она где-то. Если используется в действиях, то удалять
        не разрешается. Если как стартовая процедура - то запрашивается подтверждение на удаление.
15.09.2014
    *   [Редактор] Исправлена ошибка, из-за которой при двойном щелчке на список окно редактора открывалось 2 (и более) раз.
    *   [Редактор] Исправлена ошибка, из-за которой при редактировании процедур и действий история не помечалась как не сохранённая.
    ^   [Редактор] Локации, процедуры и инструкции в процедурах теперь можно менять местами (передвигать по списку.)
16.09.2014
    ^   [Редактор] Редактор списка предметов приведён к общему виду (передвижение по списку, пометка истории как несохранённой,
        двойной щелчок, контекстное меню).
22.09.2014
    +   [Платформа] В стандартную поставку платформы добавлена игра "Руслан и Людмила" Андрея Репина, занявшая 35ое место в КРИЛ-2013.
09.11.2014
    *   [Редактор] Теперь после добавления действия оно появляется в выборе действий в перехвате сразу, если подходит под условия
        (для локаций - все действия, для предметов - при наличие хотя бы одного объектного параметра).
11.11.2014
    ifml2-358009 [Замечание 12] Нет действий дополнительных направлений
    *   [Платформа] Теперь доступны команды переходов по доп. направлениям (св, юв, юз, сз), а также соответствующие систмные свойства
        локаций (СевероВосток и проч.).
18.11.2014
    ifml2-210765 Поддержка навешивания ролей в Редакторе
    +   [Редактор] Закончена реализация поддержки навешивания ролей в Редакторе.
    *   [Редактор] Исправлено сохранение наполнения ролей при редактировании их в предметах.
    *   [Библиотеки] Исправлена процедура "Описать", падающая в ошибку при осмотре предмета с ролью "контейнер", но без роли "открываемый".
    *   [Редактор] Скрыта кнопка "Редактировать" для списков коллекций ролей.
    *   [Редактор] Теперь в коллекцию роли нельзя добавлять предметы, которые там уже есть, а также предмет, на котором висит роль.
24.11.2014
    *   [Движок] Исправлена работа инструкции "Переместить предмет", которая перемещала предмет в никуда.
    241891 [Замечание #3] Парсер: берётся первый подошедший синоним без учёта, что он не верный
    *   [Парсер] Теперь берётся только любой из самых подошедших (по длине) синонимов.
    *   [Парсер] Теперь слово объекта (предмета) берётся, если только оно полность подошло, а не частично.