886 SetDParam(0, p->name_1); |
886 SetDParam(0, p->name_1); |
887 SetDParam(1, p->name_2); |
887 SetDParam(1, p->name_2); |
888 SetDParam(2, _date); |
888 SetDParam(2, _date); |
889 s = GetString(buf + strlen(_path.autosave_dir) + strlen(PATHSEP), STR_4004); |
889 s = GetString(buf + strlen(_path.autosave_dir) + strlen(PATHSEP), STR_4004); |
890 strcpy(s, ".sav"); |
890 strcpy(s, ".sav"); |
891 } else { /* Save a maximum of 15 autosaves */ |
891 } else { /* generate a savegame name and number according to _patches.max_num_autosaves */ |
892 int n = _autosave_ctr; |
892 sprintf(buf, "%s%sautosave%d.sav", _path.autosave_dir, PATHSEP, _autosave_ctr); |
893 _autosave_ctr = (_autosave_ctr + 1) & 15; |
893 |
894 sprintf(buf, "%s%sautosave%d.sav", _path.autosave_dir, PATHSEP, n); |
894 _autosave_ctr++; |
|
895 if (_autosave_ctr >= _patches.max_num_autosaves) { |
|
896 // we reached the limit for numbers of autosaves. We will start over |
|
897 _autosave_ctr = 0; |
|
898 } |
895 } |
899 } |
896 |
900 |
897 DEBUG(misc, 2) ("Autosaving to %s", buf); |
901 DEBUG(misc, 2) ("Autosaving to %s", buf); |
898 if (SaveOrLoad(buf, SL_SAVE) != SL_OK) |
902 if (SaveOrLoad(buf, SL_SAVE) != SL_OK) |
899 ShowErrorMessage(INVALID_STRING_ID, STR_AUTOSAVE_FAILED, 0, 0); |
903 ShowErrorMessage(INVALID_STRING_ID, STR_AUTOSAVE_FAILED, 0, 0); |