From d29437d459167d40bac2d0c2c7881f3e3b8f2e8f Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Sun, 18 Apr 2010 21:28:26 +0000 Subject: Suggest a different Heretic version when an invalid string or code offset is encountered. Subversion-branch: /branches/raven-branch Subversion-revision: 1909 --- src/heretic/deh_frame.c | 31 ++++++++++++++++++++++++++++++- src/heretic/deh_htext.c | 41 +++++++++++++++++++++++++++++++++++++++++ src/heretic/deh_htic.c | 15 +++++++++++++++ src/heretic/deh_htic.h | 1 + 4 files changed, 87 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/heretic/deh_frame.c b/src/heretic/deh_frame.c index c576d490..8623ab0c 100644 --- a/src/heretic/deh_frame.c +++ b/src/heretic/deh_frame.c @@ -229,6 +229,14 @@ static boolean GetActionPointerForOffset(int offset, void **result) { int i; + // Special case. + + if (offset == 0) + { + *result = NULL; + return true; + } + for (i=0; i= 0; ++i) + { + if (string_list[i] == offset) + { + DEH_SuggestHereticVersion(v); + } + } + } +} + static void *DEH_TextStart(deh_context_t *context, char *line) { char *repl_text; @@ -770,6 +810,7 @@ static void *DEH_TextStart(deh_context_t *context, char *line) else if (!GetStringByOffset(orig_offset, &orig_text)) { + SuggestOtherVersions(orig_offset); DEH_Error(context, "Unknown string offset: %i", orig_offset); } diff --git a/src/heretic/deh_htic.c b/src/heretic/deh_htic.c index 40fa5765..440fde96 100644 --- a/src/heretic/deh_htic.c +++ b/src/heretic/deh_htic.c @@ -169,3 +169,18 @@ int DEH_MapHereticFrameNumber(int frame) return frame; } +void DEH_SuggestHereticVersion(deh_hhe_version_t version) +{ + fprintf(stderr, + "\n" + "This patch may be for version %s. You are currently running in\n" + "Heretic %s mode. For %s mode, this mode, add this to your command line:\n" + "\n" + "\t-hhever %s\n" + "\n", + hhe_versions[version], + hhe_versions[deh_hhe_version], + hhe_versions[version], + hhe_versions[version]); +} + diff --git a/src/heretic/deh_htic.h b/src/heretic/deh_htic.h index f006c149..7855da8c 100644 --- a/src/heretic/deh_htic.h +++ b/src/heretic/deh_htic.h @@ -52,6 +52,7 @@ typedef enum void DEH_HereticInit(void); int DEH_MapHereticFrameNumber(int frame); +void DEH_SuggestHereticVersion(deh_hhe_version_t version); extern deh_hhe_version_t deh_hhe_version; -- cgit v1.2.3