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

Method checkMissionEnd

game/state/battle/battle.cpp:1982–2056  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1980}
1981
1982void Battle::checkMissionEnd(GameState &state, bool retreated, bool forceReCheck)
1983{
1984 auto endBeginTimer = std::max((unsigned)1, missionEndTimer);
1985 if (forceReCheck)
1986 {
1987 missionEndTimer = 0;
1988 }
1989 else if (missionEndTimer > 0)
1990 {
1991 return;
1992 }
1993 loserHasRetreated = retreated;
1994 auto civ = state.getCivilian();
1995 auto player = state.getPlayer();
1996 std::set<StateRef<Organisation>> orgsAlive;
1997 for (auto &p : participants)
1998 {
1999 if (p == civ)
2000 {
2001 continue;
2002 }
2003 for (auto &u : units)
2004 {
2005 if (u.second->owner == p && u.second->isConscious())
2006 {
2007 bool normalUnit = false;
2008 for (auto &mst : u.second->agent->type->bodyType->allowed_movement_states)
2009 {
2010 switch (mst)
2011 {
2012 case OpenApoc::MovementState::Normal:
2013 case OpenApoc::MovementState::Running:
2014 case OpenApoc::MovementState::Strafing:
2015 case OpenApoc::MovementState::Reverse:
2016 case OpenApoc::MovementState::Brainsuck:
2017 normalUnit = true;
2018 break;
2019 default:
2020 break;
2021 }
2022 if (normalUnit)
2023 break;
2024 }
2025
2026 if (normalUnit)
2027 {
2028 orgsAlive.insert(p);
2029 break;
2030 }
2031 }
2032 }
2033 }
2034 if (orgsAlive.find(player) == orgsAlive.end())
2035 {
2036 playerWon = false;
2037 missionEndTimer = endBeginTimer;
2038 }
2039 else

Callers 3

tryToRiseUpMethod · 0.80
dropDownMethod · 0.80
retreatMethod · 0.80

Calls 6

getCivilianMethod · 0.80
getPlayerMethod · 0.80
isConsciousMethod · 0.80
insertMethod · 0.80
endMethod · 0.80
isRelatedToMethod · 0.80

Tested by

no test coverage detected