Версия 3.1.1

13.12.2007

  • Добавлен класс EchoTemplate.
  • В NerealAbstract добавлен вариант метода Echo(EchoTemplate).
  • В NerealAbstract добавлен вирт.метод DirectEcho, его прежняя реализация в AbstractCharacter сделана перекрытием.
  • В NerealAbstract добавлены вирт.методы EchoArgs и EchoArgsRecurse, все старые методы Echo оставлены для совместимости и переделаны на использование новых.
  • Добавлены классы: EmptyEchoTemplate, SimpleEchoTemplate.
  • В Utility удалены все перегруженные методы EchoHandler и вспомогательные для них.
  • Добавлена группа классов EchoTemplatePart - части шаблона.
  • В EchoTemplate добавлен метод Compile - компиляция строки-шаблона в список частей, для исключения постоянного одинакового распознавания строк.
  • Удален флаг EchoFlag.Recurse.
  • Добавлен абстрактный класс AbstractEchoTemplate, все остальные EchoTemplate сделаны наследниками от него.
  • В Names добавлены статик-экземпляры: He, She, It, They. Так же добавлен статик-метод ThirdPerson, выдающий по роду одно из этих местоимений.
  • Добавлен класс SelfTargetEchoTemplate - выбирается один из двух шаблонов, в зависимости от равенства двух указанных аргументов.
  • Добавлена команда шаблона вставки цвета в зависимости от аргумента - $, и его подкоманда вставки цвета голоса - v.
  • Команда "представить" первой переделана под использование EchoTemplate.
  • В Link добавлен перекрытый метод GetVisibilityRanges.
  • Метод NormalizeColors перенесен из класса EchoTemplate в SimpleEchoTemplate - для обработки цветов и в безаргументных шаблонах.
  • В LocationType добавлено вирт.свойство Luminosity - освещенность по умолчанию для закрытых локаций.
  • В LocationTypes.Room добавлено свойство DefaultLuminosity, возвращаемое как значение Luminosity.
  • Скриптовый модуль немного поправлен под использование EchoTemplate.
  • Исправлена опечатка в команде "представить".

14.12.2007

  • Файл EchoTemplate.cs разделен на несколько отдельных файлов.
  • Класс EchoTemplate переименован в ParamEchoTemplate.
  • Класс SelfTargetEchoTemplate переименован в BinarySelectEchoTemplate.
  • Добавлен делегат EchoTemplatePredicate и статик-класс EchoTemplateHelpers.
  • Добавлены делегат EchoTemplateAction и класс ActionEchoTemplate.
  • У метода AbstractEchoTemplate.EchoTo и всех его реализациях в наследниках возвращаемый тип изменен на bool.

17.12.2007

  • Добавлен класс EchoTemplateArgs - хранение переменных для одной конкретной рассылки шаблона. По умолчанию хранит массив простых аргументов.
  • В AbstractEchoTemplate добавлен вирт.метод CreateArgs, а тип параметра args метода EchoTo изменен на EchoTemplateArgs.
  • В NerealAbstract метод EchoArgs дополнен для создания экземпляра EchoTemplateArgs и дальнейшей передачи именно его, а не массива аргументов.
  • Удалены флаги EchoFlag.NotFirst и EchoFlag.NotSecond.
  • Добавлена генерик-версия класса AbstractEchoTemplate - для исключения приведений типов аргументов.
  • В команде "представить" делегат действия представления вынесен из анонимного в отдельный статик-метод.
  • Добавлены классы: PredicateEchoTemplate, SoundEchoTemplate.
  • Множество адаптаций к удаленному флагу EchoFlag.NotFirst.
  • Класс BinarySelectEchoTemplate переименован в BinaryEchoTemplate.
  • Временно отключена работа социалов.

18.12.2007

  • Переработана взаимосвязь между Launcher и Nereal, путем введения класса-посредника NerealMediator. Он включает в себя компиляцию и работу с Nereal, давая Launcher'у независимость.
  • Исправлены некоторые ошибки.
  • Добавлен класс NullEchoTemplate.
  • В ParamEchoTemplate добавлен фабричный статик-метод, создающий новый шаблон или выдающий NullEchoTemplate при пустой строке шаблона. Во всех классах составных шаблонов введено его использование.
  • Обший класс социала адаптирован к новым шаблонам. Начата адаптация конкретных социалов.

19.12.2007

  • В социалах добавлен 3-й параметр: имя цели, видимое отправителем. Нужно для вставки в фразы, звучащие от лица отправителя.
  • Завершена адаптация социалов.
  • Исправлена ошибка в ParamEchoTemplate.
  • В Names добавлено множество местоимений: "я" разного пола, "мы", "мой" всех родов, "наше" всех родов.
  • В синтаксис шаблонов добавлен специальный вариант номера аргумента "-", в этом случае аргументом является получатель.
  • В Utility добавлен метод YesNoName.
  • В CharacterOptions добавлено свойство ThirdPersonView - вид от третьего лица. По умолчанию False. В команду "опции" добавлена настройка этого свойства.
  • В NerealAbstract добавлено вирт.свойство SelfName. В Character оно перекрыто.
  • В Character удалено свойство NameReal, поскольку оно всегда будет равно Name.
  • В LookAs добавлен запрос SelfName вместо Names.You.
  • В синтаксис шаблонов добавлен модификатор команды "=". Если он стоит перед символом команды, то она будет обработана без подстановки "я"/"вы".
  • В синтаксисе шаблонов команда выбора по полу разделена на две: выбор по полу/числу (4 варианта) и выбор по лицу/числу (5 вариантов).

21.12.2007

  • Класс EchoBuilder сделан наследником SimpleEchoTemplate, и переделан на построение не строки шаблона, а сразу списка команд шаблона. Так же файл, содержащий этот класс, перенесен как EchoTemplate/Builder.cs.
  • Клиенты класса EchoBuilder адаптированы к его новой версии.

22.12.2007

  • В VisionRange добавлены: метод Multiply, оператор * на число, статик-метод CreateByPoint.
  • В NerealAbstract: метод GetVisibilityRanges переименован в GetVisibility, добавлены методы GetSensibility и GetVisibility с параметром VisionType.
  • Доработан SoundEchoTemplate.
  • В методе Utility.SpeechCorrect убран параметр color.
  • Разговорные команды адаптированы к новым шаблонам.
  • Добавлен статический класс EchoTemplateCompiler, куда вынесены из ParamEchoTemplate методы разбора шаблонов.
  • В EchoBuilder добавлен метод Compile, который компилирует переданную ему строку и добавляет к шаблону. Этим исправлено построение шаблонов перемещения.

23.12.2007

  • В синтаксисе шаблонов добавлена команда 'p' - вставка местоимения по полу аргумента.
  • Поправлены некоторые тексты шаблонов.
  • Уменьшена скорость забывания и сделано вспоминание на максимум при новом запоминании.
  • Константа EmptyArgs перенесена в статический класс EchoTpl.
  • В InputError вместо старых четырех свойств аргументов добавлены свойства Template и Args, добавлен метод EchoTo, добавлен статический метод Create.
  • Добавлен класс ErrorEchoTemplate - потомок ParamEchoTemplate, приспособленный под хранение шаблонов ошибок. Имеет метод Error, выдающий новый экземпляр исключения InputError.
  • Класс InputError перенесен к классу ErrorEchoTemplate.
  • Добавлен статический класс Errors, где собраны шаблоны ошибок.
  • Из класса InputError удалены статические методы выдачи определенных исключений. Все команды адаптированы к этому изменению.
  • В ContainerTemplates и NamesEditorQuestions добавлены свойства получения шаблонов ошибок.
  • Множество прямых вызовов ошибок в командах и иных местах заменено на вызов заготовленных шаблонов ошибок.

24.12.2007

  • В ItemSlotDescription добавлены кэширующие свойства получения шаблонов ошибок.
  • Все оставшиеся прямые вызовы ошибок в командах и иных местах заменены на вызов заготовленных шаблонов ошибок.
  • Добавлен перечислимый тип CharacterPersonView - с вариантами First, Second, и Third.
  • В CharacterOptions свойство ThirdPersonView заменено на PersonView.
  • Класс EchoTemplateGenderSelectPart переименован обратно в EchoTemplateSelectPart, и в него добавлена возможность выбора не только по полу, но и по любому числу, Enum'у, или bool'у.
  • Добавлен вид от третьего лица (прежний назван видом от второго лица).

25.12.2007

  • Исправлена обработка команды шаблонов Y.
  • В AbstractCharacter свойство currentContext изменено на уровень protected, и добавлен свойство Context.
  • В Request добавлен фабричный метод CreateContextError, куда перенесено создание заявки по ошибке из AbstractCharacter.InputHandler.
  • Добавлен статический класс Templates, где собраны основные шаблоны, не связанные с конкретными контекстами и командами.
  • Шаблоны, найденные в Character.cs перенесены в класс Templates.
  • Шаблоны, найденные в Command.cs, перенесены в класс Templates.
  • Шаблоны, найденные в Containers.cs, адаптированы к употреблению совершенных глаголов.
  • Шаблоны, найденные в Request.cs, адаптированы к новой системе и возможности разных видов.
  • Шаблоны, найденные в Roles.cs, адаптированы к новой системе.
  • В AbstractCharacter добавлен вирт.метод Exit, в Character его реализация выводит сообщение о выходе.
  • Шаблоны, найденные в Server.cs, перенесены в класс Templates.
  • Шаблоны, найденные в World.cs, перенесены в класс Templates.
  • Шаблоны, найденные в Static/HelpDict.cs, перенесены в класс Templates.
  • В Request добавлен фабричный метод CreateCommandError, куда перенесено создание заявки по ошибке из CommandContext.

26.12.2007

  • В Role добавлен перекрытый метод ToString, возвращающий свойство DisplayName.
  • В GlobalConfig добавлено вычисляемое свойство TimeString.
  • Все команды, кроме "!роль" и "титул" адаптированы к новой системе.

28.12.2007

  • Команда "титул" адаптирована к новой системе, а так же, полностью переделана на работу через контекст, а не подкоманды.

29.12.2007

  • Команда "!роль" переименована в "роль" и адаптирована к новой системе.
  • Контекст SelectZoneContext адаптирован к новой системе.

31.12.2007

  • В AbstractEchoTemplate добавлен шаблонный метод EchoTo, предназначенный для отправки списков.
  • Файл Contexts/Request.cs адаптирован к новой системе.

03.01.2008

  • Контекст TextEditorContext адаптирован к новой системе.
  • Контекст LoginContext адаптирован к новой системе.
  • При входе добавлен небольшой вступительный текст.
  • Заменены шаблоны входа и выхода.

05.01.2008

  • В GlobalConfig добавлено свойство OfflineInvisible - если оно true, то отключенных персонажей не видно.
  • В Character переработан метод TitleFor для учета не только знакомства, но и уровня идентификации.
  • В контексте управления титулами исправлен вывод списка действий при отсутствии титулов.
  • В качестве эксперимента цвет социалов сделан обычным серым.
  • Контекст RegistrationContext адаптирован к новой системе.
  • В LoginContext убрана строка, оповещающая об успешном вводе пароля.
  • В команде "!упр время" исправлен формат вывода времени.
  • Начата переделка по отказу от множества перегруженных методов Echo, заменяя их одним с произвольным числом параметров и несколько иным их порядком.
  • В ContainerTemplates добавлены кэширующие свойства получения шаблонов.

06.01.2008

  • В NamesEditorQuestions добавлены кэширующие свойства получения шаблонов.

10.01.2008

  • В ItemSlotDescription добавлены кэширующие свойства получения шаблонов.
  • В AbstractContainer и его потомках удалены методы EchoDescription.
  • В Item пара методов EchoDescription заменены на GetDescription и BuildDescription.
  • Окончательно удалено старое множество методов Echo.
  • Множество мелких исправлений работы с шаблонами.
  • В Character добавлен метод Update, обновляющий все кэширующие свойства. Его вызовы вставлены в OnPostDeserialize и EndLogin.

12.01.2008

  • Константы особых цветовых кодов и метод GetColor перенесены из ColorSystem в EchoColor.
  • Методы ColorCode перенесены из Utility в EchoColor как GetCode и Build.
  • Вместо цветового кода Prev добавлены цветовые коды Push и Pop. Соответственно изменено все, что с этим связано.

16.01.2008

  • Добавлен контекст UniversalEditorContext, реализующий универсальный редактор любого сериализуемого объекта. На данный момент от него лишь заготовка.
  • Добавлена команда "!редактор", вызывающая редактор текущей зоны.
  • В PropertyInfo добавлено свойство DisplayName, по умолчанию выдающее обычное Name. В дальнейшем будет добавлен параметр в схеме данных.
  • В PropertyInfo добавлен вирт.метод GetView, выдающий строку, описывающую это свойство в списке редактора. Реализован пока не во всех наследниках.
  • Добавлен атрибут DisplayNameAttribute, может приписываться к классам.
  • В SerializableAbstract добавлено свойство TypeName, выдающее либо значение атрибута DisplayName, если он есть, либо полное имя типа.
  • В генератор кода по схемам добавлена обработка свойства DisplayName для типов и полей.
  • В PropertyInfo добавлено поле, хранящее DisplayName, а в конструкторы данного класса и всех наследников добавлен параметр, задающий это поле.
  • В Utility добавлен метод GetTypeName.
  • Всем оставшимся наследникам PropertyInfo добавлена реализация метода GetView.
  • Всем типам во всех схемах добавлено отображаемое имя.