foxygit / doom Log in
commit 3608dddd5931966563e9b766836fc002287d206d
Author:     Fabian Greffrath <fabian@greffrath.com>
AuthorDate: Tue Oct 21 06:56:21 2014 +0200
Commit:     Fabian Greffrath <fabian@greffrath.com>
CommitDate: Tue Oct 21 06:56:21 2014 +0200

    bfgedition: remap menu graphics by means of DEH_AddStringReplacement()

    during the initialization instead of a hard-coded diversion in the
    options menu itself
---
 src/doom/d_main.c | 13 +++++++++++++
 src/doom/m_menu.c | 26 +++-----------------------
 2 files changed, 16 insertions(+), 23 deletions(-)

diff --git a/src/doom/d_main.c b/src/doom/d_main.c
index c7987b90..a8f23aee 100644
--- a/src/doom/d_main.c
+++ b/src/doom/d_main.c
@@ -1363,6 +1363,19 @@ void D_DoomMain (void)
         DEH_AddStringReplacement(HUSTR_31, "level 31: idkfa");
         DEH_AddStringReplacement(HUSTR_32, "level 32: keen");
         DEH_AddStringReplacement(PHUSTR_1, "level 33: betray");
+
+        // The BFG edition doesn't have the "low detail" menu option (fair
+        // enough). But bizarrely, it reuses the M_GDHIGH patch as a label
+        // for the options menu (says "Fullscreen:"). Why the perpetrators
+        // couldn't just add a new graphic lump and had to reuse this one,
+        // I don't know.
+        //
+        // The end result is that M_GDHIGH is too wide and causes the game
+        // to crash. As a workaround to get a minimum level of support for
+        // the BFG edition IWADs, use the "ON"/"OFF" graphics instead.
+
+        DEH_AddStringReplacement("M_GDHIGH", "M_MSGON");
+        DEH_AddStringReplacement("M_GDLOW", "M_MSGOFF");
     }

 #ifdef FEATURE_DEHACKED
diff --git a/src/doom/m_menu.c b/src/doom/m_menu.c
index 863d0832..9a166a43 100644
--- a/src/doom/m_menu.c
+++ b/src/doom/m_menu.c
@@ -983,32 +983,12 @@ static char *msgNames[2] = {"M_MSGOFF","M_MSGON"};

 void M_DrawOptions(void)
 {
-    char *detail_patch;
-
     V_DrawPatchDirect(108, 15, W_CacheLumpName(DEH_String("M_OPTTTL"),
                                                PU_CACHE));
-
-    // Workaround for BFG edition IWAD weirdness.
-    // The BFG edition doesn't have the "low detail" menu option (fair
-    // enough). But bizarrely, it reuses the M_GDHIGH patch as a label
-    // for the options menu (says "Fullscreen:"). Why the perpetrators
-    // couldn't just add a new graphic lump and had to reuse this one,
-    // I don't know.
-    //
-    // The end result is that M_GDHIGH is too wide and causes the game
-    // to crash. As a workaround to get a minimum level of support for
-    // the BFG edition IWADs, use the "ON"/"OFF" graphics instead.
-    if (bfgedition)
-    {
-        detail_patch = msgNames[!detailLevel];
-    }
-    else
-    {
-        detail_patch = detailNames[detailLevel];
-    }
-
+
     V_DrawPatchDirect(OptionsDef.x + 175, OptionsDef.y + LINEHEIGHT * detail,
-		      W_CacheLumpName(DEH_String(detail_patch), PU_CACHE));
+		      W_CacheLumpName(DEH_String(detailNames[detailLevel]),
+			              PU_CACHE));

     V_DrawPatchDirect(OptionsDef.x + 120, OptionsDef.y + LINEHEIGHT * messages,
                       W_CacheLumpName(DEH_String(msgNames[showMessages]),