Guest User

Untitled

a guest
May 26th, 2020
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.04 KB | None | 0 0
  1. POD_TYPE(Char)
  2. POD_TYPE(Short)
  3. POD_TYPE(Int)
  4. POD_TYPE(Long)
  5. POD_TYPE(UChar)
  6. POD_TYPE(UShort)
  7. POD_TYPE(UInt)
  8. POD_TYPE(ULong)
  9. POD_TYPE(Pointer)
  10. POD_TYPE(ConstPtr)
  11. POD_TYPE(Name)
  12. POD_TYPE(Float)
  13. POD_TYPE(Double)
  14.  
  15. BEGIN_STRUCT(Vec3D)
  16.     FIELD(Float, X)
  17.     FIELD(Float, Y)
  18.     FIELD(Float, Z)
  19. END_STRUCT(Vec3D)
  20.  
  21. ARRAY_TYPE(Vec3D)
  22. ARRAY_TYPE(PObject)
  23.  
  24. BEGIN_OBJECT(DynStr, Object)
  25.     CONSTRUCTOR(DynStr)
  26.     DESTRUCTOR(DynStr)
  27.     COPIER(DynStr)
  28.     COMPARATOR(DynStr)
  29.     FIELD(UInt, Length)
  30.     FIELD(PChar, Text) FIELD_FLAG(TIFF_TRANSIENT)
  31. END_OBJECT(DynStr)
  32.  
  33. BEGIN_OBJECT(Thing, Object)
  34.     FIELD(DynStr, Text)
  35.     FIELD(Int, Value)
  36. END_OBJECT(Thing)
  37.  
  38. BEGIN_OBJECT(Entity, Object)
  39.     TYPE_FLAG(TIF_ABSTRACT)
  40.     CONSTRUCTOR(Entity)
  41.     DESTRUCTOR(Entity)
  42.     FIELD(PEntity, Parent)
  43.     FIELD(Vec3D, Position)
  44.     FIELD(Float, Health)
  45.     FIELD(Float, Speed)
  46.     FIELD(PNPC, RelatedNPC)
  47.     FIELD(Name, Name)
  48.     FIELD(PObjectArray, Children)
  49. END_OBJECT(Entity)
  50.  
  51. ARRAY_TYPE(PEntity)
  52.  
  53. BEGIN_OBJECT(NPC, Entity)
  54.     FIELD(Pointer, AI) FIELD_FLAG(TIFF_TRANSIENT)
  55.     FIELD(PEntity, Target)
  56. END_OBJECT(NPC)
  57.  
  58. BEGIN_OBJECT(Hero, Entity)
  59.     FIELD(Int, Level)
  60. END_OBJECT(Hero)
  61.  
  62. BEGIN_OBJECT(World, Object)
  63.     FIELD(PEntityArray, Entities)
  64. END_OBJECT(World)
  65.  
  66. ...
  67. PWorld world = NEW(World);
  68. PEntity e1 = NEW(Entity);
  69. PEntity e2 = NEW(Entity);
  70. PEntity e3 = NEW(Entity);
  71. e1->Name = GetName("foo");
  72. e2->Name = GetName("bar");
  73. e3->Name = GetName("baz");
  74. AddToPEntityArray(&world->Entities, e1);
  75. AddToPEntityArray(&world->Entities, e2);
  76. AddToPEntityArray(&world->Entities, e3);
  77. AddToPObjectArray(&e1->Children, (PObject)e3);
  78. e3->Parent = e1;
  79. ...
  80. PStream stm = CreateFileStream("datadat", SM_CREATE);
  81. WriteValueToStream(stm, TI(World), world, sizeof(World));
  82. FreeStream(stm);
  83. ...
  84. DELETE(e3);
  85. DELETE(e2);
  86. DELETE(e1);
  87. DELETE(world);
  88. ...
  89. PWorld world = NEW(World);
  90. PStream stm = CreateFileStream("datadat", SM_READ);
  91. ReadValueFromStream(stm, TI(World), world, sizeof(World));
  92. FreeStream(stm);
  93. DELETE(world);
  94. ...
Advertisement
Add Comment
Please, Sign In to add comment