-Add delete sram/snapshot option by Zopenko

This commit is contained in:
Askot 2016-09-17 20:46:33 -07:00
parent 123326b5f9
commit 00a1df59cc
5 changed files with 104 additions and 6 deletions

View File

@ -93,6 +93,8 @@ extern const u8 icon_game_load_png[];
extern const u32 icon_game_load_png_size; extern const u32 icon_game_load_png_size;
extern const u8 icon_game_save_png[]; extern const u8 icon_game_save_png[];
extern const u32 icon_game_save_png_size; extern const u32 icon_game_save_png_size;
extern const u8 icon_game_delete_png[];
extern const u32 icon_game_delete_png_size;
extern const u8 icon_game_reset_png[]; extern const u8 icon_game_reset_png[];
extern const u32 icon_game_reset_png_size; extern const u32 icon_game_reset_png_size;

View File

@ -24,6 +24,8 @@ GuiSaveBrowser::GuiSaveBrowser(int w, int h, SaveList * s, int a)
if(action == 0) // load if(action == 0) // load
listOffset = 0; listOffset = 0;
else if(action == 2) // delete SRAM / Snapshot
listOffset = 0;
else else
listOffset = -2; // save - reserve -2 & -1 for new slots listOffset = -2; // save - reserve -2 & -1 for new slots
@ -257,7 +259,8 @@ void GuiSaveBrowser::Update(GuiTrigger * t)
if(selectedItem == 0) if(selectedItem == 0)
{ {
if((listOffset - 2 >= 0 && action == 0) || if((listOffset - 2 >= 0 && action == 0) ||
(listOffset >= 0 && action == 1)) (listOffset >= 0 && action == 1) ||
(listOffset - 2 >= 0 && action == 2))
{ {
// move list up by 1 // move list up by 1
listOffset -= 2; listOffset -= 2;
@ -295,7 +298,8 @@ void GuiSaveBrowser::Update(GuiTrigger * t)
if(selectedItem < 2) if(selectedItem < 2)
{ {
if((listOffset - 2 >= 0 && action == 0) || if((listOffset - 2 >= 0 && action == 0) ||
(listOffset >= 0 && action == 1)) (listOffset >= 0 && action == 1) ||
(listOffset - 2 >= 0 && action == 2))
{ {
// move list up by 1 // move list up by 1
listOffset -= 2; listOffset -= 2;

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

@ -1230,6 +1230,7 @@ static int MenuGame()
GuiImageData iconGameSettings(icon_game_settings_png); GuiImageData iconGameSettings(icon_game_settings_png);
GuiImageData iconLoad(icon_game_load_png); GuiImageData iconLoad(icon_game_load_png);
GuiImageData iconSave(icon_game_save_png); GuiImageData iconSave(icon_game_save_png);
GuiImageData iconDelete(icon_game_delete_png);
GuiImageData iconReset(icon_game_reset_png); GuiImageData iconReset(icon_game_reset_png);
GuiImageData battery(battery_png); GuiImageData battery(battery_png);
@ -1245,7 +1246,7 @@ static int MenuGame()
GuiImage saveBtnIcon(&iconSave); GuiImage saveBtnIcon(&iconSave);
GuiButton saveBtn(btnLargeOutline.GetWidth(), btnLargeOutline.GetHeight()); GuiButton saveBtn(btnLargeOutline.GetWidth(), btnLargeOutline.GetHeight());
saveBtn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); saveBtn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
saveBtn.SetPosition(-125, 120); saveBtn.SetPosition(-200, 120);
saveBtn.SetLabel(&saveBtnTxt); saveBtn.SetLabel(&saveBtnTxt);
saveBtn.SetImage(&saveBtnImg); saveBtn.SetImage(&saveBtnImg);
saveBtn.SetImageOver(&saveBtnImgOver); saveBtn.SetImageOver(&saveBtnImgOver);
@ -1262,7 +1263,7 @@ static int MenuGame()
GuiImage loadBtnIcon(&iconLoad); GuiImage loadBtnIcon(&iconLoad);
GuiButton loadBtn(btnLargeOutline.GetWidth(), btnLargeOutline.GetHeight()); GuiButton loadBtn(btnLargeOutline.GetWidth(), btnLargeOutline.GetHeight());
loadBtn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); loadBtn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
loadBtn.SetPosition(125, 120); loadBtn.SetPosition(0, 120);
loadBtn.SetLabel(&loadBtnTxt); loadBtn.SetLabel(&loadBtnTxt);
loadBtn.SetImage(&loadBtnImg); loadBtn.SetImage(&loadBtnImg);
loadBtn.SetImageOver(&loadBtnImgOver); loadBtn.SetImageOver(&loadBtnImgOver);
@ -1273,6 +1274,56 @@ static int MenuGame()
loadBtn.SetTrigger(trig2); loadBtn.SetTrigger(trig2);
loadBtn.SetEffectGrow(); loadBtn.SetEffectGrow();
GuiText deleteBtnTxt("Delete", 22, (GXColor){0, 0, 0, 255});
GuiImage deleteBtnImg(&btnLargeOutline);
GuiImage deleteBtnImgOver(&btnLargeOutlineOver);
GuiImage deleteBtnIcon(&iconDelete);
GuiButton deleteBtn(btnLargeOutline.GetWidth(), btnLargeOutline.GetHeight());
deleteBtn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
deleteBtn.SetPosition(200, 120);
deleteBtn.SetLabel(&deleteBtnTxt);
deleteBtn.SetImage(&deleteBtnImg);
deleteBtn.SetImageOver(&deleteBtnImgOver);
deleteBtn.SetIcon(&deleteBtnIcon);
deleteBtn.SetSoundOver(&btnSoundOver);
deleteBtn.SetSoundClick(&btnSoundClick);
deleteBtn.SetTrigger(trigA);
deleteBtn.SetTrigger(trig2);
deleteBtn.SetEffectGrow();
// Boktai adds an extra button for setting the sun.
GuiText *sunBtnTxt = NULL;
GuiImage *sunBtnImg = NULL;
GuiImage *sunBtnImgOver = NULL;
GuiButton *sunBtn = NULL;
if (isBoktai) {
struct tm *newtime;
time_t long_time;
// regardless of the weather, there should be no sun at night time!
time(&long_time); // Get time as long integer.
newtime = localtime(&long_time); // Convert to local time.
if (newtime->tm_hour > 21 || newtime->tm_hour < 5)
{
sprintf(s, "Weather: Night Time");
} else sprintf(s, "Weather: %d%% sun", SunBars*10);
sunBtnTxt = new GuiText(s, 22, (GXColor){0, 0, 0, 255});
sunBtnTxt->SetWrap(true, btnLargeOutline.GetWidth()-30);
sunBtnImg = new GuiImage(&btnLargeOutline);
sunBtnImgOver = new GuiImage(&btnLargeOutlineOver);
sunBtn = new GuiButton(btnLargeOutline.GetWidth(), btnLargeOutline.GetHeight());
sunBtn->SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
sunBtn->SetPosition(0, 250);
sunBtn->SetLabel(sunBtnTxt);
sunBtn->SetImage(sunBtnImg);
sunBtn->SetImageOver(sunBtnImgOver);
sunBtn->SetSoundOver(&btnSoundOver);
sunBtn->SetSoundClick(&btnSoundClick);
sunBtn->SetTrigger(trigA);
sunBtn->SetTrigger(trig2);
sunBtn->SetEffectGrow();
}
GuiText resetBtnTxt("Reset", 22, (GXColor){0, 0, 0, 255}); GuiText resetBtnTxt("Reset", 22, (GXColor){0, 0, 0, 255});
GuiImage resetBtnImg(&btnLargeOutline); GuiImage resetBtnImg(&btnLargeOutline);
GuiImage resetBtnImgOver(&btnLargeOutlineOver); GuiImage resetBtnImgOver(&btnLargeOutlineOver);
@ -1386,6 +1437,7 @@ static int MenuGame()
w.Append(&titleTxt); w.Append(&titleTxt);
w.Append(&saveBtn); w.Append(&saveBtn);
w.Append(&loadBtn); w.Append(&loadBtn);
w.Append(&deleteBtn);
w.Append(&resetBtn); w.Append(&resetBtn);
w.Append(&gameSettingsBtn); w.Append(&gameSettingsBtn);
@ -1487,6 +1539,10 @@ static int MenuGame()
{ {
menu = MENU_GAME_LOAD; menu = MENU_GAME_LOAD;
} }
else if(deleteBtn.GetState() == STATE_CLICKED)
{
menu = MENU_GAME_DELETE;
}
else if(resetBtn.GetState() == STATE_CLICKED) else if(resetBtn.GetState() == STATE_CLICKED)
{ {
if (WindowPrompt("Reset Game", "Are you sure that you want to reset this game? Any unsaved progress will be lost.", "OK", "Cancel")) if (WindowPrompt("Reset Game", "Are you sure that you want to reset this game? Any unsaved progress will be lost.", "OK", "Cancel"))
@ -1603,6 +1659,7 @@ static int MenuGameSaves(int action)
int j = 0; int j = 0;
SaveList saves; SaveList saves;
char filepath[1024]; char filepath[1024];
char deletepath[1024];
char scrfile[1024]; char scrfile[1024];
char tmp[MAXJOLIET+1]; char tmp[MAXJOLIET+1];
struct stat filestat; struct stat filestat;
@ -1621,6 +1678,8 @@ static int MenuGameSaves(int action)
if(action == 0) if(action == 0)
titleTxt.SetText("Load Game"); titleTxt.SetText("Load Game");
else if (action == 2)
titleTxt.SetText("Delete Saves");
else else
titleTxt.SetText("Save Game"); titleTxt.SetText("Save Game");
@ -1729,7 +1788,7 @@ static int MenuGameSaves(int action)
FreeSaveBuffer(); FreeSaveBuffer();
saves.length = j; saves.length = j;
if(saves.length == 0 && action == 0) if((saves.length == 0 && action == 0) || (saves.length == 0 && action == 2))
{ {
InfoPrompt("No game saves found."); InfoPrompt("No game saves found.");
menu = MENU_GAME; menu = MENU_GAME;
@ -1750,7 +1809,7 @@ static int MenuGameSaves(int action)
ret = saveBrowser.GetClickedSave(); ret = saveBrowser.GetClickedSave();
// load or save game // load, save and delete save games
if(ret > -3) if(ret > -3)
{ {
int result = 0; int result = 0;
@ -1769,6 +1828,35 @@ static int MenuGameSaves(int action)
} }
if(result) if(result)
menu = MENU_EXIT; menu = MENU_EXIT;
}
else if(action == 2) // delete SRAM/Snapshot
{
if (WindowPrompt("Delete File", "Delete this save file? Deleted files can not be restored.", "OK", "Cancel"))
{
MakeFilePath(filepath, saves.type[ret], saves.filename[ret]);
switch(saves.type[ret])
{
case FILE_SRAM:
strncpy(deletepath, filepath, 1024);
deletepath[strlen(deletepath)-4] = 0;
sprintf(deletepath, "%s.sav", deletepath);
remove(deletepath); // Delete the *.srm file (Battery save file)
break;
case FILE_SNAPSHOT:
strncpy(deletepath, filepath, 1024);
deletepath[strlen(deletepath)-4] = 0;
sprintf(deletepath, "%s.png", deletepath);
remove(deletepath); // Delete the *.png file (Screenshot file)
strncpy(deletepath, filepath, 1024);
deletepath[strlen(deletepath)-4] = 0;
sprintf(deletepath, "%s.sgm", deletepath);
remove(deletepath); // Delete the *.frz file (Save State file)
break;
}
}
menu = MENU_GAME_DELETE;
} }
else // save else // save
{ {
@ -4053,6 +4141,9 @@ MainMenu (int menu)
case MENU_GAME_SAVE: case MENU_GAME_SAVE:
currentMenu = MenuGameSaves(1); currentMenu = MenuGameSaves(1);
break; break;
case MENU_GAME_DELETE:
currentMenu = MenuGameSaves(2);
break;
case MENU_GAMESETTINGS: case MENU_GAMESETTINGS:
currentMenu = MenuGameSettings(); currentMenu = MenuGameSettings();
break; break;

View File

@ -35,6 +35,7 @@ enum
MENU_GAME, MENU_GAME,
MENU_GAME_SAVE, MENU_GAME_SAVE,
MENU_GAME_LOAD, MENU_GAME_LOAD,
MENU_GAME_DELETE,
MENU_GAMESETTINGS, MENU_GAMESETTINGS,
MENU_GAMESETTINGS_MAPPINGS, MENU_GAMESETTINGS_MAPPINGS,
MENU_GAMESETTINGS_MAPPINGS_CTRL, MENU_GAMESETTINGS_MAPPINGS_CTRL,