Finish renaming quicksave slot 0 to 10 (resolves #3112)

This commit is contained in:
YoshiRulz 2023-01-03 05:37:02 +10:00
parent 7f33a8836d
commit 007d862c58
No known key found for this signature in database
GPG Key ID: C4DE31C245353FB7
11 changed files with 68 additions and 75 deletions

View File

@ -5,6 +5,10 @@ namespace BizHawk.Client.Common
{
public sealed class SaveStateApi : ISaveStateApi
{
private const string ERR_MSG_NOT_A_SLOT = "saveslots are 1 through 10";
private const string ERR_MSG_USE_SLOT_10 = "pass 10 for slot 10, not 0";
private readonly IMainFormForApi _mainForm;
private readonly Action<string> LogCallback;
@ -28,14 +32,26 @@ namespace BizHawk.Client.Common
public void LoadSlot(int slotNum, bool suppressOSD)
{
if (slotNum is >= 0 and <= 9) _mainForm.LoadQuickSave(slotNum, suppressOSD: suppressOSD);
if (slotNum is < 0 or > 10) throw new ArgumentOutOfRangeException(paramName: nameof(slotNum), message: ERR_MSG_NOT_A_SLOT);
if (slotNum is 0)
{
LogCallback(ERR_MSG_USE_SLOT_10);
slotNum = 10;
}
_mainForm.LoadQuickSave(slotNum, suppressOSD: suppressOSD);
}
public void Save(string path, bool suppressOSD) => _mainForm.SaveState(path, path, true, suppressOSD);
public void SaveSlot(int slotNum, bool suppressOSD)
{
if (slotNum is >= 0 and <= 9) _mainForm.SaveQuickSave(slotNum, suppressOSD: suppressOSD, fromLua: true);
if (slotNum is < 0 or > 10) throw new ArgumentOutOfRangeException(paramName: nameof(slotNum), message: ERR_MSG_NOT_A_SLOT);
if (slotNum is 0)
{
LogCallback(ERR_MSG_USE_SLOT_10);
slotNum = 10;
}
_mainForm.SaveQuickSave(slotNum, suppressOSD: suppressOSD, fromLua: true);
}
}
}

View File

@ -1,4 +1,5 @@
using System.IO;
using System;
using System.IO;
using BizHawk.Common;
using BizHawk.Emulation.Common;
@ -22,21 +23,21 @@ namespace BizHawk.Client.Common
return;
}
for (int i = 0; i < 10; i++)
for (int i = 1; i <= 10; i++)
{
if (movie is ITasMovie tasMovie)
{
_slots[(i + 1) % 10] = i < tasMovie.Branches.Count;
_slots[i - 1] = (i - 1) < tasMovie.Branches.Count;
}
else
{
var file = new FileInfo($"{saveStatePrefix}.QuickSave{i}.State");
var file = new FileInfo($"{saveStatePrefix}.QuickSave{i % 10}.State");
if (file.Directory != null && file.Directory.Exists == false)
{
file.Directory.Create();
}
_slots[i] = file.Exists;
_slots[i - 1] = file.Exists;
}
}
}
@ -54,7 +55,7 @@ namespace BizHawk.Client.Common
}
Update(emulator, movie, savestatePrefix);
return _slots[slot];
return _slots[slot - 1];
}
public void ClearRedoList()
@ -67,10 +68,11 @@ namespace BizHawk.Client.Common
public void ToggleRedo(IMovie movie, int slot)
{
if (0.RangeTo(9).Contains(slot) && !(movie is ITasMovie)) _redo[slot] ^= true;
if (slot is >= 1 and <= 10 && movie is not ITasMovie) _redo[slot - 1] ^= true;
}
public bool IsRedo(IMovie movie, int slot) => 0.RangeTo(9).Contains(slot) && !(movie is ITasMovie) && _redo[slot];
public bool IsRedo(IMovie movie, int slot)
=> slot is >= 1 and <= 10 && movie is not ITasMovie && _redo[slot - 1];
public void SwapBackupSavestate(IMovie movie, string path, int currentSlot)
{

View File

@ -74,7 +74,7 @@ namespace BizHawk.Client.Common
Bind("Save States", "Save State 7", "Shift+F7");
Bind("Save States", "Save State 8", "Shift+F8");
Bind("Save States", "Save State 9", "Shift+F9");
Bind("Save States", "Save State 0", "Shift+F10");
Bind("Save States", "Save State 10", "Shift+F10");
Bind("Save States", "Load State 1", "F1");
Bind("Save States", "Load State 2", "F2");
Bind("Save States", "Load State 3", "F3");
@ -84,7 +84,7 @@ namespace BizHawk.Client.Common
Bind("Save States", "Load State 7", "F7");
Bind("Save States", "Load State 8", "F8");
Bind("Save States", "Load State 9", "F9");
Bind("Save States", "Load State 0", "F10");
Bind("Save States", "Load State 10", "F10");
Bind("Save States", "Select State 1", "Number1");
Bind("Save States", "Select State 2", "Number2");
Bind("Save States", "Select State 3", "Number3");
@ -94,7 +94,7 @@ namespace BizHawk.Client.Common
Bind("Save States", "Select State 7", "Number7");
Bind("Save States", "Select State 8", "Number8");
Bind("Save States", "Select State 9", "Number9");
Bind("Save States", "Select State 0", "Number0");
Bind("Save States", "Select State 10", "Number0");
Bind("Save States", "Quick Load", "P");
Bind("Save States", "Quick Save", "I");
Bind("Save States", "Save Named State");

View File

@ -523,7 +523,7 @@ namespace BizHawk.Client.EmuHawk
//
// SaveState0MenuItem
//
this.SaveState0MenuItem.Text = "0";
this.SaveState0MenuItem.Text = "10";
this.SaveState0MenuItem.Click += new System.EventHandler(this.QuickSavestateMenuItem_Click);
//
// SaveNamedStateMenuItem
@ -604,7 +604,7 @@ namespace BizHawk.Client.EmuHawk
//
// LoadState0MenuItem
//
this.LoadState0MenuItem.Text = "0";
this.LoadState0MenuItem.Text = "10";
this.LoadState0MenuItem.Click += new System.EventHandler(this.QuickLoadstateMenuItem_Click);
//
// LoadNamedStateMenuItem
@ -640,7 +640,7 @@ namespace BizHawk.Client.EmuHawk
//
// SelectSlot0MenuItem
//
this.SelectSlot0MenuItem.Text = "Select Slot 0";
this.SelectSlot0MenuItem.Text = "Select Slot 10";
this.SelectSlot0MenuItem.Click += new System.EventHandler(this.SelectSlotMenuItems_Click);
//
// SelectSlot1MenuItem
@ -2149,7 +2149,7 @@ namespace BizHawk.Client.EmuHawk
// Slot0StatusButton
//
this.Slot0StatusButton.Text = "0";
this.Slot0StatusButton.ToolTipText = "Save slot 0";
this.Slot0StatusButton.ToolTipText = "Save slot 10";
this.Slot0StatusButton.MouseUp += new System.Windows.Forms.MouseEventHandler(this.SlotStatusButtons_MouseUp);
//
// CheatStatusButton

View File

@ -133,7 +133,7 @@ namespace BizHawk.Client.EmuHawk
SetSlotFont(SaveState7MenuItem, 7);
SetSlotFont(SaveState8MenuItem, 8);
SetSlotFont(SaveState9MenuItem, 9);
SetSlotFont(SaveState0MenuItem, 0);
SetSlotFont(SaveState0MenuItem, 10);
AutosaveLastSlotMenuItem.Checked = Config.AutoSaveLastSaveSlot;
@ -146,7 +146,7 @@ namespace BizHawk.Client.EmuHawk
SaveState7MenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Save State 7"];
SaveState8MenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Save State 8"];
SaveState9MenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Save State 9"];
SaveState0MenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Save State 0"];
SaveState0MenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Save State 10"];
SaveNamedStateMenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Save Named State"];
}
@ -161,7 +161,7 @@ namespace BizHawk.Client.EmuHawk
LoadState7MenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Load State 7"];
LoadState8MenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Load State 8"];
LoadState9MenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Load State 9"];
LoadState0MenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Load State 0"];
LoadState0MenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Load State 10"];
LoadNamedStateMenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Load Named State"];
AutoloadLastSlotMenuItem.Checked = Config.AutoLoadLastSaveSlot;
@ -175,7 +175,7 @@ namespace BizHawk.Client.EmuHawk
LoadState7MenuItem.Enabled = HasSlot(7);
LoadState8MenuItem.Enabled = HasSlot(8);
LoadState9MenuItem.Enabled = HasSlot(9);
LoadState0MenuItem.Enabled = HasSlot(0);
LoadState0MenuItem.Enabled = HasSlot(10);
}
private void SaveSlotSubMenu_DropDownOpened(object sender, EventArgs e)
@ -189,7 +189,7 @@ namespace BizHawk.Client.EmuHawk
SelectSlot7MenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Select State 7"];
SelectSlot8MenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Select State 8"];
SelectSlot9MenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Select State 9"];
SelectSlot0MenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Select State 0"];
SelectSlot0MenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Select State 10"];
PreviousSlotMenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Previous Slot"];
NextSlotMenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Next Slot"];
SaveToCurrentSlotMenuItem.ShortcutKeyDisplayString = Config.HotkeyBindings["Quick Save"];
@ -204,7 +204,7 @@ namespace BizHawk.Client.EmuHawk
SelectSlot7MenuItem.Checked = Config.SaveSlot == 7;
SelectSlot8MenuItem.Checked = Config.SaveSlot == 8;
SelectSlot9MenuItem.Checked = Config.SaveSlot == 9;
SelectSlot0MenuItem.Checked = Config.SaveSlot == 0;
SelectSlot0MenuItem.Checked = Config.SaveSlot is 10;
}
private void SaveRamSubMenu_DropDownOpened(object sender, EventArgs e)
@ -381,7 +381,7 @@ namespace BizHawk.Client.EmuHawk
else if (sender == SelectSlot7MenuItem) Config.SaveSlot = 7;
else if (sender == SelectSlot8MenuItem) Config.SaveSlot = 8;
else if (sender == SelectSlot9MenuItem) Config.SaveSlot = 9;
else if (sender == SelectSlot0MenuItem) Config.SaveSlot = 0;
else if (sender == SelectSlot0MenuItem) Config.SaveSlot = 10;
UpdateStatusSlots();
SaveSlotSelectedMessage();
@ -2358,7 +2358,7 @@ namespace BizHawk.Client.EmuHawk
}
}
var file = new FileInfo($"{SaveStatePrefix()}.QuickSave{Config.SaveSlot}.State.bak");
var file = new FileInfo($"{SaveStatePrefix()}.QuickSave{Config.SaveSlot % 10}.State.bak");
if (file.Exists)
{
@ -2477,7 +2477,7 @@ namespace BizHawk.Client.EmuHawk
private void UndoSavestateContextMenuItem_Click(object sender, EventArgs e)
{
_stateSlots.SwapBackupSavestate(MovieSession.Movie, $"{SaveStatePrefix()}.QuickSave{Config.SaveSlot}.State", Config.SaveSlot);
_stateSlots.SwapBackupSavestate(MovieSession.Movie, $"{SaveStatePrefix()}.QuickSave{Config.SaveSlot % 10}.State", Config.SaveSlot);
AddOnScreenMessage($"Save slot {Config.SaveSlot} restored.");
}
@ -2509,7 +2509,7 @@ namespace BizHawk.Client.EmuHawk
private void SlotStatusButtons_MouseUp(object sender, MouseEventArgs e)
{
int slot = 0;
var slot = 10;
if (sender == Slot1StatusButton) slot = 1;
if (sender == Slot2StatusButton) slot = 2;
if (sender == Slot3StatusButton) slot = 3;
@ -2519,7 +2519,7 @@ namespace BizHawk.Client.EmuHawk
if (sender == Slot7StatusButton) slot = 7;
if (sender == Slot8StatusButton) slot = 8;
if (sender == Slot9StatusButton) slot = 9;
if (sender == Slot0StatusButton) slot = 0;
if (sender == Slot0StatusButton) slot = 10;
if (e.Button is MouseButtons.Right) SaveQuickSave(slot);
else if (e.Button is MouseButtons.Left && HasSlot(slot)) LoadQuickSave(slot);

View File

@ -160,9 +160,6 @@ namespace BizHawk.Client.EmuHawk
break;
// Save States
case "Save State 0":
SelectAndSaveToSlot(0);
break;
case "Save State 1":
SelectAndSaveToSlot(1);
break;
@ -190,8 +187,8 @@ namespace BizHawk.Client.EmuHawk
case "Save State 9":
SelectAndSaveToSlot(9);
break;
case "Load State 0":
SelectAndLoadFromSlot(0);
case "Save State 10":
SelectAndSaveToSlot(10);
break;
case "Load State 1":
SelectAndLoadFromSlot(1);
@ -220,10 +217,10 @@ namespace BizHawk.Client.EmuHawk
case "Load State 9":
SelectAndLoadFromSlot(9);
break;
case "Select State 0":
SelectSlot(0);
case "Load State 10":
SelectAndLoadFromSlot(10);
break;
case "Select State 1":
SelectSlot(1);
break;
@ -251,6 +248,9 @@ namespace BizHawk.Client.EmuHawk
case "Select State 9":
SelectSlot(9);
break;
case "Select State 10":
SelectSlot(10);
break;
case "Save Named State":
SaveStateAs();
break;

View File

@ -2626,7 +2626,7 @@ namespace BizHawk.Client.EmuHawk
Slot7StatusButton.ForeColor = SlotForeColor(7);
Slot8StatusButton.ForeColor = SlotForeColor(8);
Slot9StatusButton.ForeColor = SlotForeColor(9);
Slot0StatusButton.ForeColor = SlotForeColor(0);
Slot0StatusButton.ForeColor = SlotForeColor(10);
Slot1StatusButton.BackColor = SlotBackColor(1);
Slot2StatusButton.BackColor = SlotBackColor(2);
@ -2637,7 +2637,7 @@ namespace BizHawk.Client.EmuHawk
Slot7StatusButton.BackColor = SlotBackColor(7);
Slot8StatusButton.BackColor = SlotBackColor(8);
Slot9StatusButton.BackColor = SlotBackColor(9);
Slot0StatusButton.BackColor = SlotBackColor(0);
Slot0StatusButton.BackColor = SlotBackColor(10);
SaveSlotsStatusLabel.Visible =
Slot1StatusButton.Visible =
@ -4254,7 +4254,7 @@ namespace BizHawk.Client.EmuHawk
{
return;
}
var quickSlotName = $"QuickSave{slot}";
var quickSlotName = $"QuickSave{slot % 10}";
EmuClient.OnBeforeQuickLoad(this, quickSlotName, out var handled);
if (handled)
{
@ -4321,7 +4321,7 @@ namespace BizHawk.Client.EmuHawk
{
return;
}
var quickSlotName = $"QuickSave{slot}";
var quickSlotName = $"QuickSave{slot % 10}";
EmuClient.OnBeforeQuickSave(this, quickSlotName, out var handled);
if (handled)
{
@ -4476,19 +4476,8 @@ namespace BizHawk.Client.EmuHawk
var handled = Master.PreviousSlot();
if (handled) return;
}
if (Config.SaveSlot == 0)
{
Config.SaveSlot = 9; // Wrap to end of slot list
}
else if (Config.SaveSlot > 9)
{
Config.SaveSlot = 9; // Meh, just in case
}
else
{
Config.SaveSlot--;
}
Config.SaveSlot++;
if (Config.SaveSlot < 1) Config.SaveSlot = 10;
SaveSlotSelectedMessage();
UpdateStatusSlots();
}
@ -4501,19 +4490,8 @@ namespace BizHawk.Client.EmuHawk
var handled = Master.NextSlot();
if (handled) return;
}
if (Config.SaveSlot >= 9)
{
Config.SaveSlot = 0; // Wrap to beginning of slot list
}
else if (Config.SaveSlot < 0)
{
Config.SaveSlot = 0; // Meh, just in case
}
else
{
Config.SaveSlot++;
}
Config.SaveSlot++;
if (Config.SaveSlot > 10) Config.SaveSlot = 1;
SaveSlotSelectedMessage();
UpdateStatusSlots();
}

View File

@ -168,6 +168,7 @@ namespace BizHawk.Client.EmuHawk
initialConfig = ConfigService.Load<Config>(configPath);
}
initialConfig.ResolveDefaults();
if (initialConfig.SaveSlot is 0) initialConfig.SaveSlot = 10; //TODO remove after a while
// initialConfig should really be globalConfig as it's mutable
FFmpegService.FFmpegPath = Path.Combine(PathUtils.DataDirectoryPath, "dll", OSTC.IsUnixHost ? "ffmpeg" : "ffmpeg.exe");

View File

@ -958,7 +958,7 @@ namespace BizHawk.Client.EmuHawk
"Slot 7",
"Slot 8",
"Slot 9",
"Slot 0"});
"Slot 10"});
this.StartFromSlotBox.Location = new System.Drawing.Point(71, 25);
this.StartFromSlotBox.Name = "StartFromSlotBox";
this.StartFromSlotBox.Size = new System.Drawing.Size(75, 21);

View File

@ -153,7 +153,7 @@ namespace BizHawk.Client.EmuHawk
.ToDictionary(tkey => tkey.ButtonName, tvalue => tvalue.Probability);
private int SelectedSlot
=> (1 + StartFromSlotBox.SelectedIndex) % 10;
=> 1 + StartFromSlotBox.SelectedIndex;
private long Attempts
{

View File

@ -31,18 +31,14 @@ namespace BizHawk.Client.EmuHawk
}
public void SaveQuickSave(int slot)
{
BookMarkControl.UpdateBranchExternal(slot is 0 ? 9 : slot - 1);
}
=> BookMarkControl.UpdateBranchExternal(slot - 1);
public void LoadQuickSave(int slot)
{
BookMarkControl.LoadBranchExternal(slot is 0 ? 9 : slot - 1);
}
=> BookMarkControl.LoadBranchExternal(slot - 1);
public bool SelectSlot(int slot)
{
BookMarkControl.SelectBranchExternal(slot is 0 ? 9 : slot - 1);
BookMarkControl.SelectBranchExternal(slot - 1);
return false;
}