ref: 3608dddd5931966563e9b766836fc002287d206d
parent: 084587ecb43ea3acdc43db3f583d657ff0219b2a
author: Fabian Greffrath <fabian@greffrath.com>
date: Tue Oct 21 02:56:21 EDT 2014
bfgedition: remap menu graphics by means of DEH_AddStringReplacement() during the initialization instead of a hard-coded diversion in the options menu itself
--- a/src/doom/d_main.c
+++ b/src/doom/d_main.c
@@ -1363,6 +1363,19 @@
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
--- a/src/doom/m_menu.c
+++ b/src/doom/m_menu.c
@@ -983,32 +983,12 @@
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]),