aboutsummaryrefslogtreecommitdiff
path: root/simon
diff options
context:
space:
mode:
authorTravis Howell2003-07-27 12:05:08 +0000
committerTravis Howell2003-07-27 12:05:08 +0000
commitb8ce60ea1872b760e9caecf40260c7ae3eeb8ae9 (patch)
tree50f8ad513192105e8de35dcc3e838ef4d04b0e70 /simon
parentf6984add8f67d53d1521021a2c336647f483f248 (diff)
downloadscummvm-rg350-b8ce60ea1872b760e9caecf40260c7ae3eeb8ae9.tar.gz
scummvm-rg350-b8ce60ea1872b760e9caecf40260c7ae3eeb8ae9.tar.bz2
scummvm-rg350-b8ce60ea1872b760e9caecf40260c7ae3eeb8ae9.zip
Count amount of save files available so load/save dialog works correctly.
svn-id: r9196
Diffstat (limited to 'simon')
-rw-r--r--simon/items.cpp6
-rw-r--r--simon/simon.cpp17
-rw-r--r--simon/simon.h1
3 files changed, 21 insertions, 3 deletions
diff --git a/simon/items.cpp b/simon/items.cpp
index 7191e45068..b7f5ea7f6a 100644
--- a/simon/items.cpp
+++ b/simon/items.cpp
@@ -1422,8 +1422,8 @@ start_over_2:;
if (!_savedialog_flag)
goto start_over_2;
_saveload_row_curpos += 6;
-// if (_saveload_row_curpos >= _num_savegame_rows)
-// _saveload_row_curpos = _num_savegame_rows;
+ if (_saveload_row_curpos >= _num_savegame_rows)
+ _saveload_row_curpos = _num_savegame_rows;
goto strange_jump;
}
@@ -1459,6 +1459,8 @@ start_over_3:;
if (!_savedialog_flag)
goto start_over_3;
_saveload_row_curpos += 6;
+ if (_saveload_row_curpos >= _num_savegame_rows)
+ _saveload_row_curpos = _num_savegame_rows;
goto strange_jump;
}
diff --git a/simon/simon.cpp b/simon/simon.cpp
index d0ff610b00..7e10130e24 100644
--- a/simon/simon.cpp
+++ b/simon/simon.cpp
@@ -2513,6 +2513,21 @@ void SimonEngine::o_load_game() {
save_or_load_dialog(true);
}
+int SimonEngine::count_savegames() {
+ File f;
+ uint i = 1;
+
+ while (i < 256) {
+ f.open(gen_savename(i), getSavePath());
+ if (f.isOpen() == false)
+ break;
+
+ f.close();
+ i++;
+ }
+ return i;
+}
+
int SimonEngine::display_savegame_list(int curpos, bool load, char *dst) {
int slot, last_slot;
File in;
@@ -2601,7 +2616,7 @@ void SimonEngine::save_or_load_dialog(bool load) {
_copy_partial_mode = 1;
- num = _number_of_savegames;
+ _number_of_savegames = num = count_savegames();
if (!load)
num++;
num -= 6;
diff --git a/simon/simon.h b/simon/simon.h
index 7a95dc910f..3c73a9d521 100644
--- a/simon/simon.h
+++ b/simon/simon.h
@@ -790,6 +790,7 @@ protected:
void o_unk_132_helper_2(FillOrCopyStruct *fcs, int x);
void savegame_dialog(char *buf);
+ int count_savegames();
int display_savegame_list(int curpos, bool load, char *dst);
void show_it(void *buf);