| 853 | } |
| 854 | |
| 855 | void ClientApplication::updateTitle(float dt) { |
| 856 | m_cinematicOverlay->update(dt); |
| 857 | |
| 858 | m_titleScreen->update(dt); |
| 859 | m_mainMixer->update(dt); |
| 860 | m_mainMixer->setSpeed(GlobalTimescale); |
| 861 | |
| 862 | auto& app = appController(); |
| 863 | bool inputActive = m_titleScreen->textInputActive(); |
| 864 | m_input->setTextInputActive(inputActive); |
| 865 | if (inputActive) |
| 866 | app->setTextArea(m_titleScreen->paneManager()->keyboardCapturedWidget()->keyboardCaptureArea()); |
| 867 | else |
| 868 | app->setTextArea(); |
| 869 | app->setAcceptingTextInput(inputActive); |
| 870 | |
| 871 | auto p2pNetworkingService = app->p2pNetworkingService(); |
| 872 | if (p2pNetworkingService) { |
| 873 | auto getStateString = [](TitleState state) -> const char* { |
| 874 | switch (state) { |
| 875 | case TitleState::Main: |
| 876 | return "In Main Menu"; |
| 877 | case TitleState::Options: |
| 878 | return "In Options"; |
| 879 | case TitleState::Mods: |
| 880 | return "In Mods"; |
| 881 | case TitleState::SinglePlayerSelectCharacter: |
| 882 | return "Selecting a character for singleplayer"; |
| 883 | case TitleState::SinglePlayerCreateCharacter: |
| 884 | return "Creating a character for singleplayer"; |
| 885 | case TitleState::MultiPlayerSelectCharacter: |
| 886 | return "Selecting a character for multiplayer"; |
| 887 | case TitleState::MultiPlayerCreateCharacter: |
| 888 | return "Creating a character for multiplayer"; |
| 889 | case TitleState::MultiPlayerConnect: |
| 890 | return "Awaiting multiplayer connection info"; |
| 891 | case TitleState::StartSinglePlayer: |
| 892 | return "Loading Singleplayer"; |
| 893 | case TitleState::StartMultiPlayer: |
| 894 | return "Connecting to Multiplayer"; |
| 895 | default: |
| 896 | return ""; |
| 897 | } |
| 898 | }; |
| 899 | |
| 900 | p2pNetworkingService->setActivityData("Not In Game", getStateString(m_titleScreen->currentState()), 0, {}); |
| 901 | } |
| 902 | |
| 903 | if (m_titleScreen->currentState() == TitleState::StartSinglePlayer) { |
| 904 | changeState(MainAppState::SinglePlayer); |
| 905 | |
| 906 | } else if (m_titleScreen->currentState() == TitleState::StartMultiPlayer) { |
| 907 | if (!m_pendingMultiPlayerConnection || m_pendingMultiPlayerConnection->server.is<HostAddressWithPort>()) { |
| 908 | auto addressString = m_titleScreen->multiPlayerAddress().trim(); |
| 909 | auto portString = m_titleScreen->multiPlayerPort().trim(); |
| 910 | portString = portString.empty() ? toString(m_root->configuration()->get("gameServerPort").toUInt()) : portString; |
| 911 | if (auto port = maybeLexicalCast<uint16_t>(portString)) { |
| 912 | auto address = HostAddressWithPort::lookup(addressString, *port); |
nothing calls this directly
no test coverage detected