// Copyright 2013 Dolphin Emulator Project // Licensed under GPLv2 // Refer to the license.txt file included. #pragma once #include #include #include #include #include #include "Common/FifoQueue.h" #include "Core/NetPlayClient.h" #include "Core/NetPlayProto.h" class CGameListCtrl; class wxButton; class wxCheckBox; class wxChoice; class wxListBox; class wxString; class wxTextCtrl; class wxWindow; enum { NP_GUI_EVT_CHANGE_GAME = 45, NP_GUI_EVT_START_GAME, NP_GUI_EVT_STOP_GAME, }; class NetPlaySetupDiag : public wxFrame { public: NetPlaySetupDiag(wxWindow* const parent, const CGameListCtrl* const game_list); ~NetPlaySetupDiag(); private: void OnJoin(wxCommandEvent& event); void OnHost(wxCommandEvent& event); void OnQuit(wxCommandEvent& event); void MakeNetPlayDiag(int port, const std::string &game, bool is_hosting); wxTextCtrl* m_nickname_text; wxTextCtrl* m_host_port_text; wxTextCtrl* m_connect_port_text; wxTextCtrl* m_connect_ip_text; wxListBox* m_game_lbox; #ifdef USE_UPNP wxCheckBox* m_upnp_chk; #endif const CGameListCtrl* const m_game_list; }; class NetPlayDiag : public wxFrame, public NetPlayUI { public: NetPlayDiag(wxWindow* const parent, const CGameListCtrl* const game_list , const std::string& game, const bool is_hosting = false); ~NetPlayDiag(); Common::FifoQueue chat_msgs; void OnStart(wxCommandEvent& event); // implementation of NetPlayUI methods void BootGame(const std::string& filename) override; void StopGame() override; void Update() override; void AppendChat(const std::string& msg) override; void OnMsgChangeGame(const std::string& filename) override; void OnMsgStartGame() override; void OnMsgStopGame() override; static NetPlayDiag *&GetInstance() { return npd; }; bool IsRecording() override; private: DECLARE_EVENT_TABLE() void OnChat(wxCommandEvent& event); void OnQuit(wxCommandEvent& event); void OnThread(wxCommandEvent& event); void OnChangeGame(wxCommandEvent& event); void OnAdjustBuffer(wxCommandEvent& event); void OnConfigPads(wxCommandEvent& event); void OnKick(wxCommandEvent& event); void OnPlayerSelect(wxCommandEvent& event); void GetNetSettings(NetSettings &settings); std::string FindGame(); wxListBox* m_player_lbox; wxTextCtrl* m_chat_text; wxTextCtrl* m_chat_msg_text; wxCheckBox* m_memcard_write; wxCheckBox* m_record_chkbox; std::string m_selected_game; wxButton* m_game_btn; wxButton* m_start_btn; wxButton* m_kick_btn; std::vector m_playerids; const CGameListCtrl* const m_game_list; static NetPlayDiag* npd; }; class ChangeGameDiag : public wxDialog { public: ChangeGameDiag(wxWindow* const parent, const CGameListCtrl* const game_list, wxString& game_name); private: void OnPick(wxCommandEvent& event); wxListBox* m_game_lbox; wxString& m_game_name; }; class PadMapDiag : public wxDialog { public: PadMapDiag(wxWindow* const parent, PadMapping map[], PadMapping wiimotemap[], std::vector& player_list); private: void OnAdjust(wxCommandEvent& event); wxChoice* m_map_cbox[8]; PadMapping* const m_mapping; PadMapping* const m_wiimapping; std::vector& m_player_list; }; namespace NetPlay { void StopGame(); }