mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-08-01 02:29:59 -06:00
Adding option to save and load state by timestamp
Load by timestamp: load last state is expanded from 1 to 8 actions, for newest to oldest state Save by timestamp: overwrite the oldest state (or use an empty slot if available) Adding remaining hardcoded state keys to hotkey dialog Adding a program exit hotkey
This commit is contained in:
@ -150,26 +150,25 @@ void CFrame::CreateMenu()
|
||||
emulationMenu->Append(IDM_SAVESTATE, _("Sa&ve State"), saveMenu);
|
||||
|
||||
saveMenu->Append(IDM_SAVESTATEFILE, _("Save State..."));
|
||||
loadMenu->Append(IDM_UNDOSAVESTATE, _("Last Overwritten State") + wxString(wxT("\tF12")));
|
||||
saveMenu->Append(IDM_SAVEFIRSTSTATE, GetMenuLabel(HK_SAVE_FIRST_STATE));
|
||||
loadMenu->Append(IDM_UNDOSAVESTATE, GetMenuLabel(HK_UNDO_SAVE_STATE));
|
||||
saveMenu->AppendSeparator();
|
||||
|
||||
loadMenu->Append(IDM_LOADSTATEFILE, _("Load State..."));
|
||||
|
||||
// Reserve F11 for the "step into" function in the debugger
|
||||
if (g_pCodeWindow)
|
||||
loadMenu->Append(IDM_LOADLASTSTATE, _("Last Saved State"));
|
||||
else
|
||||
loadMenu->Append(IDM_LOADLASTSTATE, _("Last Saved State") + wxString(wxT("\tF11")));
|
||||
|
||||
loadMenu->Append(IDM_UNDOLOADSTATE, _("Undo Load State") + wxString(wxT("\tShift+F12")));
|
||||
loadMenu->Append(IDM_UNDOLOADSTATE, GetMenuLabel(HK_UNDO_LOAD_STATE));
|
||||
loadMenu->AppendSeparator();
|
||||
|
||||
for (int i = 1; i <= 8; i++)
|
||||
for (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));
|
||||
}
|
||||
|
||||
loadMenu->AppendSeparator();
|
||||
for (int i = 1; i <= State::NUM_STATES; i++)
|
||||
loadMenu->Append(IDM_LOADLAST1 + i - 1, GetMenuLabel(HK_LOAD_LAST_STATE_1 + i - 1));
|
||||
|
||||
m_MenuBar->Append(emulationMenu, _("&Emulation"));
|
||||
|
||||
// Options menu
|
||||
@ -360,6 +359,9 @@ wxString CFrame::GetMenuLabel(int Id)
|
||||
case HK_SCREENSHOT:
|
||||
Label = _("Take Screenshot");
|
||||
break;
|
||||
case HK_EXIT:
|
||||
Label = _("Exit");
|
||||
break;
|
||||
|
||||
case HK_WIIMOTE1_CONNECT:
|
||||
case HK_WIIMOTE2_CONNECT:
|
||||
@ -393,6 +395,22 @@ wxString CFrame::GetMenuLabel(int Id)
|
||||
Id - HK_SAVE_STATE_SLOT_1 + 1);
|
||||
break;
|
||||
|
||||
case HK_LOAD_LAST_STATE_1:
|
||||
case HK_LOAD_LAST_STATE_2:
|
||||
case HK_LOAD_LAST_STATE_3:
|
||||
case HK_LOAD_LAST_STATE_4:
|
||||
case HK_LOAD_LAST_STATE_5:
|
||||
case HK_LOAD_LAST_STATE_6:
|
||||
case HK_LOAD_LAST_STATE_7:
|
||||
case HK_LOAD_LAST_STATE_8:
|
||||
Label = wxString::Format(_("Last %i"),
|
||||
Id - HK_LOAD_LAST_STATE_1 + 1);
|
||||
break;
|
||||
|
||||
case HK_SAVE_FIRST_STATE: Label = wxString("Save Oldest State"); break;
|
||||
case HK_UNDO_LOAD_STATE: Label = wxString("Undo Load State"); break;
|
||||
case HK_UNDO_SAVE_STATE: Label = wxString("Undo Save State"); break;
|
||||
|
||||
default:
|
||||
Label = wxString::Format(_("Undefined %i"), Id);
|
||||
}
|
||||
@ -1437,10 +1455,20 @@ void CFrame::OnSaveStateToFile(wxCommandEvent& WXUNUSED (event))
|
||||
State::SaveAs(WxStrToStr(path));
|
||||
}
|
||||
|
||||
void CFrame::OnLoadLastState(wxCommandEvent& WXUNUSED (event))
|
||||
void CFrame::OnLoadLastState(wxCommandEvent& event)
|
||||
{
|
||||
if (Core::IsRunningAndStarted())
|
||||
State::LoadLastSaved();
|
||||
{
|
||||
int id = event.GetId();
|
||||
int slot = id - IDM_LOADLAST1 + 1;
|
||||
State::LoadLastSaved(slot);
|
||||
}
|
||||
}
|
||||
|
||||
void CFrame::OnSaveFirstState(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
if (Core::GetState() != Core::CORE_UNINITIALIZED)
|
||||
State::SaveFirstSaved();
|
||||
}
|
||||
|
||||
void CFrame::OnUndoLoadState(wxCommandEvent& WXUNUSED (event))
|
||||
|
Reference in New Issue
Block a user