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!
Congratulations!!
- 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".'
# This message is not currently used
#- 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
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 ==
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
* some points (so can't win by using saved games to retry
* 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
return GO_UNKNOWN;
rspeak(SAVERESUME_DISABLED)
return GO_TOP;
#endif
FILE *fp = NULL;
@ -91,10 +92,11 @@ int suspend(void)
int resume(void)
{
/* 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
return GO_UNKNOWN;
rspeak(SAVERESUME_DISABLED)
return GO_TOP;
#endif
FILE *fp = NULL;
@ -125,9 +127,10 @@ int restore(FILE* fp)
{
/* Read and restore game state from file, assuming
* sane initial state.
* If ADVENT_NOSAVE is defined, do nothing instead. */
* If ADVENT_NOSAVE is defined, gripe instead. */
#ifdef ADVENT_NOSAVE
return GO_UNKNOWN;
rspeak(SAVERESUME_DISABLED)
return GO_TOP;
#endif
IGNORE(fread(&save, sizeof(struct save_t), 1, fp));