ModEnc is currently in Maintenance Mode: Changes could occur at any given moment, without advance warning.
AbstractClass
The AbstractClass is the interface of the game's object controlling classes.
That means an AbstractClass instance itself would be virtually useless, it rather provides a basic framework for all the derivative classes to work on.
Class specifications
Property | Value |
---|---|
General: | |
Derivation | IUnknown → IPersist → IPersistStream → AbtractClass (ignored in later derivations) |
GUID | none |
VT address (YR 1.001) | 0x7E1F50 |
Size of member data (YR 1.001) | 0x24 bytes |
AbstractClass derivative: | |
AbstractDerivationID | none |
Member variables
Offset | Type | Name | Description |
---|---|---|---|
AbstractClass: | |||
0x0 | ptr | VirtualTable | Pointer to the class's Virtual Table |
0x4 | ptr | IRTTITypeInfo VTable | Pointer to an extended VTable (not sure what exactly it does) |
0x8 | ptr | INoticeSink VTable | Pointer to an extended VTable (not sure what exactly it does) |
0xC | ptr | INoticeSource VTable | Pointer to an extended VTable (not sure what exactly it does) |
0x10 | DWORD | unknown | |
0x14 | DWORD | DerivationFlags | Bit 0: set if the instance is or derives from a TechnoClass Bit 1: set if the instance is or derives from a ObjectClass Bit 2: set if the instance is or derives from a FootClass |
0x18 | DWORD | unknown | |
0x1C | DWORD | unknown | |
0x20 | bool | Dirty | Was the object changed since it was last saved? |
0x21 | BYTE | unused | |
0x22 | WORD | unused |
AbstractClass - Member Variables |
Virtual Table
Offset | Return Type | Name | Arguments | Description |
---|---|---|---|---|
IUnknown: | ||||
0x0 | HRESULT | QueryInterface | REFIID iid void ** ppvObject |
MSDN: "Returns a pointer to a specified interface on an object to which a client currently holds an interface pointer." |
0x4 | ULONG | AddRef | none | MSDN: "[...] increments the reference count for an interface on an object. It should be called for every new copy of a pointer to an interface on a given object." |
0x8 | ULONG | Release | none | MSDN: "Decrements the reference count for the calling interface on a object. If the reference count on the object falls to 0, the object is freed from memory." |
IPersist: | ||||
0xC | HRESULT | GetClassID | CLSID * pClassID | MSDN: "Retrieves the class identifier (CLSID) of an object. The CLSID is a unique value that identifies the code that can manipulate the persistent data." |
IPersistStream: | ||||
0x10 | HRESULT | IsDirty | none | MSDN: "Checks the object for changes since it was last saved." |
0x14 | HRESULT | Load | IStream* stream AbstractClass* dst |
MSDN: "Initializes an object from the stream where it was previously saved." |
0x18 | HRESULT | Save | IStream* stream AbstractClass* src (3rd is unknown) |
MSDN: "Saves an object to the specified stream." |
0x1C | HRESULT | GetMaxSize | ULARGE_INTEGER * pcbSize | MSDN: "Returns the size in bytes of the stream needed to save the object." |
AbstractClass: | ||||
0x20 | none (DTOR) | Destructor | none | Frees memory and removes this instance from global arrays. |
0x24 | unknown | unknown | unknown | |
0x28 | unknown | unknown | unknown | |
0x2C | int | GetAbstractDerivationID | none | Gets the AbstractDerivationID of this class. Used to find out "what something is". |
0x30 | int | GetSize | none | Gets the size of the member data. |
0x34 | unsigned long | GetCRC | unknown | Calculates a CRC sum of this instance. |
0x38 | int | GetOwningHouseIndex | none | Gets the index of the House (player) who owns this object. |
0x3C | HouseClass* | GetOwningHouse | none | Gets a pointer to the House (player) who owns this object. |
0x40 | int | GetArrayIndex | none | Gets the index of this class instance in the global array. This will return 0 for abstract classes. |
0x44 | bool | IsDead | none | Finds out whether this instance is dead. This is only used for "living" objects with a health. |
0x48 | void | Get3DCoords | int* dst_xyz | Loads 3D coordinates into dst_xyz. |
0x4C | void | Get3DCoords_var | int* dst_xyz | Loads 3D coordinates into variables, then into dst_xyz. This method is obsolete (use 0x48). |
0x50 | unknown | unknown | unknown | |
0x54 | unknown | unknown | unknown | |
0x58 | unknown | unknown | unknown | |
0x5C | void | AdvanceFrame | none | This is an updating routine, called every frame. |
AbstractClass - Virtual Table |