void Sample::RenderMultiplayerEventQueue()

in ID@XboxSDK/Matchmaking/UWP/Cpp/GameLogic/Renderer.cpp [103:396]


void Sample::RenderMultiplayerEventQueue()
{
    std::vector<multiplayer_event> eventQueue = m_multiplayerEventQueue;

    // Render event queue notifications
    for (auto& multiplayerEvent : eventQueue)
    {
        stringstream_t ss;
        if (multiplayerEvent.context() != nullptr)
        {
            ss << (uint64_t)multiplayerEvent.context() << _T(" - ");
        }

        switch (multiplayerEvent.event_type())
        {
        case multiplayer_event_type::user_added:
        {
            auto userAddedArgs = std::dynamic_pointer_cast<user_added_event_args>(multiplayerEvent.event_args());
            if (multiplayerEvent.err())
            {
                ss << _T("Failed adding User '");
                ss << userAddedArgs->xbox_user_id();
            }
            else
            {
                ss << _T("User '");
                ss << userAddedArgs->xbox_user_id();
                ss << _T("' added");
            }
            break;
        }

        case multiplayer_event_type::user_removed:
        {
            auto userRemovedArgs = std::dynamic_pointer_cast<user_removed_event_args>(multiplayerEvent.event_args());
            if (multiplayerEvent.err())
            {
                ss << _T("Failed removing User '");
                ss << userRemovedArgs->xbox_user_id();
            }
            else
            {
                ss << _T("User '");
                ss << userRemovedArgs->xbox_user_id();
                ss << _T("' removed");
            }

            m_appState = APP_MAIN_MENU;
            ChangeAppStates();
            break;
        }

        case multiplayer_event_type::member_joined:
        {
            auto memberJoinedArgs = std::dynamic_pointer_cast<member_joined_event_args>(multiplayerEvent.event_args());
            for (auto& member : memberJoinedArgs->members())
            {
                ss << _T("Member '");
                ss << member->xbox_user_id();
                ss << _T("' joined");
                if (multiplayerEvent.session_type() == multiplayer_session_type::lobby_session)
                {
                    ss << _T(" the lobby.");
                }
                else
                {
                    ss << _T(" the game.");
                }
            }
            break;
        }

        case multiplayer_event_type::member_left:
        {
            auto memberLeftArgs = std::dynamic_pointer_cast<member_left_event_args>(multiplayerEvent.event_args());
            for (auto& member : memberLeftArgs->members())
            {
                ss << _T("Member '");
                ss << member->xbox_user_id();
                ss << _T("' left");
                if (multiplayerEvent.session_type() == multiplayer_session_type::lobby_session)
                {
                    ss << _T(" the lobby.");
                }
                else
                {
                    ss << _T(" the game.");
                }
            }
            break;
        }

        case multiplayer_event_type::member_property_changed:
        {
            auto memberPropChangedArgs = std::dynamic_pointer_cast<member_property_changed_event_args>(multiplayerEvent.event_args());
            auto member = memberPropChangedArgs->member();
            ss << _T("Member '");
            ss << member->xbox_user_id();
            ss << _T("' property changed.");
            break;
        }

        case multiplayer_event_type::session_property_changed:
        {
            auto gamePropChangedArgs = std::dynamic_pointer_cast<session_property_changed_event_args>(multiplayerEvent.event_args());
            if (multiplayerEvent.session_type() == multiplayer_session_type::lobby_session)
            {
                ss << _T("Lobby property changed.");
            }
            else
            {
                ss << _T("Game property changed.");
            }
            break;
        }

        case multiplayer_event_type::local_member_property_write_completed:
        {
            if (!multiplayerEvent.err())
            {
                ss << _T("Local member prop write complete.");
            }
            else
            {
                ss << _T("Local member prop write failed.");
            }
            break;
        }

        case multiplayer_event_type::local_member_connection_address_write_completed:
        {
            if (!multiplayerEvent.err())
            {
                ss << _T("Member conn addr write complete");
            }
            else
            {
                ss << _T("Member conn addr write failed.");
            }
            break;
        }

        case multiplayer_event_type::session_property_write_completed:
        {
            if (!multiplayerEvent.err())
            {
                ss << _T("Session property write complete.");
            }
            else
            {
                ss << _T("Session property write failed.");
            }
            break;
        }

        case multiplayer_event_type::session_synchronized_property_write_completed:
        {
            if (!multiplayerEvent.err())
            {
                ss << _T("Synchronized prop write complete.");
            }
            else
            {
                ss << _T("Synchronized prop write failed.");
            }
            break;
        }

        case multiplayer_event_type::synchronized_host_write_completed:
        {
            if (!multiplayerEvent.err())
            {
                ss << _T("Synchronized host write complete.");
            }
            else
            {
                ss << _T("Synchronized host write failed.");
            }
            break;
        }

        case multiplayer_event_type::host_changed:
        {
            auto hostChangedArgs = std::dynamic_pointer_cast<host_changed_event_args>(multiplayerEvent.event_args());
            if (multiplayerEvent.session_type() == multiplayer_session_type::lobby_session)
            {
                ss << _T("Lobby Host changed.");
            }
            else
            {
                ss << _T("Game Host changed.");
            }
            break;
        }

        case multiplayer_event_type::join_game_completed:
        {
            if (!multiplayerEvent.err())
            {
                ss << _T("Join game completed.");
            }
            else
            {
            ss << _T("Join game failed.");
            }
            break;
        }

        case multiplayer_event_type::leave_game_completed:
        {
            if (!multiplayerEvent.err())
            {
                ss << _T("Leave game completed.");
            }
            else
            {
                ss << _T("Leave game failed.");
            }
            break;
        }

        case multiplayer_event_type::join_lobby_completed:
        {
            auto joinLobbyCompletedArgs = std::dynamic_pointer_cast<join_lobby_completed_event_args>(multiplayerEvent.event_args());
            if (!multiplayerEvent.err())
            {
                ss << _T("Join lobby completed.");
            }
            else
            {
                ss << _T("Join lobby failed.");
            }
            break;
        }

        case multiplayer_event_type::invite_sent:
        {
            if (!multiplayerEvent.err())
            {
                ss << _T("Invite sent.");
            }
            else
            {
                ss << _T("Invite failed.");
            }
            break;
        }

        case multiplayer_event_type::client_disconnected_from_multiplayer_service:
        {
            ss << _T("Client disconnected from MP.");
            break;
        }

        case multiplayer_event_type::find_match_completed:
        {
            auto findMatchCompletedArgs = std::dynamic_pointer_cast<find_match_completed_event_args>(multiplayerEvent.event_args());
            if (!multiplayerEvent.err())
            {
                ss << _T("Match succeeded.");
            }
            else
            {
                ss << _T("Match failed.");
            }
            break;
        }

        case multiplayer_event_type::perform_qos_measurements:
        {
#if QOS_ENABLED
            auto performQosArgs = std::dynamic_pointer_cast<perform_qos_measurements_event_args>(multiplayerEvent.event_args());
            g_sampleInstance->SetAddressToDeviceTokenMap(performQosArgs->connection_address_to_device_tokens());
            g_sampleInstance->perform_qos_measurements();
#endif
            break;
        }

        default:
            break;
        }

        m_displayEventQueue.push_back(ss.str());
        if (m_displayEventQueue.size() > EventQueueLen)
        {
            m_displayEventQueue.erase(m_displayEventQueue.begin());
        }
    }

    for (unsigned int i = 0; i < m_displayEventQueue.size(); ++i)
    {
        m_eventQueueConsole->WriteLine(m_displayEventQueue[i].c_str());
    }
}