Пятница, 19.04.2024, 19:55
Приветствую Вас Гость

Каталог статей

Главная » Статьи » S3DecoderLib

S3DecoderLib: Реализация декодирования Common Catalog Resource

Реализация декодирования Common Catalog Resource

 

[ Стабильный билд • "Обертывание" вторичного потока • Sims 3:Catalog Resource (eng) ]

 

Програмный модуль и версия

DBPF2CRES.pas, rev.130204

 

Краткий обзор

 

Объекты продажи / строительства в The Sims 3 содержат общую структуру данных задающую ряд параметров объекта:

- название объекта, ссылку на идентификатор локализации (хэш названия);

- описание объекта, ссылку на идентификатор локализации (хэш описания);

- цену;

- набор флагов описывающий объект;

 

Реализация на Pascal

 

Базовым классом обеспечивающим "обертывание" записей базирующихся на на Common Catalog Resource является TDBPF2CRES описанный в DBPF2CRES.pas. Класс является абстрактным т.к. абстрактный метод родительского класса не перекрыт и должен быть реализован в дочерних классах.

 

class TDBPF2CRES - абстрактный класс реализующий чтение Common Catalog Resource

type
  TDBPF2CRES = class(TDBPF2ItemDecoder)
  // http://www.modthesims.info/wiki.php?title=Sims_3:Catalog_Resource#Common
    private
    protected
      FVer: DWORD; // версия ресурса
      FTGIOffset: DWORD;
      FTGISize: DWORD;

      FShCommon: integer; // смещение common секции от начала потока

      FNameHash: UInt64;
      FDescrHash: UInt64;
      FNameInt: string;
      FDescrInt: string;
      FPrice: single;
      FNicenessMultiplier: single; // always 1.0
      FCrapScore: single; // binary zeros
      FBuildBuyProductStatusFlags: BYTE;
      FIID: UInt64;

      FEnvironmentScore: single;
      FFireType: DWORD; //0=DoesNotBurn,1=Chars,2=AshPile
      FIsStealable: boolean;
      FIsReposessable: boolean;
      FUISortIndex: DWORD;
      FIsPlaceableOnRoof: boolean;
      FIsVisibleInWorldbuilder: boolean;
      FProductName: DWORD;

      procedure SkipMaterialList(IsWallFloorStyle: boolean); // пропускает material list
      procedure DecodeCommon; // читает общую секцию из потока FStream с текущей позиции потока
    public
      property Ver: DWORD read FVer;
      property TGIOffset: DWORD read FTGIOffset;

      property NameHash: UInt64 read FNameHash;
      property DescrHash: UInt64 read FDescrHash;
      property NameInt: string read FNameInt;
      property DescrInt: string read FDescrInt;
      property Price: single read FPrice;

      property Version: cardinal read FVer;
  end; // TDBPF2CRES class

Свойства

Ver: DWORD – версия ресурса, чтение/запись;

TGIOffset: DWORD – ;

 

NameHash: UInt64 – хэш имени объекта;

DescrHash: UInt64 – хэш описания объекта;

NameInt: string – внутреннее имя объекта;

DescrInt: string – внутренне описание объекта;

Price: single – цена объекта;

 

Методы

procedure SkipMaterialList(IsWallFloorStyle: boolean) – пропускает material list, защищенный метод;

procedure DecodeCommon – читает общую секцию из потока FStream с текущей позиции потока, защищенный метод;

Категория: S3DecoderLib | Добавил: crazylab (28.09.2013)
Просмотров: 710