| 8810 | } |
| 8811 | |
| 8812 | void 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) |
nothing calls this directly
no outgoing calls
no test coverage detected