Ноябрь 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 немного упрощен и переработан.