Версия 3.0.8
20.10.2007
- Добавлены классы: AbstractContainer, Container, Surface, Underface.
- В NerealAbstract добавлены вирт.свойства Weight и Volume - собственные вес и объем объекта.
- В NerealAbstract добавлены свойства ChildWeight и ChildVolume - суммарные вес и объем всех вложенных объектов.
- В Item и ItemTemplate реализованы свойства Weight и Volume.
- В TemplateBlock метод NewBlock заменен на ConstructItem - шаблонным блокам теперь позволены более широкие действия по созданию предметов. Метод так же переписан во всех блоках-наследниках.
- Метод NewItem в ItemTemplate и конструктор в Item переделаны под использование нового способа конструирования.
- Добавлены классы: AbstractContainerTemplateBlock, ContainerTemplateBlock, SurfaceTemplateBlock, UnderfaceTemplateBlock.
- В классах-потомках AbstractContainer добавлены свойства (Capacity, IsSoft, CanClose), получающие соответствующие значения из шаблонных блоков.
- Добавлен класс ContainerTemplates - набор текстов для операций с контейнером.
- В Item добавлены методы: GetContainer, GetSurface, GetUnderface.
- В AbstractContainer добавлено вычисляемое свойство FreeVolume.
- Команда "положить" доработана для работы с контейнером.
- Команда "осмотреть" доработана для осмотра контейнера, поверхности и подповерхности.
22.10.2007
- Добавлен класс LocationType.
- В Location добавлено свойство LocType - тип локации с прилагающимися к нему данными.
- В Location свойство Name помечено как nillable - при его отсутствии имя берется из типа локации.
- В Location добавлен метод GetSurface.
- Добавлен класс LocationTypes.Town.
- Добавлена структура Sizes.
- В NerealAbstract добавлено вирт.свойство Size.
- В классах Item, ItemTemplate, ItemStructure добавлено перекрытие свойства Size.
- Добавлены классы SizeItemStructure и VolumeItemStructure - оба наследуемые от SimpleItemStructure, и отличаются данными, хранимыми в качестве основы.
- В ComplexItemStructure добавлено поле Size.
- В классы ItemStructure добавлено свойство MinVolume.
- В Material добавлено свойство Density.
23.10.2007
- В NerealAbstract добавлено вычисляемое свойство ChildSquare - сумма площади всех вложенных объектов.
- В AbstractContainer вместо свойств Capacity и FreeVolume добавлен метод IsSpaceEnoughFor - проверка достаточности места для объекта.
- Sizes считается измеряемым в метрах.
- Вместимость Surface и Underface считается как площадь, а не объем.
- В Location добавлено перекрытие свойства Size.
- В Location добавлен перекрытый метод GetEntities - берущий объекты и с поверхности локации.
- В AbstractContainer добавлены вирт.свойства PutPrep и TakePrep - предлоги для соответствующих операций с этим контейнером. Во всех потомках эти свойства перекрыты.
- Команда "положить" доработана для работы со всеми видами контейнеров.
- В ContainerTemplates добавлено свойство NotFound - шаблон текста ошибки об отсутствии искомого.
- Команда "взять" доработана для работы со всеми видами контейнеров.
- Добавлен псевдо-падеж Case.Position.
- В Names добавлено bool-свойство PositionCase - при false Position равен Prepositional (предложному), при true равен Dative (дательному).
- В текстовых шаблонах разрешен падеж 6, соответствующий Case.Position.
- Команда "осмотреть" доработана для осмотра предметов напрямую в контейнерах.
- Некоторые шаблоны исправлены на использование падежа 6.
- В текстовых шаблонах в команде '?' разрешен 5-й вариант выбора, соответствующий имени "вы". Необходим для разделения множественного числа и имени "вы".
- Добавлены классы: Position, StaticPosition, StaticRefPosition.
- Добавлены статические данные Positions.
- В AbstractCharacter добавлено свойство Position.
- В классах AbstractCharacter (и его потомках) и Form добавлен метод GetDefaultPosition.
- Добавлен класс ObserverPosition.
- В AbstractCharacter (и его потомках) удален метод GetPositionTemplate.
- В Position добавлены методы: GetLookTemplate, BuildPrefix, BuildLook.
- Команда "осмотреть" поправлена на использование нового метода получения шаблона положения.
25.10.2007
- Добавлен класс EchoBuilder - построитель Echo-шаблонов с автоматической расстановкой параметров.
- В NerealAbstract добавлен перегруженный метод Echo с параметром типа EchoBuilder.
- Добавлен статик-класс EchoTpl с набором констант - команд текстовых шаблонов. Все эти команды в классе EchoBuilder и в методах Echo заменены на использование констант.
- В EchoBuilder исправлены параметры у метода AppendName и добавлены некоторые новые методы.
- Система построения шаблонов в классе Position переделана на использование EchoBuilder.
27.10.2007
- Добавлен тип PositionType - перечисление базовых типов позиций.
- В Race добавлены вирт.методы GetDefaultPosition и GetPosition.
- В Form метод GetDefaultPosition теперь вызывает аналогичный метод в Race.
- Добавлен класс Races.BodyLimits. В Race добавлено свойство BodyLimits.
- В Character добавлены свойства StatureCoeff и WeightCoeff.
- В Position добавлено вирт.свойство PosType.
- В Character реализованы вычисляемые свойства: Stature, Weight, BodyWeight, Size.
- В BodyLimits добавлены свойство SitSize и метод GetSizes.
- В AbstractContainer и его потомки добавлен метод BuildLook.
- Добавлены классы: StandPosition, SitPosition, RestPosition.
- В AbstractContainer добавлены виртуальные защищенные методы GetSpaceFree и GetSpaceEnoughFor.
- В AbstractContainer метод IsSpaceEnoughFor изменен с виртуального на обычный.
- В AbstractContainer добавлен перегруженный метод IsSpaceEnoughFor с параметрами Character и Position - достаточно ли будет места в указанном положении.
- В Position добавлены вирт.методы GetNewPosition и GetChangeTemplate.
- Добавлены команды: встать, сесть, лечь (отдохнуть).
28.10.2007
- В проект добавлена ссылка на сборку Python.Runtime.
- Добавлен класс ScriptEngine.
- В методах Load/Unload класса NerealServer добавлен вызов Initialize/Shutdown из ScriptEngine.
- Добавлен контекст ScriptConsoleContext.
- Добавлена команда "!скрипт".
- В BaseContext добавлен вирт.метод ProcessPulse, вызывается по окончанию обработки пульса персонажа.
- В ScriptConsoleContext сделано накопление строк скрипта, и их выполнение при ProcessPulse.
29.10.2007
- В BaseState индекс словаря состояний изменен с int на Type.
- В вычислении веса персонажа в BodyLimits коэффициент веса теперь считается от 0 до 1, и потому умножается на значение максимального коэффициента.
- В Character добавлен метод GenerateRandomStatureAndWeight.
- В контексте регистрации добавлен вопрос о росте и весе персонаже.
- При загрузке персонажа, если его коэффициенты роста и веса равны 0, то они устанавливаются случайными.
- В контексте регистрации в последний вопрос о подтверждении регистрации добавлен вывод всей информации о персонаже.
- В Sizes добавлены свойство IsEmpty и оператор * (умножение на число или другие размеры).
- В ContainerTemplateBlock добавлены свойство InnerSize и метод GetInnerSize. По умолчанию внутренний размер контейнера равен 90% от внешнего.
- В Container перекрыто свойство Size - оно берется из ContainerTemplateBlock.InnerSize.
- В Sizes добавлены методы: RotateByLength, RotateByWidth, RotateByHeight, Contains, ContainsAny.
- В NerealAbstract добавлен вирт.метод CanContainInto. По умолчанию использует Sizes.Contains, в Item он перекрыт на использование метода ContainsAny.
- В AbstractContainer добавлен вирт.метод CanContain. По умолчанию всегда true, в Container перекрыт на вызов CanContainInto.
- В ContainerTemplates добавлено свойство TooLarge.
- Добавлена проверка на вместимость по размерам в командах: положить, встать, сесть, лечь.
- Исправлена ошибка в контексте скриптовой консоли.
30.10.2007
- Добавлены классы: Request, RequestGroup, RequestStorage.
- В World добавлено свойство Requests.
- Добавлены контексты: RequestContext, RequestWriteContext.
- Добавлена команда "заявка".
- Контекст RequestContext доработан до рабочего состояния.
- В BaseContext: свойство previous переименовано в Previous, свойство State добавлено в схему данных как nodef/property.
- В InputArgs методы Empty, Eol, и Exists заменены на свойства.
- Реализована подписка на разделы заявок и уведомление по ней при получении новой заявки.
- В AbstractCharacter добавлен еще один вариант метода HasRole - с предикатом.
- В InputError добавлен метод выдачи ошибки NotRole.
- В AbstractCharacter добавлены методы TestRole - с выводом ошибки, если такой роли нет.
- Добавлена роль RequestReader - читатель заявок. Контекст RequestContext адаптирован к новой роли.
- Исправлена работа метода GetEntities в классе World - теперь нормально запрашивает персонажей на весь мир.
- Исправлено имя параметра в автогенерируемых методах Load.
31.10.2007
- Команда "встать" без параметров теперь всегда перемещает персонажа в локацию.
- При завершении регистрации и в команде "идти" персонаж по возможности ставится сразу на поверхность локации, а не в саму локацию.
- Добавлен флаг IteratorSource.Look.
- В NerealAbstract добавлен вирт.метод GetSubEntities.
- Метод Utility.GetExemplarIttems удален.
- В ItemTemplate метод IsTemplateOf переименован в IsTemplateFor.
- Удалено свойство FullId и методы его построения.
- В AbstractContainer и AbstractContainerTemplateBlock добавлено свойство Visible.
- Метод GetSubEntities перекрыт в классах Character, Item, и AbstractContainer.
- В метод Position.GetNewPosition добавлен параметр newPlace.
- Файл Position.cs разделен на несколько отдельных файлов.
- Реорганизация системы положений.
02.11.2007
- Класс Group переименован в AbstractGroup.
- Добавлен тип с флагами EntitySource.
- Пробная реализация новых методов GetEntities.
- В AbstractCharacter добавлен вариант метода GetEntities, подразумевающего что looker = this.
- Добавлен класс LocationSurface.
- Пробная реализация перекрытых новых методов GetEntities и адаптация к ним команды "осмотреть".
- Удален тип IteratorSource и старые методы GetEntities.
- Весь код адаптирован к новым методам GetEntities.
03.11.2007
- В Item и AbstractContainer добавлен метод EchoDescription.
- Поправлены методы GetSubEntities.
- Добавлен вывод ревизии сервера, если таковая есть в соответствующем файле.