home *** CD-ROM | disk | FTP | other *** search
/ The Complete Doom Accessory Pack 2 / TheCompleteDoomAccessoryPackVolumeII.iso / editors / gdredit / doom.h < prev    next >
Text File  |  1994-05-29  |  4KB  |  214 lines

  1. #ifndef DOOM
  2. #define DOOM
  3.  
  4. #ifdef __TSC__
  5. #pragma link (doom)
  6. #endif
  7.  
  8. #include <windows.h>
  9.  
  10. // Helper functions for reading large blocks of data.
  11. DWORD lread (int FileHandle,VOID FAR * pv,DWORD ul);
  12. DWORD lwrite (int FileHandle,VOID FAR * pv,DWORD ul);
  13.  
  14.  
  15. struct Header
  16. {
  17.     char    Signature [4];
  18.     long     NumberOfEntries;
  19.     long      DirectoryPointer;
  20. };
  21.  
  22.  
  23. struct DirectoryEntry
  24. {
  25.     long    ResourcePointer;
  26.     long     ResourceSize;
  27.     char    ResourceName [8];
  28. };
  29.  
  30.  
  31. struct Thing
  32. {
  33.     int        X;
  34.     int        Y;
  35.     int        Angle;
  36.     int        Type;
  37.     int        Bitset;
  38. };
  39.  
  40.  
  41. struct Vertex
  42. {
  43.     int        X;
  44.     int        Y;
  45. };
  46.  
  47.  
  48. struct LineDef
  49. {
  50.     int        FromVertex;
  51.     int        ToVertex;
  52.     int        Bitset;
  53.     int        Types;
  54.     int        Trigger;
  55.     int        Sidedef1;
  56.     int        Sidedef2;
  57. };
  58.  
  59.  
  60. struct SideDef
  61. {
  62.     int        X;
  63.     int        Y;
  64.     char    Above [8];
  65.     char    Below [8];
  66.     char    Wall [8];
  67.     int        Sector;
  68. };
  69.  
  70.  
  71. struct Sector
  72. {
  73.     int        FloorHeight;
  74.     int        CeilingHeight;
  75.     char    FloorTexture [8];
  76.     char    CeilingTexture [8];
  77.     int        Brightness;
  78.     int        Special;
  79.     int        Trigger;
  80. };
  81.  
  82.  
  83. struct Seg
  84. {
  85.     int        FromVertex;
  86.     int        ToVertex;
  87.     int        Angle;
  88.     int        Linedef;
  89.     int        Direction;
  90.     int        Distance;
  91. };
  92.  
  93.  
  94. struct SSector
  95. {
  96.     int        NoOfSegs;
  97.     int        StartSeg;
  98. };
  99.  
  100.  
  101. struct Node
  102. {
  103.     int        XStart;
  104.     int        YStart;
  105.     int        XOffset;
  106.     int        YOffset;
  107.     int        YSQ1Right1;
  108.     int        YSQ1Right2;
  109.     int        XSQ1Right1;
  110.     int        XSQ1Right2;
  111.     int        YSQ2Right1;
  112.     int        YSQ2Right2;
  113.     int        XSQ2Right1;
  114.     int        XSQ2Right2;
  115.     int        Bitset1;
  116.     int        Bitset2;
  117. };
  118.  
  119.  
  120. class DoomObject
  121. {
  122.     public:
  123.         DoomObject ();
  124.         ~DoomObject ();
  125.         DoomObject (int FileHandle,DirectoryEntry * Entry);
  126.         virtual void SaveObject (int FileHandle,DirectoryEntry * Entry);
  127.         
  128.     public:
  129.         int        NoOfObjects;
  130.         int        NoOfSpareObjects;
  131.         HANDLE    MemHandle;
  132.         char *    MemPointer;
  133. };
  134.  
  135.  
  136. class DoomThingObject : public DoomObject
  137. {
  138.     public:
  139.         DoomThingObject ();
  140.         DoomThingObject (int FileHandle,DirectoryEntry * Entry);
  141.         virtual void SaveObject (int FileHandle,DirectoryEntry * Entry);
  142.         int Add (int EntryNo,int X,int Y);
  143.         void Delete (int EntryNo);
  144.         
  145.     public:
  146.         Thing *        Data;
  147. };
  148.  
  149.  
  150. class DoomVertexObject : public DoomObject
  151. {
  152.     public:
  153.         DoomVertexObject ();
  154.         DoomVertexObject (int FileHandle,DirectoryEntry * Entry);
  155.         virtual void SaveObject (int FileHandle,DirectoryEntry * Entry);
  156.         int Add (int X,int Y);
  157.         void Delete (int EntryNo);
  158.         
  159.     public:
  160.         Vertex *    Data;
  161. };
  162.  
  163.  
  164. class DoomSideDefObject : public DoomObject
  165. {
  166.     public:
  167.         DoomSideDefObject ();
  168.         DoomSideDefObject (int FileHandle,DirectoryEntry * Entry);
  169.         virtual void SaveObject (int FileHandle,DirectoryEntry * Entry);
  170.         int Add ();
  171.         void Delete (int EntryNo);
  172.         
  173.     public:
  174.         SideDef *    Data;
  175. };
  176.  
  177.  
  178. class DoomLineDefObject : public DoomObject
  179. {
  180.     public:
  181.         DoomLineDefObject ();
  182.         DoomLineDefObject (int FileHandle,DirectoryEntry * Entry);
  183.         virtual void SaveObject (int FileHandle,DirectoryEntry * Entry);
  184.         int Add (int FromVertex,int ToVertex);
  185.         void Delete (int EntryNo);
  186.         
  187.     public:
  188.         LineDef *    Data;
  189. };
  190.  
  191.  
  192. class DoomSectorObject : public DoomObject
  193. {
  194.     public:
  195.         DoomSectorObject ();
  196.         DoomSectorObject (int FileHandle,DirectoryEntry * Entry);
  197.         virtual void SaveObject (int FileHandle,DirectoryEntry * Entry);
  198.         int Add ();
  199.         void Delete (int EntryNo);
  200.         
  201.     public:
  202.         Sector *    Data;
  203. };
  204.  
  205.  
  206. // These allow easy across across the objects. Good for control !
  207. extern DoomVertexObject *        VertexPointer;
  208. extern DoomLineDefObject *        LineDefPointer;
  209. extern DoomThingObject *        ThingPointer;
  210. extern DoomSideDefObject *        SideDefPointer;
  211. extern DoomSectorObject *        SectorPointer;
  212.  
  213. #endif
  214.