MCPcopy Create free account
hub / github.com/OpenApoc/OpenApoc / executeOrders

Method executeOrders

game/ui/base/recruitscreen.cpp:489–566  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

487}
488
489void RecruitScreen::executeOrders()
490{
491 std::vector<StateRef<Base>> bases;
492 for (auto &b : state->player_bases)
493 {
494 bases.push_back(b.second->building->base);
495 }
496 bases.resize(8);
497
498 auto player = state->getPlayer();
499
500 for (int i = 0; i < 8; i++)
501 {
502 for (auto &a : agentLists[i])
503 {
504 StateRef<Agent> agent{state.get(), a->getData<Agent>()};
505 if (bases[i] != agent->homeBuilding->base)
506 {
507 if (agent->owner != player)
508 {
509 agent->hire(*state, bases[i]->building);
510 player->balance -= state->agent_salary.at(agent->type->role);
511 }
512 else
513 {
514 switch (agent->type->role)
515 {
516 case AgentType::Role::Physicist:
517 case AgentType::Role::BioChemist:
518 case AgentType::Role::Engineer:
519 {
520 if (agent->lab_assigned)
521 {
522 StateRef<Lab> lab{state.get(), agent->lab_assigned};
523 agent->lab_assigned->removeAgent(lab, agent);
524 }
525 agent->transfer(*state, bases[i]->building);
526 break;
527 }
528 case AgentType::Role::Soldier:
529 {
530 agent->transfer(*state, bases[i]->building);
531 break;
532 }
533 }
534 }
535 }
536 }
537 }
538
539 for (auto &a : agentLists[8])
540 {
541 auto agent = a->getData<Agent>();
542 if (agent->owner == state->getPlayer())
543 {
544 player->balance -= state->agent_fired_penalty.at(agent->type->role);
545 std::list<sp<AEquipment>> equipmentToStrip;
546 for (auto &e : agent->equipment)

Callers

nothing calls this directly

Calls 9

getPlayerMethod · 0.80
hireMethod · 0.80
removeAgentMethod · 0.80
transferMethod · 0.80
unloadAmmoMethod · 0.80
handleDeathMethod · 0.80
cleanUpDeathNoteMethod · 0.80
getMethod · 0.45
dieMethod · 0.45

Tested by

no test coverage detected