Skip to content

Commit ac31840

Browse files
committed
Remembering last emu and rom used
1 parent 2e29a05 commit ac31840

3 files changed

Lines changed: 38 additions & 1 deletion

File tree

RetroBox.Fabric/Boxes/Envelope.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ public class Envelope
1212

1313
public string? Preview { get; set; }
1414

15+
public string? IdEmu { get; set; }
16+
public string? IdRom { get; set; }
17+
1518
public void Save()
1619
{
1720
Serials.WriteJsonFile(this, InternalFile!);

RetroBox.Manager/Boxes/MetaMachine.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,17 @@ public string DescriptionTxt
155155
}
156156
}
157157

158+
public (string emuId, string romId) LastEmuUsed
159+
{
160+
set
161+
{
162+
if (E is not { } envelope) return;
163+
envelope.IdEmu = value.emuId;
164+
envelope.IdRom = value.romId;
165+
envelope.Save();
166+
}
167+
}
168+
158169
#endregion
159170

160171
public string? Tag { get; set; }

RetroBox.Manager/Views/MainWindow.axaml.cs

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ private void OnPreviewDragDrop(object? sender, DragEventArgs e)
9090

9191
private void OnPreviewDragDrop(string fileName)
9292
{
93-
if (Model.CurrentMachine is not { } machine)
93+
if (Model.CurrentMachine is not { } machine)
9494
return;
9595
var machineDir = machine.GetFolder()!;
9696
const string previewName = "preview.png";
@@ -134,6 +134,7 @@ private void Machines_OnSelectionChanged(object? sender, SelectionChangedEventAr
134134
if (added == null)
135135
return;
136136
Model.CurrentMachine = (MetaMachine?)added;
137+
RestoreLastEmu();
137138
}
138139

139140
private MainWindowViewModel Model => (MainWindowViewModel)DataContext!;
@@ -298,6 +299,7 @@ private void StartThis_OnClick(object? sender, RoutedEventArgs e)
298299
var proc = plat.GetProcs();
299300
var core = proc.Build(arg);
300301
mach.Tag = id;
302+
RememberLastEmu(current);
301303
core.RunThis(id, StartThis_OnEvent);
302304
}
303305
}
@@ -494,5 +496,26 @@ private void HardStop_OnClick(object? sender, RoutedEventArgs e)
494496
IVmCommand vCmd = new ForceOffVCmd();
495497
proc.Send(mach.Tag!, vCmd);
496498
}
499+
500+
private void RememberLastEmu((MetaMachine mach, FoundExe exe, FoundRom rom) current)
501+
{
502+
var exeVer = current.exe.Version.ReleaseId!;
503+
var romVer = current.rom.ReleaseId;
504+
current.mach.LastEmuUsed = (emuId: exeVer, romId: romVer);
505+
}
506+
507+
private void RestoreLastEmu()
508+
{
509+
if (GetEmuAndRom() is not { } current)
510+
return;
511+
if (current.mach.E is not { IdEmu: { } emuId, IdRom: { } romId })
512+
return;
513+
var foundExe = Model.AllEmus.FirstOrDefault(m => m.Version.ReleaseId == emuId);
514+
var foundRom = Model.AllRoms.FirstOrDefault(m => m.ReleaseId == romId);
515+
if (foundExe == null || foundRom == null)
516+
return;
517+
EmuCombo.SelectedItem = foundExe;
518+
RomCombo.SelectedItem = foundRom;
519+
}
497520
}
498521
}

0 commit comments

Comments
 (0)