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

Method Soldier_Sort

Source/GameData.cpp:421–466  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

419}
420
421void sGameData::Soldier_Sort() {
422
423 // Remove any 'dead' troops
424 for (int16 Data1c = 7; Data1c >= 0; --Data1c) {
425
426 sMission_Troop* Data20 = mSoldiers_Allocated;
427
428 for (int16 Data0 = 7; Data0 >= 0; --Data0, ++Data20) {
429
430 if (Data20->mRecruitID == -1) {
431
432 sMission_Troop* Data24 = Data20 + 1;
433
434 *Data20 = *Data24;
435 Data24->Clear();
436 Data24->mRecruitID = -1;
437 }
438 }
439 }
440
441 // Sort by kills
442 sMission_Troop* Data20 = mSoldiers_Allocated;
443 for (int16 Data1c = 7; Data1c >= 0; --Data1c, ++Data20) {
444 sMission_Troop* Data24 = mSoldiers_Allocated;
445
446 for (int16 Data18 = 7; Data18 >= 0; --Data18, ++Data24) {
447
448 if (Data20 == Data24)
449 continue;
450
451 if (Data20->mRecruitID == -1 || Data24->mRecruitID == -1)
452 continue;
453
454 if (Data20->mRank != Data24->mRank)
455 continue;
456
457 if (Data20->mNumberOfKills <= Data24->mNumberOfKills)
458 continue;
459
460 sMission_Troop Spare = *Data20;
461
462 *Data20 = *Data24;
463 *Data24 = Spare;
464 }
465 }
466}
467
468void sGameData::Soldier_Died(const sMission_Troop* pTroop) {
469 if (!pTroop)

Callers 4

Phase_PrepareMethod · 0.80
Briefing_ShowMethod · 0.80
Recruit_ShowMethod · 0.80
quickServiceScreenFunction · 0.80

Calls 1

ClearMethod · 0.45

Tested by

no test coverage detected