[gnome-games] retro-runner: Fix new savestate name creation
- From: Alexander Mikhaylenko <alexm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-games] retro-runner: Fix new savestate name creation
- Date: Tue, 13 Aug 2019 10:52:04 +0000 (UTC)
commit 196ab8cdf84450e378470741f86bbf7778034d50
Author: Yetizone <andreii lisita gmail com>
Date: Tue Aug 13 02:24:06 2019 +0300
retro-runner: Fix new savestate name creation
Use ints to store the numerical part of the savestates names
src/retro/retro-runner.vala | 24 +++++++++++++-----------
1 file changed, 13 insertions(+), 11 deletions(-)
---
diff --git a/src/retro/retro-runner.vala b/src/retro/retro-runner.vala
index e48d1394..0cd23bf2 100644
--- a/src/retro/retro-runner.vala
+++ b/src/retro/retro-runner.vala
@@ -629,32 +629,34 @@ public class Games.RetroRunner : Object, Runner {
private string create_new_savestate_name () throws Error {
// A list containing the names of all savestates with name of the form "New Savestate %d"
- var list = new List<string>();
- var regex = new Regex (_("New savestate %s").printf ("[1-9]\\d*"));
+ var list = new List<int>();
+ var regex = new Regex (_("New savestate %s").printf ("([1-9]\\d*)"));
foreach (var savestate in game_savestates) {
if (savestate.is_automatic ())
continue;
var savestate_name = savestate.get_name ();
+ MatchInfo match_info = null;
- if (regex.match (savestate_name))
- list.prepend (savestate_name);
+ if (regex.match (savestate_name, 0, out match_info)) {
+ var number = match_info.fetch (1);
+ list.prepend (int.parse (number));
+ }
}
- list.sort (strcmp);
+ list.sort ((a, b) => a - b);
// Find the next available name for a new manual savestate
- var new_savestate_name_suffix = 1;
- foreach (var savestate_name in list) {
- var new_savestate_name = _("New savestate %s").printf
(new_savestate_name_suffix.to_string ());
- if (savestate_name == new_savestate_name)
- new_savestate_name_suffix++;
+ var next_number = 1;
+ foreach (var number in list) {
+ if (number == next_number)
+ next_number++;
else
break;
}
- return _("New savestate %s").printf (new_savestate_name_suffix.to_string ());
+ return _("New savestate %s").printf (next_number.to_string ());
}
// Decide if there are too many automatic savestates and delete the
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]