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

Method handleGameStateEvent

game/ui/tileview/cityview.cpp:3620–4029  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3618}
3619
3620bool CityView::handleGameStateEvent(Event *e)
3621{
3622 auto gameEvent = dynamic_cast<GameEvent *>(e);
3623 if (!gameEvent)
3624 {
3625 LogError("Invalid game state event");
3626 return true;
3627 }
3628 if (!gameEvent->message().empty())
3629 {
3630 state->logEvent(gameEvent);
3631 baseForm->findControlTyped<Ticker>("NEWS_TICKER")->addMessage(gameEvent->message());
3632 switch (gameEvent->type)
3633 {
3634 case GameEventType::AlienSpotted:
3635 case GameEventType::AlienTakeover:
3636 case GameEventType::UfoCrashed:
3637 case GameEventType::UfoRecoveryUnmanned:
3638 case GameEventType::MissionCompletedBase:
3639 case GameEventType::MissionCompletedBuildingAlien:
3640 case GameEventType::MissionCompletedBuildingNormal:
3641 case GameEventType::MissionCompletedBuildingRaid:
3642 case GameEventType::MissionCompletedVehicle:
3643 {
3644 // Never pause for these
3645 break;
3646 }
3647 default:
3648 {
3649 bool pause = false;
3650 if (GameEvent::optionsMap.find(gameEvent->type) != GameEvent::optionsMap.end())
3651 {
3652 pause = config().getBool(GameEvent::optionsMap.at(gameEvent->type));
3653 }
3654 if (pause)
3655 {
3656 fw().stageQueueCommand(
3657 {StageCmd::Command::PUSH,
3658 mksp<NotificationScreen>(state, *this, gameEvent->message(),
3659 gameEvent->type)});
3660 }
3661 break;
3662 }
3663 }
3664 }
3665 switch (gameEvent->type)
3666 {
3667 case GameEventType::AlienTakeover:
3668 {
3669 // FIXME: Proper takeover message
3670 auto gameOrgEvent = dynamic_cast<GameOrganisationEvent *>(e);
3671 fw().stageQueueCommand(
3672 {StageCmd::Command::PUSH,
3673 mksp<NotificationScreen>(
3674 state, *this,
3675 format("Aliens have taken over %s", gameOrgEvent->organisation->name),
3676 gameEvent->type)});
3677 }

Callers

nothing calls this directly

Calls 15

formatFunction · 0.85
pickRandomFunction · 0.85
trFunction · 0.85
emptyMethod · 0.80
messageMethod · 0.80
logEventMethod · 0.80
addMessageMethod · 0.80
endMethod · 0.80
getBoolMethod · 0.80
stageQueueCommandMethod · 0.80
pushEventMethod · 0.80
forceCompleteMethod · 0.80

Tested by

no test coverage detected