summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinWX/NetPlay/PadMapDialog.cpp
diff options
context:
space:
mode:
authorJules Blok <jules.blok@gmail.com>2015-06-10 00:00:12 +0200
committerJules Blok <jules.blok@gmail.com>2015-06-10 00:00:12 +0200
commit7dfced21a2e5aac7195e0e1ad76468e30306766b (patch)
treebd671b639d3d911460b767caabad8fc8a759a6bf /Source/Core/DolphinWX/NetPlay/PadMapDialog.cpp
parentc25be031fc1031d795157d8344b87b7841145197 (diff)
parent7b0a65e295c784f9d573f2ef52d4e2a7b9bb2889 (diff)
Merge branch 'master' into stable
Diffstat (limited to 'Source/Core/DolphinWX/NetPlay/PadMapDialog.cpp')
-rw-r--r--Source/Core/DolphinWX/NetPlay/PadMapDialog.cpp106
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;
+ }
+}