diff options
| author | Jules Blok <jules.blok@gmail.com> | 2015-06-10 00:00:12 +0200 |
|---|---|---|
| committer | Jules Blok <jules.blok@gmail.com> | 2015-06-10 00:00:12 +0200 |
| commit | 7dfced21a2e5aac7195e0e1ad76468e30306766b (patch) | |
| tree | bd671b639d3d911460b767caabad8fc8a759a6bf /Source/Core/DolphinWX/NetPlay/PadMapDialog.cpp | |
| parent | c25be031fc1031d795157d8344b87b7841145197 (diff) | |
| parent | 7b0a65e295c784f9d573f2ef52d4e2a7b9bb2889 (diff) | |
Merge branch 'master' into stable
Diffstat (limited to 'Source/Core/DolphinWX/NetPlay/PadMapDialog.cpp')
| -rw-r--r-- | Source/Core/DolphinWX/NetPlay/PadMapDialog.cpp | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/Source/Core/DolphinWX/NetPlay/PadMapDialog.cpp b/Source/Core/DolphinWX/NetPlay/PadMapDialog.cpp new file mode 100644 index 0000000000..5e6d3798cb --- /dev/null +++ b/Source/Core/DolphinWX/NetPlay/PadMapDialog.cpp @@ -0,0 +1,106 @@ +// Copyright 2015 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include <wx/choice.h> +#include <wx/sizer.h> +#include <wx/stattext.h> + +#include "Core/NetPlayClient.h" +#include "Core/NetPlayProto.h" +#include "DolphinWX/NetPlay/PadMapDialog.h" + +PadMapDialog::PadMapDialog(wxWindow* parent, PadMapping map[], PadMapping wiimotemap[], std::vector<const Player*>& player_list) + : wxDialog(parent, wxID_ANY, _("Configure Pads")) + , m_mapping(map) + , m_wiimapping(wiimotemap) + , m_player_list(player_list) +{ + wxBoxSizer* const h_szr = new wxBoxSizer(wxHORIZONTAL); + h_szr->AddSpacer(10); + + wxArrayString player_names; + player_names.Add(_("None")); + for (auto& player : m_player_list) + player_names.Add(player->name); + + for (unsigned int i = 0; i < 4; ++i) + { + wxBoxSizer* const v_szr = new wxBoxSizer(wxVERTICAL); + v_szr->Add(new wxStaticText(this, wxID_ANY, (wxString(_("Pad ")) + (wxChar)('0' + i))), + 1, wxALIGN_CENTER_HORIZONTAL); + + m_map_cbox[i] = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, player_names); + m_map_cbox[i]->Bind(wxEVT_CHOICE, &PadMapDialog::OnAdjust, this); + if (m_mapping[i] == -1) + { + m_map_cbox[i]->Select(0); + } + else + { + for (unsigned int j = 0; j < m_player_list.size(); j++) + { + if (m_mapping[i] == m_player_list[j]->pid) + m_map_cbox[i]->Select(j + 1); + } + } + + v_szr->Add(m_map_cbox[i], 1); + + h_szr->Add(v_szr, 1, wxTOP | wxEXPAND, 20); + h_szr->AddSpacer(10); + } + + for (unsigned int i = 0; i < 4; ++i) + { + wxBoxSizer* const v_szr = new wxBoxSizer(wxVERTICAL); + v_szr->Add(new wxStaticText(this, wxID_ANY, (wxString(_("Wiimote ")) + (wxChar)('0' + i))), + 1, wxALIGN_CENTER_HORIZONTAL); + + m_map_cbox[i + 4] = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, player_names); + m_map_cbox[i + 4]->Bind(wxEVT_CHOICE, &PadMapDialog::OnAdjust, this); + if (m_wiimapping[i] == -1) + { + m_map_cbox[i + 4]->Select(0); + } + else + { + for (unsigned int j = 0; j < m_player_list.size(); j++) + { + if (m_wiimapping[i] == m_player_list[j]->pid) + m_map_cbox[i + 4]->Select(j + 1); + } + } + + v_szr->Add(m_map_cbox[i + 4], 1); + + h_szr->Add(v_szr, 1, wxTOP | wxEXPAND, 20); + h_szr->AddSpacer(10); + } + + wxBoxSizer* const main_szr = new wxBoxSizer(wxVERTICAL); + main_szr->Add(h_szr); + main_szr->AddSpacer(5); + main_szr->Add(CreateButtonSizer(wxOK), 0, wxEXPAND | wxLEFT | wxRIGHT, 20); + main_szr->AddSpacer(5); + SetSizerAndFit(main_szr); + SetFocus(); +} + +void PadMapDialog::OnAdjust(wxCommandEvent& WXUNUSED(event)) +{ + for (unsigned int i = 0; i < 4; i++) + { + int player_idx = m_map_cbox[i]->GetSelection(); + if (player_idx > 0) + m_mapping[i] = m_player_list[player_idx - 1]->pid; + else + m_mapping[i] = -1; + + player_idx = m_map_cbox[i + 4]->GetSelection(); + if (player_idx > 0) + m_wiimapping[i] = m_player_list[player_idx - 1]->pid; + else + m_wiimapping[i] = -1; + } +} |
