ClassStructs.hpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. #pragma once
  2. #define CLASS_STRUCTS_VERSION 1
  3. #include "other.hpp"
  4. //0 + 52 bytes
  5. #define ClassStruct_SimObject \
  6. void* vftable; \
  7. const char* objectName; \
  8. SimObject* nextNameObject; \
  9. SimObject* nextManagerNameObject; \
  10. SimObject* nextIdObject; \
  11. void* mGroup; \
  12. unsigned int mFlags; \
  13. void* mNotifyList; \
  14. unsigned int id; /* +32 */ \
  15. Namespace* mNamespace; /* +36 */ \
  16. unsigned int mTypeMask; \
  17. void* SimObject_0[1]; \
  18. void* mFieldDictionary; \
  19. struct SimObject
  20. {
  21. ClassStruct_SimObject
  22. };
  23. //52 + 12 bytes
  24. #define ClassStruct_SimSet \
  25. unsigned int mElementCount; /* +52 */ \
  26. unsigned int mArraySize; /* +56 */ \
  27. SimObject** mArray[]; /* +60 */ \
  28. struct SimSet
  29. {
  30. ClassStruct_SimObject
  31. ClassStruct_SimSet
  32. };
  33. //52 + 28 bytes
  34. #define ClassStruct_NetObject \
  35. void* NetObject_0[4]; \
  36. void* SceneObject_netFlags; /* +68 */ \
  37. void* SceneObject_ghostID; /* +72 */ \
  38. void* NetObject_1[1]; \
  39. struct NetObject
  40. {
  41. ClassStruct_SimObject
  42. ClassStruct_NetObject
  43. };
  44. //80 + 408 bytes
  45. #define ClassStruct_SceneObject \
  46. void* SceneObject_0[102]; \
  47. struct SceneObject
  48. {
  49. ClassStruct_SimObject
  50. ClassStruct_NetObject
  51. ClassStruct_SceneObject
  52. };
  53. //488 + 28 bytes
  54. #define ClassStruct_GameBase \
  55. void* GameBase_0[7]; \
  56. struct GameBase
  57. {
  58. ClassStruct_SimObject
  59. ClassStruct_NetObject
  60. ClassStruct_SceneObject
  61. ClassStruct_GameBase
  62. };
  63. //516 + 1300 bytes
  64. #define ClassStruct_ShapeBase \
  65. void* ShapeBase_0[325]; \
  66. struct ShapeBase
  67. {
  68. ClassStruct_SimObject
  69. ClassStruct_NetObject
  70. ClassStruct_SceneObject
  71. ClassStruct_GameBase
  72. ClassStruct_ShapeBase
  73. };
  74. //1816 + 780 bytes
  75. #define ClassStruct_Player \
  76. void* Player_0[195]; \
  77. struct Player
  78. {
  79. ClassStruct_SimObject
  80. ClassStruct_NetObject
  81. ClassStruct_SceneObject
  82. ClassStruct_GameBase
  83. ClassStruct_ShapeBase
  84. ClassStruct_Player
  85. };
  86. //2596 + 140 bytes
  87. #define ClassStruct_AIPlayer \
  88. void* AIPlayer_0[35]; \
  89. struct AIPlayer
  90. {
  91. ClassStruct_SimObject
  92. ClassStruct_NetObject
  93. ClassStruct_SceneObject
  94. ClassStruct_GameBase
  95. ClassStruct_ShapeBase
  96. ClassStruct_Player
  97. ClassStruct_AIPlayer
  98. };
  99. //52 + 28(?) bytes
  100. #define ClassStruct_TCPObject \
  101. void* TCPObject_00; \
  102. void* TCPObject_01; \
  103. void* TCPObject_02; \
  104. void* TCPObject_03; \
  105. void* TCPObject_04; \
  106. void* TCPObject_05; \
  107. void* TCPObject_06; \
  108. struct TCPobject
  109. {
  110. ClassStruct_SimObject
  111. ClassStruct_TCPObject
  112. };
  113. //80 + ??
  114. #define ClassStruct_SOCKobject \
  115. struct SOCKobject
  116. {
  117. ClassStruct_SimObject
  118. ClassStruct_TCPObject
  119. ClassStruct_SOCKobject
  120. };
  121. //80 + ??
  122. #define ClassStruct_HTTPObject \
  123. struct HTTPobject
  124. {
  125. ClassStruct_SimObject
  126. ClassStruct_TCPObject
  127. ClassStruct_HTTPObject
  128. };
  129. int NamespaceClasses_instanceOf(SimObject* obj, const char* className)
  130. {
  131. if(obj == NULL)
  132. return -1;
  133. Namespace* ns = obj->mNamespace;
  134. for(int i = 0; ns != NULL; i++)
  135. {
  136. //Look for names of real classes
  137. if(ns->mClassRep != NULL)
  138. if(strcmp(className, ns->mName) == 0)
  139. return 1;
  140. ns = ns->mParent;
  141. }
  142. return 0;
  143. }