mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-13 10:18:30 +12:00
Add all the files
This commit is contained in:
parent
e3db07a16a
commit
d60742f52b
1445 changed files with 430238 additions and 0 deletions
220
src/gui/input/panels/VPADInputPanel.cpp
Normal file
220
src/gui/input/panels/VPADInputPanel.cpp
Normal file
|
@ -0,0 +1,220 @@
|
|||
#include "gui/input/panels/VPADInputPanel.h"
|
||||
|
||||
#include <wx/gbsizer.h>
|
||||
#include <wx/stattext.h>
|
||||
#include <wx/statline.h>
|
||||
#include <wx/textctrl.h>
|
||||
#include <wx/slider.h>
|
||||
|
||||
|
||||
#include "gui/helpers/wxControlObject.h"
|
||||
#include "gui/helpers/wxHelpers.h"
|
||||
#include "gui/components/wxInputDraw.h"
|
||||
#include "input/emulated/VPADController.h"
|
||||
|
||||
constexpr VPADController::ButtonId g_kFirstColumnItems[] =
|
||||
{
|
||||
VPADController::kButtonId_A, VPADController::kButtonId_B, VPADController::kButtonId_X, VPADController::kButtonId_Y,
|
||||
VPADController::kButtonId_L, VPADController::kButtonId_R, VPADController::kButtonId_ZL, VPADController::kButtonId_ZR,
|
||||
VPADController::kButtonId_Plus, VPADController::kButtonId_Minus
|
||||
};
|
||||
|
||||
constexpr VPADController::ButtonId g_kSecondColumnItems[] =
|
||||
{
|
||||
VPADController::kButtonId_StickL, VPADController::kButtonId_StickL_Up, VPADController::kButtonId_StickL_Down, VPADController::kButtonId_StickL_Left, VPADController::kButtonId_StickL_Right
|
||||
};
|
||||
|
||||
constexpr VPADController::ButtonId g_kThirdColumnItems[] =
|
||||
{
|
||||
VPADController::kButtonId_StickR, VPADController::kButtonId_StickR_Up, VPADController::kButtonId_StickR_Down, VPADController::kButtonId_StickR_Left, VPADController::kButtonId_StickR_Right
|
||||
};
|
||||
|
||||
constexpr VPADController::ButtonId g_kFourthRowItems[] =
|
||||
{
|
||||
VPADController::kButtonId_Up, VPADController::kButtonId_Down, VPADController::kButtonId_Left, VPADController::kButtonId_Right
|
||||
};
|
||||
|
||||
|
||||
VPADInputPanel::VPADInputPanel(wxWindow* parent)
|
||||
: InputPanel(parent)
|
||||
{
|
||||
auto bold_font = GetFont();
|
||||
bold_font.MakeBold();
|
||||
|
||||
auto* main_sizer = new wxGridBagSizer();
|
||||
|
||||
sint32 row = 0;
|
||||
sint32 column = 0;
|
||||
for (const auto& id : g_kFirstColumnItems)
|
||||
{
|
||||
row++;
|
||||
|
||||
main_sizer->Add(new wxStaticText(this, wxID_ANY, to_wxString(VPADController::get_button_name(id))), wxGBPosition(row, column), wxDefaultSpan, wxALL | wxALIGN_CENTER_VERTICAL, 5);
|
||||
|
||||
auto* text_ctrl = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB);
|
||||
text_ctrl->SetClientData((void*)id);
|
||||
text_ctrl->SetMinSize(wxSize(150, -1));
|
||||
text_ctrl->SetEditable(false);
|
||||
text_ctrl->SetBackgroundColour(kKeyColourNormalMode);
|
||||
bind_hotkey_events(text_ctrl);
|
||||
main_sizer->Add(text_ctrl, wxGBPosition(row, column + 1), wxDefaultSpan, wxALL | wxEXPAND, 5);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
|
||||
main_sizer->Add(new wxStaticLine(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxVERTICAL), wxGBPosition(0, column + 2), wxGBSpan(11, 1), wxALL | wxEXPAND, 5);
|
||||
|
||||
row = 0;
|
||||
column += 3;
|
||||
|
||||
auto text = new wxStaticText(this, wxID_ANY, _("Left Axis"));
|
||||
text->SetFont(bold_font);
|
||||
main_sizer->Add(text, wxGBPosition(row, column), wxGBSpan(1, 3), wxALL | wxEXPAND, 5);
|
||||
|
||||
for (const auto& id : g_kSecondColumnItems)
|
||||
{
|
||||
row++;
|
||||
|
||||
main_sizer->Add(new wxStaticText(this, wxID_ANY, to_wxString(VPADController::get_button_name(id))), wxGBPosition(row, column), wxDefaultSpan, wxALL | wxALIGN_CENTER_VERTICAL, 5);
|
||||
|
||||
auto* text_ctrl = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB);
|
||||
text_ctrl->SetClientData((void*)id);
|
||||
text_ctrl->SetMinSize(wxSize(150, -1));
|
||||
text_ctrl->SetEditable(false);
|
||||
text_ctrl->SetBackgroundColour(kKeyColourNormalMode);
|
||||
bind_hotkey_events(text_ctrl);
|
||||
main_sizer->Add(text_ctrl, wxGBPosition(row, column + 1), wxDefaultSpan, wxALL | wxEXPAND, 5);
|
||||
}
|
||||
|
||||
row++;
|
||||
|
||||
// input drawer
|
||||
m_left_draw = new wxInputDraw(this, wxID_ANY, wxDefaultPosition, { 60, 60 });
|
||||
main_sizer->Add(m_left_draw, wxGBPosition(row, column + 1), wxGBSpan(2, 1), wxTOP | wxBOTTOM | wxEXPAND | wxALIGN_CENTER, 5);
|
||||
|
||||
main_sizer->Add(new wxStaticLine(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxVERTICAL), wxGBPosition(0, column + 3), wxGBSpan(11, 1), wxALL | wxEXPAND, 5);
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
|
||||
row = 0;
|
||||
column += 4;
|
||||
|
||||
text = new wxStaticText(this, wxID_ANY, _("Right Axis"));
|
||||
text->SetFont(bold_font);
|
||||
main_sizer->Add(text, wxGBPosition(row, column), wxGBSpan(1, 3), wxALL | wxEXPAND, 5);
|
||||
|
||||
for (const auto& id : g_kThirdColumnItems)
|
||||
{
|
||||
row++;
|
||||
|
||||
main_sizer->Add(new wxStaticText(this, wxID_ANY, to_wxString(VPADController::get_button_name(id))), wxGBPosition(row, column), wxDefaultSpan, wxALL | wxALIGN_CENTER_VERTICAL, 5);
|
||||
|
||||
auto* text_ctrl = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB);
|
||||
text_ctrl->SetClientData((void*)id);
|
||||
text_ctrl->SetMinSize(wxSize(150, -1));
|
||||
text_ctrl->SetEditable(false);
|
||||
text_ctrl->SetBackgroundColour(kKeyColourNormalMode);
|
||||
bind_hotkey_events(text_ctrl);
|
||||
main_sizer->Add(text_ctrl, wxGBPosition(row, column + 1), wxDefaultSpan, wxALL | wxEXPAND, 5);
|
||||
}
|
||||
|
||||
row++;
|
||||
|
||||
// input drawer
|
||||
m_right_draw = new wxInputDraw(this, wxID_ANY, wxDefaultPosition, { 60, 60 });
|
||||
main_sizer->Add(m_right_draw, wxGBPosition(row, column + 1), wxGBSpan(2, 1), wxTOP | wxBOTTOM | wxEXPAND | wxALIGN_CENTER, 5);
|
||||
|
||||
// Volume
|
||||
row = 10;
|
||||
|
||||
text = new wxStaticText(this, wxID_ANY, _("Volume"));
|
||||
text->Disable();
|
||||
main_sizer->Add(text, wxGBPosition(row, column), wxDefaultSpan, wxALL, 5);
|
||||
|
||||
auto*m_volume = new wxSlider(this, wxID_ANY, 0, 0, 100);
|
||||
m_volume->Disable();
|
||||
main_sizer->Add(m_volume, wxGBPosition(row, column + 1), wxDefaultSpan, wxTOP | wxBOTTOM | wxEXPAND, 5);
|
||||
|
||||
const auto volume_text = new wxStaticText(this, wxID_ANY, wxString::Format("%d%%", 0));
|
||||
volume_text->Disable();
|
||||
main_sizer->Add(volume_text, wxGBPosition(row, column + 2), wxDefaultSpan, wxALL, 5);
|
||||
m_volume->Bind(wxEVT_SLIDER, &VPADInputPanel::OnVolumeChange, this, wxID_ANY, wxID_ANY, new wxControlObject(volume_text));
|
||||
|
||||
main_sizer->Add(new wxStaticLine(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxVERTICAL), wxGBPosition(0, column + 3), wxGBSpan(11, 1), wxALL | wxEXPAND, 5);
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
|
||||
row = 0;
|
||||
column += 4;
|
||||
|
||||
text = new wxStaticText(this, wxID_ANY, _("D-pad"));
|
||||
text->SetFont(bold_font);
|
||||
main_sizer->Add(text, wxGBPosition(row, column), wxGBSpan(1, 3), wxALL | wxEXPAND, 5);
|
||||
|
||||
for (const auto& id : g_kFourthRowItems)
|
||||
{
|
||||
row++;
|
||||
|
||||
main_sizer->Add(new wxStaticText(this, wxID_ANY, to_wxString(VPADController::get_button_name(id))), wxGBPosition(row, column), wxDefaultSpan, wxALL | wxALIGN_CENTER_VERTICAL, 5);
|
||||
|
||||
auto text_ctrl = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB);
|
||||
text_ctrl->SetClientData((void*)id);
|
||||
text_ctrl->SetMinSize(wxSize(150, -1));
|
||||
text_ctrl->SetEditable(false);
|
||||
text_ctrl->SetBackgroundColour(kKeyColourNormalMode);
|
||||
bind_hotkey_events(text_ctrl);
|
||||
main_sizer->Add(text_ctrl, wxGBPosition(row, column + 1), wxDefaultSpan, wxALL | wxEXPAND, 5);
|
||||
}
|
||||
|
||||
// Blow Mic
|
||||
row = 9;
|
||||
main_sizer->Add(new wxStaticText(this, wxID_ANY, _("blow mic")), wxGBPosition(row, column), wxDefaultSpan, wxALL | wxALIGN_CENTER_VERTICAL, 5);
|
||||
|
||||
auto text_ctrl = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB);
|
||||
text_ctrl->SetClientData((void*)VPADController::kButtonId_Mic);
|
||||
text_ctrl->SetMinSize(wxSize(150, -1));
|
||||
text_ctrl->SetEditable(false);
|
||||
text_ctrl->SetBackgroundColour(kKeyColourNormalMode);
|
||||
bind_hotkey_events(text_ctrl);
|
||||
main_sizer->Add(text_ctrl, wxGBPosition(row, column + 1), wxDefaultSpan, wxALL | wxEXPAND, 5);
|
||||
row++;
|
||||
|
||||
main_sizer->Add(new wxStaticText(this, wxID_ANY, _("show screen")), wxGBPosition(row, column), wxDefaultSpan, wxALL | wxALIGN_CENTER_VERTICAL, 5);
|
||||
|
||||
text_ctrl = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB);
|
||||
text_ctrl->SetClientData((void*)VPADController::kButtonId_Screen);
|
||||
text_ctrl->SetMinSize(wxSize(150, -1));
|
||||
text_ctrl->SetEditable(false);
|
||||
text_ctrl->SetBackgroundColour(kKeyColourNormalMode);
|
||||
bind_hotkey_events(text_ctrl);
|
||||
main_sizer->Add(text_ctrl, wxGBPosition(row, column + 1), wxDefaultSpan, wxALL | wxEXPAND, 5);
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
|
||||
//LoadController(controller);
|
||||
|
||||
SetSizer(main_sizer);
|
||||
Layout();
|
||||
|
||||
//SetSizerAndFit(main_sizer);
|
||||
//wxWindow::Show(show);
|
||||
}
|
||||
|
||||
void VPADInputPanel::on_timer(const EmulatedControllerPtr& emulated_controller, const ControllerPtr& controller_base)
|
||||
{
|
||||
InputPanel::on_timer(emulated_controller, controller_base);
|
||||
|
||||
if(emulated_controller)
|
||||
{
|
||||
const auto axis = emulated_controller->get_axis();
|
||||
const auto rotation = emulated_controller->get_rotation();
|
||||
|
||||
m_left_draw->SetAxisValue(axis);
|
||||
m_right_draw->SetAxisValue(rotation);
|
||||
}
|
||||
}
|
||||
|
||||
void VPADInputPanel::OnVolumeChange(wxCommandEvent& event)
|
||||
{
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue