ModEnc is currently in Maintenance Mode: Changes could occur at any given moment, without advance warning.
AbstractClass: Difference between revisions
Jump to navigation
Jump to search
m added a few links... trust me it's better that I edit these base pages often rather than every page afterwards |
categorizing, enhancing |
||
Line 1: | Line 1: | ||
The AbstractClass is the interface of the game's object controlling classes.<br> | The AbstractClass is the interface of the game's object controlling classes.<br> | ||
That means | 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== | ==Class specifications== | ||
{| align="center" width="100%" cellpadding="2" class="table_descrow" | {| align="center" width="100%" cellpadding="2" class="table_descrow" | ||
!width=" | !width="21%"|Property | ||
!width=" | !width="79%"|Value | ||
|- | |- | ||
|colspan="2"|'''General:''' | |colspan="2"|'''General:''' | ||
Line 11: | Line 11: | ||
|Derivation||'''[http://msdn2.microsoft.com/en-us/library/ms680509.aspx IUnknown] {{Arr|r}} [http://msdn2.microsoft.com/en-us/library/ms688695.aspx IPersist] {{Arr|r}} [http://msdn2.microsoft.com/en-us/library/ms690091.aspx IPersistStream] {{Arr|r}} AbtractClass''' (ignored in later derivations) | |Derivation||'''[http://msdn2.microsoft.com/en-us/library/ms680509.aspx IUnknown] {{Arr|r}} [http://msdn2.microsoft.com/en-us/library/ms688695.aspx IPersist] {{Arr|r}} [http://msdn2.microsoft.com/en-us/library/ms690091.aspx IPersistStream] {{Arr|r}} AbtractClass''' (ignored in later derivations) | ||
|- | |- | ||
|GUID|| | |GUID||none | ||
|- | |- | ||
|[[Virtual Table|VT]] address (YR 1.001)|| | |[[Virtual Table|VT]] address (YR 1.001)||0x7E1F50 | ||
|- | |- | ||
|Size of member data (YR 1.001)|| | |Size of member data (YR 1.001)||0x24 bytes | ||
|- | |- | ||
|colspan="2"|'''AbstractClass derivative:''' | |colspan="2"|'''AbstractClass derivative:''' | ||
|- | |- | ||
|[[ | |[[AbstractDerivationID]]||none | ||
|} | |} | ||
Line 33: | Line 33: | ||
{| width="100%" cellpadding="2" | {| width="100%" cellpadding="2" | ||
|- | |- | ||
| align="right" | [[AbstractClass - | | align="right" | [[AbstractClass - Member Variables]] | ||
|} | |} | ||
Line 47: | Line 47: | ||
{| width="100%" cellpadding="2" | {| width="100%" cellpadding="2" | ||
|- | |- | ||
| align="right" | [[AbstractClass - | | align="right" | [[AbstractClass - Virtual Table]] | ||
|} | |} | ||
[[Category:YR Executable Knowledge Database]] |
Latest revision as of 19:27, 15 June 2007
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 |