| 2546 | } |
| 2547 | |
| 2548 | void CClient::PumpNetwork() |
| 2549 | { |
| 2550 | for(auto &NetClient : m_aNetClient) |
| 2551 | { |
| 2552 | NetClient.Update(); |
| 2553 | } |
| 2554 | |
| 2555 | if(State() != IClient::STATE_DEMOPLAYBACK) |
| 2556 | { |
| 2557 | // check for errors of main and dummy |
| 2558 | if(State() != IClient::STATE_OFFLINE && State() < IClient::STATE_QUITTING) |
| 2559 | { |
| 2560 | if(m_aNetClient[CONN_MAIN].State() == NETSTATE_OFFLINE) |
| 2561 | { |
| 2562 | // This will also disconnect the dummy, so the branch below is an `else if` |
| 2563 | Disconnect(); |
| 2564 | char aBuf[256]; |
| 2565 | str_format(aBuf, sizeof(aBuf), "offline error='%s'", m_aNetClient[CONN_MAIN].ErrorString()); |
| 2566 | m_pConsole->Print(IConsole::OUTPUT_LEVEL_STANDARD, "client", aBuf, CLIENT_NETWORK_PRINT_ERROR_COLOR); |
| 2567 | } |
| 2568 | else if((DummyConnecting() || DummyConnected()) && m_aNetClient[CONN_DUMMY].State() == NETSTATE_OFFLINE) |
| 2569 | { |
| 2570 | const bool WasConnecting = DummyConnecting(); |
| 2571 | DummyDisconnect(nullptr); |
| 2572 | char aBuf[256]; |
| 2573 | str_format(aBuf, sizeof(aBuf), "offline dummy error='%s'", m_aNetClient[CONN_DUMMY].ErrorString()); |
| 2574 | m_pConsole->Print(IConsole::OUTPUT_LEVEL_STANDARD, "client", aBuf, CLIENT_NETWORK_PRINT_ERROR_COLOR); |
| 2575 | if(WasConnecting) |
| 2576 | { |
| 2577 | str_format(aBuf, sizeof(aBuf), "%s: %s", Localize("Could not connect dummy"), m_aNetClient[CONN_DUMMY].ErrorString()); |
| 2578 | GameClient()->Echo(aBuf); |
| 2579 | } |
| 2580 | } |
| 2581 | } |
| 2582 | |
| 2583 | // check if main was connected |
| 2584 | if(State() == IClient::STATE_CONNECTING && m_aNetClient[CONN_MAIN].State() == NETSTATE_ONLINE) |
| 2585 | { |
| 2586 | // we switched to online |
| 2587 | m_pConsole->Print(IConsole::OUTPUT_LEVEL_STANDARD, "client", "connected, sending info", CLIENT_NETWORK_PRINT_COLOR); |
| 2588 | SetState(IClient::STATE_LOADING); |
| 2589 | SetLoadingStateDetail(IClient::LOADING_STATE_DETAIL_INITIAL); |
| 2590 | SendInfo(CONN_MAIN); |
| 2591 | } |
| 2592 | |
| 2593 | // progress on dummy connect when the connection is online |
| 2594 | if(m_DummySendConnInfo && m_aNetClient[CONN_DUMMY].State() == NETSTATE_ONLINE) |
| 2595 | { |
| 2596 | m_DummySendConnInfo = false; |
| 2597 | SendInfo(CONN_DUMMY); |
| 2598 | m_aNetClient[CONN_DUMMY].Update(); |
| 2599 | SendReady(CONN_DUMMY); |
| 2600 | GameClient()->SendDummyInfo(true); |
| 2601 | SendEnterGame(CONN_DUMMY); |
| 2602 | } |
| 2603 | } |
| 2604 | |
| 2605 | // process packets |
nothing calls this directly
no test coverage detected