MCPcopy Create free account
hub / github.com/OpenFodder/openfodder / Squad_Troops_Count

Method Squad_Troops_Count

Source/Fodder.cpp:8812–8880  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

8810}
8811
8812void cFodder::Squad_Troops_Count() {
8813 sSprite** Data34 = mSprite_TroopsAlive;
8814
8815 mSquads_TroopCount[0] = 0;
8816 mSquads_TroopCount[1] = 0;
8817 mSquads_TroopCount[2] = 0;
8818 mSquads_TroopCount[3] = 0;
8819
8820 int16 TotalTroops = 0;
8821
8822 mSquad_0_Sprites[0] = INVALID_SPRITE_PTR;
8823 mSquad_1_Sprites[0] = INVALID_SPRITE_PTR;
8824 mSquad_2_Sprites[0] = INVALID_SPRITE_PTR;
8825 mSquad_3_Sprites[0] = INVALID_SPRITE_PTR;
8826 mSquad_4_Sprites[0] = INVALID_SPRITE_PTR;
8827
8828 // Loop through all mission troops
8829 for( auto& Troop : mGame_Data.mSoldiers_Allocated ) {
8830
8831 if (Troop.mSprite == INVALID_SPRITE_PTR || Troop.mSprite == 0)
8832 continue;
8833
8834 sSprite* Sprite = Troop.mSprite;
8835
8836 // Sprite is not invincible
8837 if (!(Sprite->field_75 & eSprite_Flag_Invincibility)) {
8838
8839 // Is dying
8840 if (Sprite->field_38 < eSprite_Anim_Slide1) {
8841 if (Sprite->field_38) {
8842
8843 // Not in vehicle
8844 if (!Sprite->field_6E)
8845 continue;
8846
8847 Sprite->field_38 = eSprite_Anim_None;
8848 }
8849 }
8850 }
8851 //loc_2D165
8852 if (Sprite->field_32 < 0)
8853 continue;
8854
8855 uint8 Data10 = mSquads_TroopCount[Sprite->field_32] & 0xFF;
8856 mSquads_TroopCount[Sprite->field_32] += 1;
8857 ++TotalTroops;
8858
8859 sSprite** Data30 = mSquads[Sprite->field_32];
8860 //seg009:0151
8861 Data30[Data10] = Sprite;
8862 Data30[Data10 + 1] = INVALID_SPRITE_PTR;
8863
8864 *Data34 = Sprite;
8865 ++Data34;
8866 }
8867 //seg009:019E
8868
8869 if (!TotalTroops)

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected