diff --git a/src/am_map.cpp b/src/am_map.cpp index 9968f4ac4..8df074182 100644 --- a/src/am_map.cpp +++ b/src/am_map.cpp @@ -90,7 +90,7 @@ CVAR (Bool, am_customcolors, true, CVAR_ARCHIVE); CVAR (Int, am_map_secrets, 1, CVAR_ARCHIVE); CVAR (Int, am_drawmapback, 1, CVAR_ARCHIVE); CVAR (Bool, am_showkeys, true, CVAR_ARCHIVE); -CVAR (Bool, am_showtriggerlines, false, CVAR_ARCHIVE); +CVAR (Int, am_showtriggerlines, 0, CVAR_ARCHIVE); CVAR (Int, am_showthingsprites, 0, CVAR_ARCHIVE); //============================================================================= @@ -2281,58 +2281,47 @@ bool AM_checkSpecialBoundary (line_t &line, bool (*function)(int, int *), int *s return (line.backsector && AM_checkSectorActions(line.backsector, function, specialptr, argsptr, false)); } -bool AM_isTeleportSpecial (int special, int *) -{ - return (special == Teleport || - special == Teleport_NoFog || - special == Teleport_ZombieChanger || - special == Teleport_Line); -} - bool AM_isTeleportBoundary (line_t &line) { - return AM_checkSpecialBoundary(line, &AM_isTeleportSpecial); -} - -bool AM_isExitSpecial (int special, int *) -{ - return (special == Teleport_NewMap || - special == Teleport_EndGame || - special == Exit_Normal || - special == Exit_Secret); + return AM_checkSpecialBoundary(line, [](int special, int *) + { + return (special == Teleport || + special == Teleport_NoFog || + special == Teleport_ZombieChanger || + special == Teleport_Line); + }); } bool AM_isExitBoundary (line_t& line) { - return AM_checkSpecialBoundary(line, &AM_isExitSpecial); -} - -bool AM_isTriggerSpecial (int special, int *) -{ - FLineSpecial *spec = P_GetLineSpecialInfo(special); - return spec != NULL - && spec->max_args >= 0 - && special != Door_Open - && special != Door_Close - && special != Door_CloseWaitOpen - && special != Door_Raise - && special != Door_Animated - && special != Generic_Door; + return AM_checkSpecialBoundary(line, [](int special, int *) + { + return (special == Teleport_NewMap || + special == Teleport_EndGame || + special == Exit_Normal || + special == Exit_Secret); + }); } bool AM_isTriggerBoundary (line_t &line) { - return AM_checkSpecialBoundary(line, &AM_isTriggerSpecial); -} - -bool AM_isLockSpecial (int special, int* args) -{ - return special == Door_LockedRaise - || special == ACS_LockedExecute - || special == ACS_LockedExecuteDoor - || (special == Door_Animated && args[3] != 0) - || (special == Generic_Door && args[4] != 0) - || (special == FS_Execute && args[2] != 0); + return am_showtriggerlines == 1? AM_checkSpecialBoundary(line, [](int special, int *) + { + FLineSpecial *spec = P_GetLineSpecialInfo(special); + return spec != NULL + && spec->max_args >= 0 + && special != Door_Open + && special != Door_Close + && special != Door_CloseWaitOpen + && special != Door_Raise + && special != Door_Animated + && special != Generic_Door; + }) : AM_checkSpecialBoundary(line, [](int special, int *) + { + FLineSpecial *spec = P_GetLineSpecialInfo(special); + return spec != NULL + && spec->max_args >= 0; + }); } bool AM_isLockBoundary (line_t &line, int *lockptr = NULL) @@ -2351,7 +2340,15 @@ bool AM_isLockBoundary (line_t &line, int *lockptr = NULL) int special; int *args; - bool result = AM_checkSpecialBoundary(line, &AM_isLockSpecial, &special, &args); + bool result = AM_checkSpecialBoundary(line, [](int special, int* args) + { + return special == Door_LockedRaise + || special == ACS_LockedExecute + || special == ACS_LockedExecuteDoor + || (special == Door_Animated && args[3] != 0) + || (special == Generic_Door && args[4] != 0) + || (special == FS_Execute && args[2] != 0); + }, &special, &args); if (result) { diff --git a/wadsrc/static/language.eng b/wadsrc/static/language.eng index bf0a0a91d..66757cee7 100644 --- a/wadsrc/static/language.eng +++ b/wadsrc/static/language.eng @@ -106,6 +106,7 @@ CMPTMNU_RENDERINGBEHAVIOR = "Rendering Behaviour"; CMPTMNU_SOUNDBEHAVIOR = "Sound Behaviour"; CMPTMNU_SECTORSOUNDS = "Sector sounds use centre as source"; OPTVAL_MAPDEFINEDCOLORSONLY = "Map defined colours only"; +OPTVAL_NODOORS = "All except doors"; C_GRAY = "\ccgrey"; C_DARKGRAY = "\cudark grey"; diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index d90d1851c..db2adcdfd 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -1008,6 +1008,13 @@ OptionValue MapBackTypes 2, "$OPTVAL_MAPDEFINEDCOLORSONLY" } +OptionValue MapTriggers +{ + 0, "$OPTVAL_OFF" + 1, "$OPTVAL_NO_DOORS" + 2, "$OPTVAL_ON" +} + OptionMenu AutomapOptions { Title "$AUTOMAPMNU_TITLE" @@ -1031,7 +1038,7 @@ OptionMenu AutomapOptions Option "$AUTOMAPMNU_SHOWMAPLABEL", "am_showmaplabel", "MaplabelTypes" Option "$AUTOMAPMNU_DRAWMAPBACK", "am_drawmapback", "MapBackTypes" Option "$AUTOMAPMNU_SHOWKEYS", "am_showkeys", "OnOff" - Option "$AUTOMAPMNU_SHOWTRIGGERLINES", "am_showtriggerlines", "OnOff" + Option "$AUTOMAPMNU_SHOWTRIGGERLINES", "am_showtriggerlines", "MapTriggers" Option "$AUTOMAPMNU_SHOWTHINGSPRITES", "am_showthingsprites", "STSTypes" }