structure.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #ifndef STRUCTURE_H
  2. #define STRUCTURE_H
  3. #include "Structure Internals.h"
  4. #include "tiledef.h"
  5. #include "overhead types.h"
  6. #define NOTHING_BLOCKING 0
  7. #define BLOCKING_REDUCE_RANGE 1
  8. #define BLOCKING_NEXT_TILE 10
  9. #define BLOCKING_TOPLEFT_WINDOW 30
  10. #define BLOCKING_TOPRIGHT_WINDOW 40
  11. #define BLOCKING_TOPLEFT_DOOR 50
  12. #define BLOCKING_TOPRIGHT_DOOR 60
  13. #define FULL_BLOCKING 70
  14. #define BLOCKING_TOPLEFT_OPEN_WINDOW 90
  15. #define BLOCKING_TOPRIGHT_OPEN_WINDOW 100
  16. // ATE: Increased to allow corpses to not collide with soldiers
  17. // 100 == MAX_CORPSES
  18. #define INVALID_STRUCTURE_ID ( TOTAL_SOLDIERS + 100 )
  19. #define IGNORE_PEOPLE_STRUCTURE_ID (TOTAL_SOLDIERS+101)
  20. #define STRUCTURE_DAMAGE_EXPLOSION 1
  21. #define STRUCTURE_DAMAGE_GUNFIRE 2
  22. // functions at the structure database level
  23. //
  24. STRUCTURE_FILE_REF * LoadStructureFile( STR szFileName );
  25. void FreeAllStructureFiles( void );
  26. BOOLEAN FreeStructureFile( STRUCTURE_FILE_REF * pStructureFile );
  27. //
  28. // functions at the structure instance level
  29. //
  30. BOOLEAN OkayToAddStructureToWorld( INT16 sBaseGridNo, INT8 bLevel, DB_STRUCTURE_REF * pDBStructureRef, INT16 sExclusionID );
  31. // for the PTR argument of AddStructureToWorld, pass in a LEVELNODE * please!
  32. BOOLEAN AddStructureToWorld( INT16 sBaseGridNo, INT8 bLevel, DB_STRUCTURE_REF * pDBStructureRef, PTR pLevelN );
  33. BOOLEAN DeleteStructureFromWorld( STRUCTURE * pStructure );
  34. //
  35. // functions to find a structure in a location
  36. //
  37. STRUCTURE * FindStructure( INT16 sGridNo, UINT32 fFlags );
  38. STRUCTURE * FindNextStructure( STRUCTURE * pStructure, UINT32 fFlags );
  39. STRUCTURE * FindStructureByID( INT16 sGridNo, UINT16 usStructureID );
  40. STRUCTURE * FindBaseStructure( STRUCTURE * pStructure );
  41. STRUCTURE * FindNonBaseStructure( INT16 sGridNo, STRUCTURE * pStructure );
  42. //
  43. // functions related to interactive tiles
  44. //
  45. STRUCTURE * SwapStructureForPartner( INT16 sGridNo, STRUCTURE * pStructure );
  46. STRUCTURE * SwapStructureForPartnerWithoutTriggeringSwitches( INT16 sGridNo, STRUCTURE * pStructure );
  47. STRUCTURE * SwapStructureForPartnerAndStoreChangeInMap( INT16 sGridNo, STRUCTURE * pStructure );
  48. //
  49. // functions useful for AI that return info about heights
  50. //
  51. INT8 StructureHeight( STRUCTURE * pStructure );
  52. INT8 StructureBottomLevel( STRUCTURE * pStructure );
  53. INT8 GetTallestStructureHeight( INT16 sGridNo, BOOLEAN fOnRoof );
  54. INT8 GetStructureTargetHeight( INT16 sGridNo, BOOLEAN fOnRoof );
  55. BOOLEAN StructureDensity( STRUCTURE * pStructure, UINT8 * pubLevel0, UINT8 * pubLevel1, UINT8 * pubLevel2, UINT8 * pubLevel3 );
  56. BOOLEAN FindAndSwapStructure( INT16 sGridNo );
  57. INT16 GetBaseTile( STRUCTURE * pStructure );
  58. //
  59. // functions to work with the editor undo code
  60. //
  61. void DeleteStructureFromTile( PTR pMapElement, STRUCTURE * pStructure );
  62. void DebugStructurePage1( void );
  63. BOOLEAN AddZStripInfoToVObject( HVOBJECT hVObject, STRUCTURE_FILE_REF * pStructureFileRef, BOOLEAN fFromAnimation, INT16 sSTIStartIndex );
  64. // FUNCTIONS FOR DETERMINING STUFF THAT BLOCKS VIEW FOR TILE_bASED LOS
  65. INT8 GetBlockingStructureInfo( INT16 sGridNo, INT8 bDir, INT8 bNextDir, INT8 bLevel, INT8 *pStructHeight, STRUCTURE ** ppTallestStructure, BOOLEAN fWallsBlock );
  66. BOOLEAN DamageStructure( STRUCTURE * pStructure, UINT8 ubDamage, UINT8 ubReason, INT16 sGridNo, INT16 sX, INT16 sY, UINT8 ubOwner );
  67. // Material armour type enumeration
  68. enum
  69. {
  70. MATERIAL_NOTHING,
  71. MATERIAL_WOOD_WALL,
  72. MATERIAL_PLYWOOD_WALL,
  73. MATERIAL_LIVE_WOOD,
  74. MATERIAL_LIGHT_VEGETATION,
  75. MATERIAL_FURNITURE,
  76. MATERIAL_PORCELAIN,
  77. MATERIAL_CACTUS,
  78. MATERIAL_NOTUSED1,
  79. MATERIAL_NOTUSED2,
  80. MATERIAL_NOTUSED3,
  81. MATERIAL_STONE,
  82. MATERIAL_CONCRETE1,
  83. MATERIAL_CONCRETE2,
  84. MATERIAL_ROCK,
  85. MATERIAL_RUBBER,
  86. MATERIAL_SAND,
  87. MATERIAL_CLOTH,
  88. MATERIAL_SANDBAG,
  89. MATERIAL_NOTUSED5,
  90. MATERIAL_NOTUSED6,
  91. MATERIAL_LIGHT_METAL,
  92. MATERIAL_THICKER_METAL,
  93. MATERIAL_HEAVY_METAL,
  94. MATERIAL_INDESTRUCTABLE_STONE,
  95. MATERIAL_INDESTRUCTABLE_METAL,
  96. MATERIAL_THICKER_METAL_WITH_SCREEN_WINDOWS,
  97. NUM_MATERIAL_TYPES
  98. };
  99. extern INT32 guiMaterialHitSound[ NUM_MATERIAL_TYPES ];
  100. STRUCTURE *FindStructureBySavedInfo( INT16 sGridNo, UINT8 ubType, UINT8 ubWallOrientation, INT8 bLevel );
  101. UINT32 StructureTypeToFlag( UINT8 ubType );
  102. UINT8 StructureFlagToType( UINT32 uiFlag );
  103. UINT32 GetStructureOpenSound( STRUCTURE *pStructure, BOOLEAN fClose );
  104. #endif