| 3618 | } |
| 3619 | |
| 3620 | bool 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 | } |
nothing calls this directly
no test coverage detected