Squads.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. #ifndef _SQUADS_H
  2. #define _SQUADS_H
  3. #include "Soldier Control.h"
  4. #include "FileMan.h"
  5. // header for squad management system
  6. #define NUMBER_OF_SOLDIERS_PER_SQUAD 6
  7. // enums for squads
  8. enum{
  9. FIRST_SQUAD=0,
  10. SECOND_SQUAD,
  11. THIRD_SQUAD,
  12. FOURTH_SQUAD,
  13. FIFTH_SQUAD,
  14. SIXTH_SQUAD,
  15. SEVENTH_SQUAD,
  16. EIGTH_SQUAD,
  17. NINTH_SQUAD,
  18. TENTH_SQUAD,
  19. ELEVENTH_SQUAD,
  20. TWELTH_SQUAD,
  21. THIRTEENTH_SQUAD,
  22. FOURTEENTH_SQUAD,
  23. FIFTHTEEN_SQUAD,
  24. SIXTEENTH_SQUAD,
  25. SEVENTEENTH_SQUAD,
  26. EIGTHTEENTH_SQUAD,
  27. NINTEENTH_SQUAD,
  28. TWENTYTH_SQUAD,
  29. NUMBER_OF_SQUADS,
  30. };
  31. // ATE: Added so we can have no current squad
  32. // happens in we move off sector via tactical, but nobody is left!
  33. #define NO_CURRENT_SQUAD NUMBER_OF_SQUADS
  34. // ptrs to soldier types of squads and their members
  35. // squads
  36. extern SOLDIERTYPE *Squad[ NUMBER_OF_SQUADS ][ NUMBER_OF_SOLDIERS_PER_SQUAD ];
  37. extern INT32 iCurrentTacticalSquad;
  38. // will initialize the squad lists for game initalization
  39. void InitSquads( void );
  40. // add character to squad
  41. BOOLEAN AddCharacterToSquad( SOLDIERTYPE *pCharacter, INT8 bSquadValue );
  42. // find the first slot the guy will fit in, return true if he is in a squad or has been put in one
  43. BOOLEAN AddCharacterToAnySquad( SOLDIERTYPE *pCharacter );
  44. // remove character from squads
  45. BOOLEAN RemoveCharacterFromSquads( SOLDIERTYPE *pCharacter );
  46. // remove character from a squad
  47. BOOLEAN RemoveCharacterFromASquad( SOLDIERTYPE *pCharacter, INT8 bSquadValue );
  48. // check if character is in this squad
  49. BOOLEAN IsCharacterInSquad( SOLDIERTYPE *pCharacter, INT8 bSquadValue );
  50. // return which squad character is in, -1 if none found
  51. INT8 SquadCharacterIsIn( SOLDIERTYPE *pCharacter );
  52. // what slot is character in in this squad?..-1 if not found in squad
  53. INT8 SlotCharacterIsInSquad( SOLDIERTYPE *pCharacter, INT8 bSquadValue );
  54. // return number of people in this squad
  55. INT8 NumberOfPeopleInSquad( INT8 bSquadValue );
  56. INT8 NumberOfNonEPCsInSquad( INT8 bSquadValue );
  57. BOOLEAN IsRobotControllerInSquad( INT8 bSquadValue );
  58. INT8 NumberOfPlayerControllableMercsInSquad( INT8 bSquadValue );
  59. // what sector is the squad currently in?..return if anyone in squad
  60. BOOLEAN SectorSquadIsIn(INT8 bSquadValue, INT16 *sMapX, INT16 *sMapY, INT16 *sMapZ );
  61. // rebuild current squad list
  62. void RebuildCurrentSquad( void );
  63. // copy path of squad to character
  64. BOOLEAN CopyPathOfSquadToCharacter( SOLDIERTYPE *pCharacter, INT8 bSquadValue );
  65. // copy path from character back to squad
  66. BOOLEAN CopyPathOfCharacterToSquad( SOLDIERTYPE *pCharacter, INT8 bSquadValue );
  67. // what is the id of the current squad?
  68. INT32 CurrentSquad( void );
  69. // add character to unique squad (returns the squad #, -1 if failed)
  70. INT8 AddCharacterToUniqueSquad( SOLDIERTYPE *pCharacter );
  71. // is this squad empty?
  72. BOOLEAN SquadIsEmpty( INT8 bSquadValue );
  73. // is this squad in the current tactical sector?
  74. BOOLEAN IsSquadOnCurrentTacticalMap( INT32 iCurrentSquad );
  75. // set this squad as the current tatcical squad
  76. BOOLEAN SetCurrentSquad( INT32 iCurrentSquad, BOOLEAN fForce );
  77. // set default squad in sector
  78. void SetDefaultSquadOnSectorEntry( BOOLEAN fForce );
  79. // get last squad that has active mercs
  80. INT32 GetLastSquadActive( void );
  81. // set squads between sector position
  82. void SetSquadPositionBetweenSectors( UINT8 ubNextX, UINT8 ubNextY, UINT8 ubPrevX, UINT8 ubPrevY, UINT32 uiTraverseTime, UINT32 uiArriveTime, UINT8 ubSquadValue );
  83. // get squads between sector positions and times
  84. void GetSquadPosition( UINT8 *ubNextX, UINT8 *ubNextY, UINT8 *ubPrevX, UINT8 *ubPrevY, UINT32 *uiTraverseTime, UINT32 *uiArriveTime, UINT8 ubSquadValue );
  85. void ExamineCurrentSquadLights( void );
  86. // get location of this squad
  87. void GetLocationOfSquad( INT16 *sX, INT16 *sY, INT8 *bZ, INT8 bSquadValue );
  88. //Save the squad information to the saved game file
  89. BOOLEAN SaveSquadInfoToSavedGameFile( HWFILE hFile );
  90. //Load all the squad info from the saved game file
  91. BOOLEAN LoadSquadInfoFromSavedGameFile( HWFILE hFile );
  92. // get squad id of first free squad
  93. INT8 GetFirstEmptySquad( void );
  94. // is this squad in the same sector as soldier?
  95. BOOLEAN IsSquadInSector( SOLDIERTYPE *pSoldier, UINT8 ubSquad );
  96. // is any merc on squad asleep?
  97. BOOLEAN IsAnyMercOnSquadAsleep( UINT8 ubSquadValue );
  98. // is therea dead guy here
  99. BOOLEAN IsDeadGuyInThisSquadSlot( INT8 bSlotId, INT8 bSquadValue , INT8 *bNumberOfDeadGuysSoFar );
  100. // dead soldier was on squad
  101. BOOLEAN SoldierIsDeadAndWasOnSquad( SOLDIERTYPE *pSoldier, INT8 bSquadValue );
  102. // now reset the table for these mercs
  103. BOOLEAN ResetDeadSquadMemberList( INT32 iSquadValue );
  104. // this passed soldier on the current squad int he tactical map
  105. BOOLEAN IsMercOnCurrentSquad( SOLDIERTYPE *pSoldier );
  106. // is this squad filled up?
  107. BOOLEAN IsThisSquadFull( INT8 bSquadValue );
  108. // is this squad moving?
  109. BOOLEAN IsThisSquadOnTheMove( INT8 bSquadValue );
  110. // is there a vehicle in this squad?
  111. BOOLEAN DoesVehicleExistInSquad( INT8 bSquadValue );
  112. // re-create any trashed squad movement groups
  113. void CheckSquadMovementGroups( void );
  114. #endif