Complain to user on save/resume.restore when it's disabled.

This commit is contained in:
Eric S. Raymond 2023-03-04 19:48:17 -05:00
parent ac0c5fc024
commit 643656fcc3
3 changed files with 14 additions and 6 deletions

View file

@ -3173,6 +3173,7 @@ arbitrary_messages: !!omap
To achieve the next higher rating would be a neat trick! To achieve the next higher rating would be a neat trick!
Congratulations!! Congratulations!!
- OFF_SCALE: 'You just went off my scale!!' - OFF_SCALE: 'You just went off my scale!!'
- SAVERESUME_DISABLED: 'Save abd resume are disabled.'
- RESUME_HELP: 'To resume your Adventure, start a new game and then say "RESUME".' - RESUME_HELP: 'To resume your Adventure, start a new game and then say "RESUME".'
# This message is not currently used # This message is not currently used
#- TABLE_SPACE: |- #- TABLE_SPACE: |-

View file

@ -126,6 +126,10 @@ tamper-proofing saves when everyone has the source code.
A -r command-line option has been added. When it is given (with a file A -r command-line option has been added. When it is given (with a file
path argument) it is functionally equivalent to a RESTORE command. path argument) it is functionally equivalent to a RESTORE command.
The game can be built in a mode that entirely disables save/resume, or
thart autosaves only on a termination signal (for use in BBS doort
systems). There is a new nmessage to inform the user about this.
== Translation == == Translation ==
The 2.5 code was a mechanical C translation of a FORTRAN original. The 2.5 code was a mechanical C translation of a FORTRAN original.

View file

@ -60,10 +60,11 @@ int suspend(void)
/* Suspend. Offer to save things in a file, but charging /* Suspend. Offer to save things in a file, but charging
* some points (so can't win by using saved games to retry * some points (so can't win by using saved games to retry
* battles or to start over after learning zzword). * battles or to start over after learning zzword).
* If ADVENT_NOSAVE is defined, do nothing instead. */ * If ADVENT_NOSAVE is defined, gripe instead. */
#if defined ADVENT_NOSAVE || defined ADVENT_AUTOSAVE #if defined ADVENT_NOSAVE || defined ADVENT_AUTOSAVE
return GO_UNKNOWN; rspeak(SAVERESUME_DISABLED)
return GO_TOP;
#endif #endif
FILE *fp = NULL; FILE *fp = NULL;
@ -91,10 +92,11 @@ int suspend(void)
int resume(void) int resume(void)
{ {
/* Resume. Read a suspended game back from a file. /* Resume. Read a suspended game back from a file.
* If ADVENT_NOSAVE is defined, do nothing instead. */ * If ADVENT_NOSAVE is defined, gripe instead. */
#if defined ADVENT_NOSAVE || defined ADVENT_AUTOSAVE #if defined ADVENT_NOSAVE || defined ADVENT_AUTOSAVE
return GO_UNKNOWN; rspeak(SAVERESUME_DISABLED)
return GO_TOP;
#endif #endif
FILE *fp = NULL; FILE *fp = NULL;
@ -125,9 +127,10 @@ int restore(FILE* fp)
{ {
/* Read and restore game state from file, assuming /* Read and restore game state from file, assuming
* sane initial state. * sane initial state.
* If ADVENT_NOSAVE is defined, do nothing instead. */ * If ADVENT_NOSAVE is defined, gripe instead. */
#ifdef ADVENT_NOSAVE #ifdef ADVENT_NOSAVE
return GO_UNKNOWN; rspeak(SAVERESUME_DISABLED)
return GO_TOP;
#endif #endif
IGNORE(fread(&save, sizeof(struct save_t), 1, fp)); IGNORE(fread(&save, sizeof(struct save_t), 1, fp));