Revision as of 07:36, 15 June 2007 by Pd (added a few links... trust me it's better that I edit these base pages often rather than every page afterwards)
The AbstractClass is the interface of the game's object controlling classes.
That means a AbstractClass instance itself would be virtually useless, it rather provides a basic framework for all the derivative classes to work on.
|Derivation||IUnknown → IPersist → IPersistStream → AbtractClass (ignored in later derivations)|
|VT address (YR 1.001)||0x7E1F50|
|Size of member data (YR 1.001)||0x24 bytes|
|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)|
|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
|0x20||bool||Dirty||Was the object changed since it was last saved?|
|Go to Member Variables|
void ** ppvObject
"Returns a pointer to a specified interface on an object to which a client currently holds an interface pointer."
"[...] 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."
"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."
|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."
"Checks the object for changes since it was last saved."
"Initializes an object from the stream where it was previously saved."
(3rd is unknown)
"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."
|0x20||none (DTOR)||Destructor||none||Frees memory and removes this instance from global arrays.|
|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).
|0x5C||void||AdvanceFrame||none||This is an updating routine, called every frame.|
|Go to Virtual Table|