Fixed #652: Increased save state slots to 10
This commit is contained in:
parent
44a57cbd41
commit
01fa60c141
3 changed files with 134 additions and 26 deletions
|
@ -474,6 +474,30 @@ int gui_update()
|
|||
strncat(savestate_fname,"-3.uss", MAX_DPATH - 1);
|
||||
strncat(screenshot_filename,"-3.png", MAX_DPATH - 1);
|
||||
break;
|
||||
case 4:
|
||||
strncat(savestate_fname, "-4.uss", MAX_DPATH - 1);
|
||||
strncat(screenshot_filename, "-4.png", MAX_DPATH - 1);
|
||||
break;
|
||||
case 5:
|
||||
strncat(savestate_fname, "-5.uss", MAX_DPATH - 1);
|
||||
strncat(screenshot_filename, "-5.png", MAX_DPATH - 1);
|
||||
break;
|
||||
case 6:
|
||||
strncat(savestate_fname, "-6.uss", MAX_DPATH - 1);
|
||||
strncat(screenshot_filename, "-6.png", MAX_DPATH - 1);
|
||||
break;
|
||||
case 7:
|
||||
strncat(savestate_fname, "-7.uss", MAX_DPATH - 1);
|
||||
strncat(screenshot_filename, "-7.png", MAX_DPATH - 1);
|
||||
break;
|
||||
case 8:
|
||||
strncat(savestate_fname, "-8.uss", MAX_DPATH - 1);
|
||||
strncat(screenshot_filename, "-8.png", MAX_DPATH - 1);
|
||||
break;
|
||||
case 9:
|
||||
strncat(savestate_fname, "-9.uss", MAX_DPATH - 1);
|
||||
strncat(screenshot_filename, "-9.png", MAX_DPATH - 1);
|
||||
break;
|
||||
default:
|
||||
strncat(savestate_fname,".uss", MAX_DPATH - 1);
|
||||
strncat(screenshot_filename,".png", MAX_DPATH - 1);
|
||||
|
|
|
@ -301,12 +301,18 @@ static NavigationMap navMap[] =
|
|||
{"KeyFullScreen", "KeyActionReplay", "KeyActionReplay", "KeyForQuit", "RetroArchQuit"},
|
||||
|
||||
// PanelSavestate
|
||||
{"State0", "Savestates", "Savestates", "LoadState", "State1"},
|
||||
{"State1", "Savestates", "Savestates", "State0", "State2"},
|
||||
{"State2", "Savestates", "Savestates", "State1", "State3"},
|
||||
{"State3", "Savestates", "Savestates", "State2", "LoadState"},
|
||||
{"LoadState", "Savestates", "SaveState", "State3", "State0"},
|
||||
{"SaveState", "LoadState", "Savestates", "State3", "State0"},
|
||||
{ "State0", "Savestates", "Savestates", "LoadState", "State1" },
|
||||
{ "State1", "Savestates", "Savestates", "State0", "State2" },
|
||||
{ "State2", "Savestates", "Savestates", "State1", "State3" },
|
||||
{ "State3", "Savestates", "Savestates", "State2", "State4" },
|
||||
{ "State4", "Savestates", "Savestates", "State3", "State5" },
|
||||
{ "State5", "Savestates", "Savestates", "State4", "State6" },
|
||||
{ "State6", "Savestates", "Savestates", "State5", "State7" },
|
||||
{ "State7", "Savestates", "Savestates", "State6", "State8" },
|
||||
{ "State8", "Savestates", "Savestates", "State7", "State9" },
|
||||
{ "State9", "Savestates", "Savestates", "State8", "LoadState" },
|
||||
{ "LoadState", "Savestates", "SaveState", "State9", "State0" },
|
||||
{ "SaveState", "LoadState", "Savestates", "State9", "State0" },
|
||||
|
||||
#ifdef ANDROID
|
||||
// PanelOnScreen
|
||||
|
|
|
@ -23,7 +23,14 @@ static gcn::RadioButton* optState0;
|
|||
static gcn::RadioButton* optState1;
|
||||
static gcn::RadioButton* optState2;
|
||||
static gcn::RadioButton* optState3;
|
||||
static gcn::Window* wndScreenshot;
|
||||
static gcn::RadioButton* optState4;
|
||||
static gcn::RadioButton* optState5;
|
||||
static gcn::RadioButton* optState6;
|
||||
static gcn::RadioButton* optState7;
|
||||
static gcn::RadioButton* optState8;
|
||||
static gcn::RadioButton* optState9;
|
||||
|
||||
static gcn::Window* grpScreenshot;
|
||||
static gcn::Icon* icoSavestate = nullptr;
|
||||
static gcn::Image* imgSavestate = nullptr;
|
||||
static gcn::Button* cmdLoadState;
|
||||
|
@ -44,6 +51,18 @@ public:
|
|||
currentStateNum = 2;
|
||||
else if (actionEvent.getSource() == optState3)
|
||||
currentStateNum = 3;
|
||||
else if (actionEvent.getSource() == optState4)
|
||||
currentStateNum = 4;
|
||||
else if (actionEvent.getSource() == optState5)
|
||||
currentStateNum = 5;
|
||||
else if (actionEvent.getSource() == optState6)
|
||||
currentStateNum = 6;
|
||||
else if (actionEvent.getSource() == optState7)
|
||||
currentStateNum = 7;
|
||||
else if (actionEvent.getSource() == optState8)
|
||||
currentStateNum = 8;
|
||||
else if (actionEvent.getSource() == optState9)
|
||||
currentStateNum = 9;
|
||||
else if (actionEvent.getSource() == cmdLoadState)
|
||||
{
|
||||
//------------------------------------------
|
||||
|
@ -116,30 +135,60 @@ void InitPanelSavestate(const struct _ConfigCategory& category)
|
|||
optState3->setId("State3");
|
||||
optState3->addActionListener(savestateActionListener);
|
||||
|
||||
optState4 = new gcn::RadioButton("4", "radiostategroup");
|
||||
optState4->setId("State4");
|
||||
optState4->addActionListener(savestateActionListener);
|
||||
|
||||
optState5 = new gcn::RadioButton("5", "radiostategroup");
|
||||
optState5->setId("State5");
|
||||
optState5->addActionListener(savestateActionListener);
|
||||
|
||||
optState6 = new gcn::RadioButton("6", "radiostategroup");
|
||||
optState6->setId("State6");
|
||||
optState6->addActionListener(savestateActionListener);
|
||||
|
||||
optState7 = new gcn::RadioButton("7", "radiostategroup");
|
||||
optState7->setId("State7");
|
||||
optState7->addActionListener(savestateActionListener);
|
||||
|
||||
optState8 = new gcn::RadioButton("8", "radiostategroup");
|
||||
optState8->setId("State8");
|
||||
optState8->addActionListener(savestateActionListener);
|
||||
|
||||
optState9 = new gcn::RadioButton("9", "radiostategroup");
|
||||
optState9->setId("State9");
|
||||
optState9->addActionListener(savestateActionListener);
|
||||
|
||||
grpNumber = new gcn::Window("Number");
|
||||
grpNumber->add(optState0, 5, 10);
|
||||
grpNumber->add(optState1, 5, 40);
|
||||
grpNumber->add(optState2, 5, 70);
|
||||
grpNumber->add(optState3, 5, 100);
|
||||
grpNumber->add(optState0, 10, 10);
|
||||
grpNumber->add(optState1, optState0->getX(), optState0->getY() + optState0->getHeight() + DISTANCE_NEXT_Y);
|
||||
grpNumber->add(optState2, optState0->getX(), optState1->getY() + optState1->getHeight() + DISTANCE_NEXT_Y);
|
||||
grpNumber->add(optState3, optState0->getX(), optState2->getY() + optState2->getHeight() + DISTANCE_NEXT_Y);
|
||||
grpNumber->add(optState4, optState0->getX(), optState3->getY() + optState3->getHeight() + DISTANCE_NEXT_Y);
|
||||
grpNumber->add(optState5, optState0->getX(), optState4->getY() + optState4->getHeight() + DISTANCE_NEXT_Y);
|
||||
grpNumber->add(optState6, optState0->getX(), optState5->getY() + optState5->getHeight() + DISTANCE_NEXT_Y);
|
||||
grpNumber->add(optState7, optState0->getX(), optState6->getY() + optState6->getHeight() + DISTANCE_NEXT_Y);
|
||||
grpNumber->add(optState8, optState0->getX(), optState7->getY() + optState7->getHeight() + DISTANCE_NEXT_Y);
|
||||
grpNumber->add(optState9, optState0->getX(), optState8->getY() + optState8->getHeight() + DISTANCE_NEXT_Y);
|
||||
grpNumber->setMovable(false);
|
||||
grpNumber->setSize(BUTTON_WIDTH, 155);
|
||||
grpNumber->setSize(BUTTON_WIDTH, BUTTON_WIDTH * 4);
|
||||
grpNumber->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
grpNumber->setBaseColor(gui_baseCol);
|
||||
|
||||
wndScreenshot = new gcn::Window("State screen");
|
||||
wndScreenshot->setMovable(false);
|
||||
wndScreenshot->setSize(300, 300);
|
||||
wndScreenshot->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
wndScreenshot->setBaseColor(gui_baseCol);
|
||||
grpScreenshot = new gcn::Window("State screen");
|
||||
grpScreenshot->setMovable(false);
|
||||
grpScreenshot->setSize(300, 300);
|
||||
grpScreenshot->setTitleBarHeight(TITLEBAR_HEIGHT);
|
||||
grpScreenshot->setBaseColor(gui_baseCol);
|
||||
|
||||
cmdLoadState = new gcn::Button("Load State");
|
||||
cmdLoadState->setSize(BUTTON_WIDTH, BUTTON_HEIGHT);
|
||||
cmdLoadState->setSize(BUTTON_WIDTH + 10, BUTTON_HEIGHT);
|
||||
cmdLoadState->setBaseColor(gui_baseCol);
|
||||
cmdLoadState->setId("LoadState");
|
||||
cmdLoadState->addActionListener(savestateActionListener);
|
||||
|
||||
cmdSaveState = new gcn::Button("Save State");
|
||||
cmdSaveState->setSize(BUTTON_WIDTH, BUTTON_HEIGHT);
|
||||
cmdSaveState->setSize(BUTTON_WIDTH + 10, BUTTON_HEIGHT);
|
||||
cmdSaveState->setBaseColor(gui_baseCol);
|
||||
cmdSaveState->setId("SaveState");
|
||||
cmdSaveState->addActionListener(savestateActionListener);
|
||||
|
@ -147,8 +196,7 @@ void InitPanelSavestate(const struct _ConfigCategory& category)
|
|||
lblWarningHDDon = new gcn::Label("State saves do not support hard drive emulation.");
|
||||
|
||||
category.panel->add(grpNumber, DISTANCE_BORDER, DISTANCE_BORDER);
|
||||
category.panel->add(wndScreenshot, grpNumber->getX() + grpNumber->getWidth() + DISTANCE_NEXT_X * 2,
|
||||
DISTANCE_BORDER);
|
||||
category.panel->add(grpScreenshot, grpNumber->getX() + grpNumber->getWidth() + DISTANCE_NEXT_X, DISTANCE_BORDER);
|
||||
const auto posY = category.panel->getHeight() - DISTANCE_BORDER - BUTTON_HEIGHT;
|
||||
category.panel->add(cmdLoadState, DISTANCE_BORDER, posY);
|
||||
category.panel->add(cmdSaveState, DISTANCE_BORDER + BUTTON_WIDTH + DISTANCE_NEXT_X, posY);
|
||||
|
@ -164,13 +212,19 @@ void ExitPanelSavestate()
|
|||
delete optState1;
|
||||
delete optState2;
|
||||
delete optState3;
|
||||
delete optState4;
|
||||
delete optState5;
|
||||
delete optState6;
|
||||
delete optState7;
|
||||
delete optState8;
|
||||
delete optState9;
|
||||
delete grpNumber;
|
||||
|
||||
delete imgSavestate;
|
||||
imgSavestate = nullptr;
|
||||
delete icoSavestate;
|
||||
icoSavestate = nullptr;
|
||||
delete wndScreenshot;
|
||||
delete grpScreenshot;
|
||||
|
||||
delete cmdLoadState;
|
||||
delete cmdSaveState;
|
||||
|
@ -184,7 +238,7 @@ void RefreshPanelSavestate()
|
|||
{
|
||||
if (icoSavestate != nullptr)
|
||||
{
|
||||
wndScreenshot->remove(icoSavestate);
|
||||
grpScreenshot->remove(icoSavestate);
|
||||
delete icoSavestate;
|
||||
icoSavestate = nullptr;
|
||||
}
|
||||
|
@ -208,6 +262,24 @@ void RefreshPanelSavestate()
|
|||
case 3:
|
||||
optState3->setSelected(true);
|
||||
break;
|
||||
case 4:
|
||||
optState4->setSelected(true);
|
||||
break;
|
||||
case 5:
|
||||
optState5->setSelected(true);
|
||||
break;
|
||||
case 6:
|
||||
optState6->setSelected(true);
|
||||
break;
|
||||
case 7:
|
||||
optState7->setSelected(true);
|
||||
break;
|
||||
case 8:
|
||||
optState8->setSelected(true);
|
||||
break;
|
||||
case 9:
|
||||
optState9->setSelected(true);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -219,7 +291,7 @@ void RefreshPanelSavestate()
|
|||
if (f)
|
||||
{
|
||||
fclose(f);
|
||||
const auto rect = wndScreenshot->getChildrenArea();
|
||||
const auto rect = grpScreenshot->getChildrenArea();
|
||||
auto* loadedImage = IMG_Load(screenshot_filename);
|
||||
if (loadedImage != nullptr)
|
||||
{
|
||||
|
@ -238,7 +310,7 @@ void RefreshPanelSavestate()
|
|||
loadedImage = nullptr;
|
||||
imgSavestate = new gcn::SDLImage(scaled, true);
|
||||
icoSavestate = new gcn::Icon(imgSavestate);
|
||||
wndScreenshot->add(icoSavestate);
|
||||
grpScreenshot->add(icoSavestate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -248,7 +320,13 @@ void RefreshPanelSavestate()
|
|||
optState1->setEnabled(enabled);
|
||||
optState2->setEnabled(enabled);
|
||||
optState3->setEnabled(enabled);
|
||||
wndScreenshot->setVisible(enabled);
|
||||
optState4->setEnabled(enabled);
|
||||
optState5->setEnabled(enabled);
|
||||
optState6->setEnabled(enabled);
|
||||
optState7->setEnabled(enabled);
|
||||
optState8->setEnabled(enabled);
|
||||
optState9->setEnabled(enabled);
|
||||
grpScreenshot->setVisible(enabled);
|
||||
cmdLoadState->setEnabled(enabled);
|
||||
cmdSaveState->setEnabled(enabled);
|
||||
lblWarningHDDon->setVisible(!enabled);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue