Ноябрь 2005
01.11.2005
- Написан класс TNameCase — он содержит в себе какое-либо имя или название в шести падежах.
02.11.2005
- Написан класс TEnum — содержащий информацию о любом перечислимом типе, и переводящий в строку/из строки значения данного типа и множеств на его основе.
- Написан класс TTextParser — разбор текста по строкам с учетом переносов строк.
- Написан класс TMultilineText — сохраняемый (storageable) контейнер многострочного текста.
- В классе TStringBuilder добавлен метод DeleteLastLineFeed.
- В классе TStringParser добавлен альтернативный конструктор (принимающий указатель на входную строку, а не саму строку), и два метода NewInput (задают новую входную строку без пересоздания самого объекта).
- Добавлена еще одна ветвь иерархии сохраняемых классов — TStorageableText. Это блок, содержащий внутри просто набор строк, без имен свойств перед ними. Классы TStorageReader и TStorageWriter адаптированы для поддержки этой ветви.
- Классы TNameCase и TMultilineText теперь наследуются от TStorageableText.
03.11.2005
- Написан класс TLocationDescription — список описаний, каждое из которых содержится в экземпляре TMultilineText.
- Добавлено свойство локации Description.
- Доработан TStorageReader для поддержки пустых строк и строк, начинающихся с табуляции, внутри текстового блока.
- Добавлено свойство локации Flags.
- Сделаны абстрактные варианты всех списков и итераторов списков, для возможности использования их в основных абстрактных классов.
- Списки перенесены в ветку иерархии от TStorageableText.
- Запрещено дублирование элементов в списках.
- Добавлен свойство локации Links — список связей.
06.11.2005
- Написан класс TReferenceNotification — базовый класс для всего, что имеет перекрестные ссылки и должно посылать и получать уведомления об уничтожении.
- Поле TPositionable.Owner адаптировано к уведомлениям.
- Все списки (основанные на шаблоне _LIST_) адаптированы к уведомлениям.
- Класс TLink адаптирован к уведомлениям.
- Написан класс TStorageableCollectionItem — базовый класс для сохраняемых элементов коллекций. Реализует механизм удаления элемента из коллекции при его уничтожении.
10.11.2005
- Удален класс TPositionable, а его свойства разнесены на двух единственных его потомков — AZone и ALocation.
- Виртуальный метод Preread перенесен из класса TStorageableCollection в TStorageable. Теперь он считается свойством всех сохраняемых объектов, а не только коллекций.
- Переделан принцип хранения зон. Теперь каждая зона содержит внутри себя локальные коллекции локаций, связей, и других вложенных зон. Так же каждая зона сохраняется отдельным файлом и имеет понятие полного идентификатора (FullId, см.словарь).
- Локации и связи так же имеют полные идентификаторы.
- Удалены глобальные коллекции зон, локаций, и связей.
- Добавлена одна глобальная корневая зона — Nereal. Это и идентификатор, и имя переменной, к которой можно обращаться.
- В класс AZone добавлены методы SearchZone, SearchLocation, и SearchLink. С их помощью можно найти соответствующий объект по его полному идентификатору.
11.11.2005
- Методы поиска в классе AZone переделаны на использование TStringParser.
- Добавлены свойства связи: Flags, Password, Height.
- Добавлен класс ALinkData — содержит данные об отдельном направлении связи.
- Добавлены свойства связи DataInput и DataOutput — ссылки на ALinkData.
- Написан класс TTabulateTable — базовый класс для данных, загружаемых из таблиц, в которых поля разделеены табуляциями.
- Написан первый потомок табулированной таблицы — TTableSideName — данные о сторонах света. Загружает файл sidenames.ndt.
- Реализован автоматический выбор стороны и названия для связи.
- В класс ALink добавлен метод LinkData, который по локации ищет нужное направление связи и возвращает его.
16.11.2005
- Написан класс TClassList и реализован механизм регистрации классов.
- В класс TStorageable добавлена виртуальная функция IsClassNameStorageable. Если она возвращает True, то при сохранении объекта так же сохраняется имя его класса.
- В класс TStorageReader добавлена функция ElementClass, возвращающая ссылку на класс выбранного элемента.
20.11.2005
- В классы ALocation и ALink добавлен метод UpdateFlag.
- В класс ALink добавлено свойство Length.
24.11.2005
- Все базовые классы, не связанные с какими-либо объектами мира, перенесены в отдельный каталог для общего использования.
- В классе TWorldCoord добавлены свойство AsPoint и методы Scroll и ScrollZ.
- В классы коллекций добавлены методы GetAsItemArray, First, Last. Используются для итерации коллекций, аналогично спискам.
- Редактор зон почти весь адаптирован под классы Нереала-3.
27.11.2005
- Добавлен тип TLinkDirection.
- В класс ALink добавлен метод LinkData, позволяющий запросить данные об одной стороне связи по номеру стороны.
- Немного переделан итератор списков и коллекций: ссылка на текущий элемент запоминается при перемещении указателя, а затем лишь выдается по запросу. В итоге, если запросов Current много, то работать будет немного быстрее.
- В классе TWorldCoord проделаны некоторые исправления и изменения. Ввиду того, что это не настоящий класс, а объект (expanded class), его методы должны возвращать результат в новом объекте, а не изменять текущий.
- В классы коллекций добавлен метод Rename — для изменения ключа.
- В классах элементов коллекций сделана возможность изменения свойства Id, при этом вызывается Rename у коллекции, владеющей данным элементом.
28.11.2005
- В класс TStorageable добавлен метод Assign.
- Реализован метод Assign для всех базовых классов.
- В класс TLocationDescription добавлены методы Clear и MaskList.
29.11.2005
- Изменения в классе TTextParser:
- Добавлен конструктор, принимающий прямой указатель на данные и их размер.
- Метод SkipLine сделан функцией, возвращающей длину пропущенной строки.
- Класс TMultilineText немного упрощен и переработан.