I have a lot of structures inside a header file. I'm trying to think of a way to consolidate them. I know there has to be a better way to access these pointers. I used a program called reclass; what it does is create structures based off pointers and other data types the user selects. You take those structures and put them into your source code and use them. But as my program is so huge now. The way the structures are laid out. It is causing me a lot of headache.
Here is what I have (Version Number Example):
class Level1ToVersionNumer
{
public:
char _0x0000[8];
char VersionNumber[12]; //0x0008
char _0x0014[44];
};//Size=0x0040
class Level0ToVersionNumber
{
public:
char _0x0000[20];
Level1ToVersionNumer* Level1PointerToVersionNumber; //0x0014
char _0x0018[40];
};//Size=0x0040
class BaseObjectWorld
{
public:
char _0x0000[32];
Level0ToVersionNumber* Level0PointerToVersionNumber; //0x0020
char _0x0024[1844];
ObjectTable* ObjectTablePtr; //0x0758
char _0x0748[760];
LocalPlayerLevel0* LocalPlayerLevel0Ptr; //0x0A54
char _0x0A44[1348];
NearLootTable* NearLootTablePtr; //0x0F88
volatile __int32 SizeOfNearLootTable; //0x0F8C
char _0x0F90[160];
FarLootTable* FarLootTablePtr; //0x1030
__int32 SizeOfFarLootTable; //0x1034
};//Size=0x1840
You can see inside class Level0ToVersionNumber there is 20 bytes of padding.
Inside Level1ToVersionNumber there is 8 bytes of padding.
I currently am accessing these structures by:
g_pArmaMain->BaseObectWorld->Level0PointerToVersionNumber->Level1PointerToVersionNumber->VersionNumber;
As you can see this is 4 structures deep. Well some of my code is 15 to 20 stuctures deep. I know there has to be a better way of setting this up. This can't be the only way to do this.
Does anyone know how to shrink/consolidate the classes with multilevel pointers or some other creative way?
This is ridiculous when I have to do things like this:
if( !( g_pArmaMain->BaseObjectWorld->ObjectTablePtr->ObjectTableArrayPtr->ObjectTableArrayElement[i].element->EntityPtr->EntityPlus70->EntityPlus70Plus40->ObjectNamePtr <= 0 ) && !( g_pArmaMain->BaseObjectWorld->ObjectTablePtr->ObjectTableArrayPtr->ObjectTableArrayElement[i].element->EntityPtr->EntityPlus70->EntityPlus70Plus40->ObjectNamePtr->lengthOfEntName <= 0 ) )
It works but its just nasty nasty nasty...
Thanks for any help.