Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add hotkeys to select save state slots and to save/load the currently se... #1096

Merged
merged 1 commit into from
Sep 20, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
13 changes: 13 additions & 0 deletions Source/Core/Core/ConfigManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,19 @@ static const struct
{ "SaveStateSlot9", 0, 0 /* wxMOD_NONE */ },
{ "SaveStateSlot10", 0, 0 /* wxMOD_NONE */ },

{ "SelectStateSlot1", 0 , 0 },
{ "SelectStateSlot2", 0 , 0 },
{ "SelectStateSlot3", 0, 0 },
{ "SelectStateSlot4", 0 , 0 },
{ "SelectStateSlot5", 0 , 0 },
{ "SelectStateSlot6", 0 , 0 },
{ "SelectStateSlot7", 0 , 0 },
{ "SelectStateSlot8", 0 , 0 },
{ "SelectStateSlot9", 0 , 0 },
{ "SelectStateSlot10", 0 , 0 },
{ "SaveSelectedSlot", 0 , 0 },
{ "LoadSelectedSlot", 0 , 0 },

{ "LoadLastState1", 0, 0 /* wxMOD_NONE */ },
{ "LoadLastState2", 0, 0 /* wxMOD_NONE */ },
{ "LoadLastState3", 0, 0 /* wxMOD_NONE */ },
Expand Down
14 changes: 14 additions & 0 deletions Source/Core/Core/CoreParameter.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,20 @@ enum Hotkey
HK_SAVE_STATE_SLOT_9,
HK_SAVE_STATE_SLOT_10,

HK_SELECT_STATE_SLOT_1,
HK_SELECT_STATE_SLOT_2,
HK_SELECT_STATE_SLOT_3,
HK_SELECT_STATE_SLOT_4,
HK_SELECT_STATE_SLOT_5,
HK_SELECT_STATE_SLOT_6,
HK_SELECT_STATE_SLOT_7,
HK_SELECT_STATE_SLOT_8,
HK_SELECT_STATE_SLOT_9,
HK_SELECT_STATE_SLOT_10,

HK_SAVE_STATE_SLOT_SELECTED,
HK_LOAD_STATE_SLOT_SELECTED,

HK_LOAD_LAST_STATE_1,
HK_LOAD_LAST_STATE_2,
HK_LOAD_LAST_STATE_3,
Expand Down
36 changes: 36 additions & 0 deletions Source/Core/DolphinWX/Frame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ extern "C" {
#include "DolphinWX/resources/Dolphin.c" // NOLINT: Dolphin icon
};

int g_saveSlot = 1;

CRenderFrame::CRenderFrame(wxFrame* parent, wxWindowID id, const wxString& title,
const wxPoint& pos, const wxSize& size, long style)
Expand Down Expand Up @@ -276,10 +277,13 @@ EVT_MENU(IDM_UNDOLOADSTATE, CFrame::OnUndoLoadState)
EVT_MENU(IDM_UNDOSAVESTATE, CFrame::OnUndoSaveState)
EVT_MENU(IDM_LOADSTATEFILE, CFrame::OnLoadStateFromFile)
EVT_MENU(IDM_SAVESTATEFILE, CFrame::OnSaveStateToFile)
EVT_MENU(IDM_SAVESELECTEDSLOT, CFrame::OnSaveCurrentSlot)
EVT_MENU(IDM_LOADSELECTEDSLOT, CFrame::OnLoadCurrentSlot)

EVT_MENU_RANGE(IDM_LOADSLOT1, IDM_LOADSLOT10, CFrame::OnLoadState)
EVT_MENU_RANGE(IDM_LOADLAST1, IDM_LOADLAST8, CFrame::OnLoadLastState)
EVT_MENU_RANGE(IDM_SAVESLOT1, IDM_SAVESLOT10, CFrame::OnSaveState)
EVT_MENU_RANGE(IDM_SELECTSLOT1, IDM_SELECTSLOT10, CFrame::OnSelectSlot)
EVT_MENU_RANGE(IDM_FRAMESKIP0, IDM_FRAMESKIP9, CFrame::OnFrameSkip)
EVT_MENU_RANGE(IDM_DRIVE1, IDM_DRIVE24, CFrame::OnBootDrive)
EVT_MENU_RANGE(IDM_CONNECT_WIIMOTE1, IDM_CONNECT_BALANCEBOARD, CFrame::OnConnectWiimote)
Expand Down Expand Up @@ -931,6 +935,19 @@ int GetCmdForHotkey(unsigned int key)
case HK_UNDO_SAVE_STATE: return IDM_UNDOSAVESTATE;
case HK_LOAD_STATE_FILE: return IDM_LOADSTATEFILE;
case HK_SAVE_STATE_FILE: return IDM_SAVESTATEFILE;

case HK_SELECT_STATE_SLOT_1: return IDM_SELECTSLOT1;
case HK_SELECT_STATE_SLOT_2: return IDM_SELECTSLOT2;
case HK_SELECT_STATE_SLOT_3: return IDM_SELECTSLOT3;
case HK_SELECT_STATE_SLOT_4: return IDM_SELECTSLOT4;
case HK_SELECT_STATE_SLOT_5: return IDM_SELECTSLOT5;
case HK_SELECT_STATE_SLOT_6: return IDM_SELECTSLOT6;
case HK_SELECT_STATE_SLOT_7: return IDM_SELECTSLOT7;
case HK_SELECT_STATE_SLOT_8: return IDM_SELECTSLOT8;
case HK_SELECT_STATE_SLOT_9: return IDM_SELECTSLOT9;
case HK_SELECT_STATE_SLOT_10: return IDM_SELECTSLOT10;
case HK_SAVE_STATE_SLOT_SELECTED: return IDM_SAVESELECTEDSLOT;
case HK_LOAD_STATE_SLOT_SELECTED: return IDM_LOADSELECTEDSLOT;
}

return -1;
Expand Down Expand Up @@ -1052,8 +1069,27 @@ void CFrame::OnKeyDown(wxKeyEvent& event)
if (--SConfig::GetInstance().m_Framelimit > 0x19)
SConfig::GetInstance().m_Framelimit = 0x19;
}
else if (IsHotkey(event, HK_SAVE_STATE_SLOT_SELECTED))
{
State::Save(g_saveSlot);
}
else if (IsHotkey(event, HK_LOAD_STATE_SLOT_SELECTED))
{
State::Load(g_saveSlot);
}

This comment was marked as off-topic.

else
{
for (int i = HK_SELECT_STATE_SLOT_1; i < HK_SELECT_STATE_SLOT_10; ++i)
{
if (IsHotkey (event, i))
{
wxCommandEvent slot_event;
slot_event.SetId(i + IDM_SELECTSLOT1 - HK_SELECT_STATE_SLOT_1);
CFrame::OnSelectSlot(slot_event);
}
}

unsigned int i = NUM_HOTKEYS;
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain || TASInputHasFocus())
{
Expand Down
5 changes: 5 additions & 0 deletions Source/Core/DolphinWX/Frame.h
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,10 @@ class CFrame : public CRenderFrame
void StartGame(const std::string& filename);
void OnChangeColumnsVisible(wxCommandEvent& event);

void OnSelectSlot(wxCommandEvent& event);
void OnSaveCurrentSlot(wxCommandEvent& event);
void OnLoadCurrentSlot(wxCommandEvent& event);

// Event table
DECLARE_EVENT_TABLE();
};
Expand All @@ -343,3 +347,4 @@ void OnStoppedCallback();
// For TASInputDlg
void TASManipFunction(GCPadStatus* PadStatus, int controllerID);
bool TASInputHasFocus();
extern int g_saveSlot;
49 changes: 48 additions & 1 deletion Source/Core/DolphinWX/FrameTools.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -185,23 +185,27 @@ wxMenuBar* CFrame::CreateMenu()
emulationMenu->AppendSeparator();
wxMenu *saveMenu = new wxMenu;
wxMenu *loadMenu = new wxMenu;
wxMenu *slotSelectMenu = new wxMenu;
emulationMenu->Append(IDM_LOADSTATE, _("&Load State"), loadMenu);
emulationMenu->Append(IDM_SAVESTATE, _("Sa&ve State"), saveMenu);
emulationMenu->Append(IDM_SELECTSLOT, _("Select State slot"), slotSelectMenu);

saveMenu->Append(IDM_SAVESTATEFILE, GetMenuLabel(HK_SAVE_STATE_FILE));
saveMenu->Append(IDM_SAVESELECTEDSLOT, GetMenuLabel(HK_SAVE_STATE_SLOT_SELECTED));
saveMenu->Append(IDM_SAVEFIRSTSTATE, GetMenuLabel(HK_SAVE_FIRST_STATE));
loadMenu->Append(IDM_UNDOSAVESTATE, GetMenuLabel(HK_UNDO_SAVE_STATE));
saveMenu->AppendSeparator();

loadMenu->Append(IDM_LOADSTATEFILE, GetMenuLabel(HK_LOAD_STATE_FILE));

loadMenu->Append(IDM_LOADSELECTEDSLOT, GetMenuLabel(HK_LOAD_STATE_SLOT_SELECTED));
loadMenu->Append(IDM_UNDOLOADSTATE, GetMenuLabel(HK_UNDO_LOAD_STATE));
loadMenu->AppendSeparator();

for (unsigned int i = 1; i <= State::NUM_STATES; i++)
{
loadMenu->Append(IDM_LOADSLOT1 + i - 1, GetMenuLabel(HK_LOAD_STATE_SLOT_1 + i - 1));
saveMenu->Append(IDM_SAVESLOT1 + i - 1, GetMenuLabel(HK_SAVE_STATE_SLOT_1 + i - 1));
slotSelectMenu->Append(IDM_SELECTSLOT1 + i - 1, GetMenuLabel(HK_SELECT_STATE_SLOT_1 + i -1));
}

loadMenu->AppendSeparator();
Expand Down Expand Up @@ -477,6 +481,28 @@ wxString CFrame::GetMenuLabel(int Id)
case HK_UNDO_LOAD_STATE: Label = _("Undo Load State"); break;
case HK_UNDO_SAVE_STATE: Label = _("Undo Save State"); break;

case HK_SAVE_STATE_SLOT_SELECTED:
Label = _("Save state to selected slot");
break;

case HK_LOAD_STATE_SLOT_SELECTED:
Label = _("load state from selected slot");
break;

case HK_SELECT_STATE_SLOT_1:
case HK_SELECT_STATE_SLOT_2:
case HK_SELECT_STATE_SLOT_3:
case HK_SELECT_STATE_SLOT_4:
case HK_SELECT_STATE_SLOT_5:
case HK_SELECT_STATE_SLOT_6:
case HK_SELECT_STATE_SLOT_7:
case HK_SELECT_STATE_SLOT_8:
case HK_SELECT_STATE_SLOT_9:
case HK_SELECT_STATE_SLOT_10:
Label = wxString::Format(_("Select Slot %i"), Id - HK_SELECT_STATE_SLOT_1 + 1);
break;


default:
Label = wxString::Format(_("Undefined %i"), Id);
}
Expand Down Expand Up @@ -1602,6 +1628,27 @@ void CFrame::OnFrameSkip(wxCommandEvent& event)
SConfig::GetInstance().m_FrameSkip = amount;
}

void CFrame::OnSelectSlot(wxCommandEvent& event)
{
g_saveSlot = event.GetId() - IDM_SELECTSLOT1 + 1;
Core::DisplayMessage(StringFromFormat("Selected slot %d", g_saveSlot), 1000);
}

void CFrame::OnLoadCurrentSlot(wxCommandEvent& event)
{
if (Core::IsRunningAndStarted())
{
State::Load(g_saveSlot);
}
}

void CFrame::OnSaveCurrentSlot(wxCommandEvent& event)
{
if (Core::IsRunningAndStarted())
{
State::Save(g_saveSlot);
}
}



Expand Down
13 changes: 13 additions & 0 deletions Source/Core/DolphinWX/Globals.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ enum
{
IDM_LOADSTATE = 200, // File menu
IDM_SAVESTATE,
IDM_SELECTSLOT,
IDM_SAVEFIRSTSTATE,
IDM_UNDOLOADSTATE,
IDM_UNDOSAVESTATE,
Expand Down Expand Up @@ -57,6 +58,18 @@ enum
IDM_LOADLAST6,
IDM_LOADLAST7,
IDM_LOADLAST8,
IDM_SELECTSLOT1,
IDM_SELECTSLOT2,
IDM_SELECTSLOT3,
IDM_SELECTSLOT4,
IDM_SELECTSLOT5,
IDM_SELECTSLOT6,
IDM_SELECTSLOT7,
IDM_SELECTSLOT8,
IDM_SELECTSLOT9,
IDM_SELECTSLOT10,
IDM_SAVESELECTEDSLOT,
IDM_LOADSELECTEDSLOT,
IDM_FRAMESKIP0,
IDM_FRAMESKIP1,
IDM_FRAMESKIP2,
Expand Down
14 changes: 14 additions & 0 deletions Source/Core/DolphinWX/HotkeyDlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,20 @@ void HotkeyConfigDialog::CreateHotkeyGUIControls()
_("Save State Slot 9"),
_("Save State Slot 10"),

_("Select State Slot 1"),
_("Select State Slot 2"),
_("Select State Slot 3"),
_("Select State Slot 4"),
_("Select State Slot 5"),
_("Select State Slot 6"),
_("Select State Slot 7"),
_("Select State Slot 8"),
_("Select State Slot 9"),
_("Select State Slot 10"),

_("Save to selected slot"),
_("Load from selected slot"),

_("Load State Last 1"),
_("Load State Last 2"),
_("Load State Last 3"),
Expand Down