From 643656fcc35838d3e8b6e819fa8b1f9c4adda88c Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Sat, 4 Mar 2023 19:48:17 -0500 Subject: [PATCH] Complain to user on save/resume.restore when it's disabled. --- adventure.yaml | 1 + notes.adoc | 4 ++++ saveresume.c | 15 +++++++++------ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/adventure.yaml b/adventure.yaml index cb577bd..32c7d8b 100644 --- a/adventure.yaml +++ b/adventure.yaml @@ -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: |- diff --git a/notes.adoc b/notes.adoc index bc8db58..9dfc9cd 100644 --- a/notes.adoc +++ b/notes.adoc @@ -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. diff --git a/saveresume.c b/saveresume.c index ad9f844..d668543 100644 --- a/saveresume.c +++ b/saveresume.c @@ -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)); -- 2.31.1