| 1425 | } |
| 1426 | |
| 1427 | void cFodder::Phase_Soldiers_Prepare(const bool pPrebriefing) { |
| 1428 | Mission_Troops_Clear_Selected(); |
| 1429 | |
| 1430 | if (!pPrebriefing) { |
| 1431 | |
| 1432 | // Set the sMission_Troop Sprites from mMission_Troops_SpritePtrs |
| 1433 | if (mGame_Data.mGamePhase_Data.mSoldiers_Prepare_SetFromSpritePtrs) { |
| 1434 | sSprite** Data24 = mMission_Troops_SpritePtrs; |
| 1435 | |
| 1436 | for (auto& Troop : mGame_Data.mSoldiers_Allocated) { |
| 1437 | Troop.mSprite = *Data24++; |
| 1438 | } |
| 1439 | } |
| 1440 | |
| 1441 | mGame_Data.mGamePhase_Data.mSoldiers_Prepare_SetFromSpritePtrs = true; |
| 1442 | |
| 1443 | sSprite** Data24 = mMission_Troops_SpritePtrs; |
| 1444 | for (auto& Troop : mGame_Data.mSoldiers_Allocated) { |
| 1445 | *Data24++ = Troop.mSprite; |
| 1446 | } |
| 1447 | |
| 1448 | } |
| 1449 | |
| 1450 | // Join recruits into the squad |
| 1451 | int16 Data1C = mGame_Data.mGamePhase_Data.mSoldiers_Required - 1; |
| 1452 | while (Data1C >= 0) { |
| 1453 | Mission_Troop_Prepare_Next_Recruits(); |
| 1454 | --Data1C; |
| 1455 | } |
| 1456 | |
| 1457 | if (pPrebriefing) |
| 1458 | return; |
| 1459 | |
| 1460 | // Remove recruits which arn't needed for the map |
| 1461 | Data1C = mGame_Data.mGamePhase_Data.mSoldiers_Available; |
| 1462 | for (auto& Troop : mGame_Data.mSoldiers_Allocated) { |
| 1463 | |
| 1464 | if (Troop.mSprite == INVALID_SPRITE_PTR) |
| 1465 | continue; |
| 1466 | |
| 1467 | if (Data1C) |
| 1468 | --Data1C; |
| 1469 | else |
| 1470 | Troop.mSprite = INVALID_SPRITE_PTR; |
| 1471 | } |
| 1472 | |
| 1473 | } |
| 1474 | |
| 1475 | void cFodder::Mission_Troop_Prepare_Next_Recruits() { |
| 1476 |
no outgoing calls
no test coverage detected