From 9d62951cf386ec5bce8c3e7a63a56689acddc56e Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 9 Dec 2022 10:03:36 +0100 Subject: [PATCH] - SW: use surface types for detecting water and lava sectors --- source/games/sw/src/game.h | 6 +++ source/games/sw/src/namelist.h | 33 +++++++++++++++ source/games/sw/src/sector.cpp | 19 +-------- .../static/filter/shadowwarrior/constants.mi | 4 ++ .../filter/shadowwarrior/rmapinfo.texflags | 40 +++++++++++++++++++ 5 files changed, 85 insertions(+), 17 deletions(-) diff --git a/source/games/sw/src/game.h b/source/games/sw/src/game.h index 2956b1bdf..fe46e645e 100644 --- a/source/games/sw/src/game.h +++ b/source/games/sw/src/game.h @@ -887,6 +887,12 @@ enum ETexFlags TFLAG_BUNNYFRIENDLY = 1, // bunnies like to stay in sectors with this as floor. }; +enum ESurfType +{ + TSURF_WATER = 1, + TSURF_LAVA = 2, +}; + // User->Flags flags enum { diff --git a/source/games/sw/src/namelist.h b/source/games/sw/src/namelist.h index c84c213cb..65d54c9f5 100644 --- a/source/games/sw/src/namelist.h +++ b/source/games/sw/src/namelist.h @@ -313,3 +313,36 @@ x(LAWN, 3561) x(SAND, 3562) x(FLOWERLAWN, 3563) x(THINGRASS, 3564) + +x(FLWATER1, 300) +x(FLWATER2, 301) +x(FLWATER3, 302) +x(FLWATER4, 303) +x(FLWATER5, 304) +x(FLWATER6, 305) +x(FLWATER7, 306) +x(FLWATER8, 307) +x(WATER1, 320) +x(WATER2, 321) +x(WATER3, 322) +x(WATER4, 323) +x(WATER5, 324) +x(WATER6, 325) +x(WATER7, 326) +x(WATER8, 327) +x(WHIRL1, 890) +x(WHIRL2, 891) +x(WHIRL3, 892) +x(WHIRL4, 893) +x(WHIRL5, 894) +x(WHIRL6, 895) +x(WHIRL7, 896) +x(WHIRL8, 897) +x(LAVA1, 175) +x(LAVA2, 176) +x(LAVA3, 177) +x(LAVA4, 178) +x(LAVA5, 179) +x(LAVA6, 180) +x(LAVA7, 181) +x(LAVA8, 182) diff --git a/source/games/sw/src/sector.cpp b/source/games/sw/src/sector.cpp index 14a039845..4be926191 100644 --- a/source/games/sw/src/sector.cpp +++ b/source/games/sw/src/sector.cpp @@ -357,27 +357,12 @@ void SectorLiquidSet(sectortype* sectp) // // /////////////////////////////////// - if (sectp->floorpicnum >= 300 && sectp->floorpicnum <= 307) + if (tilesurface(sectp->floortexture()) == TSURF_WATER) { sectp->u_defined = true; sectp->extra |= (SECTFX_LIQUID_WATER); } - else if (sectp->floorpicnum >= 320 && sectp->floorpicnum <= 343) - { - sectp->u_defined = true; - sectp->extra |= (SECTFX_LIQUID_WATER); - } - else if (sectp->floorpicnum >= 780 && sectp->floorpicnum <= 794) - { - sectp->u_defined = true; - sectp->extra |= (SECTFX_LIQUID_WATER); - } - else if (sectp->floorpicnum >= 890 && sectp->floorpicnum <= 897) - { - sectp->u_defined = true; - sectp->extra |= (SECTFX_LIQUID_WATER); - } - else if (sectp->floorpicnum >= 175 && sectp->floorpicnum <= 182) + else if (tilesurface(sectp->floortexture()) == TSURF_LAVA) { sectp->u_defined = true; sectp->extra |= (SECTFX_LIQUID_LAVA); diff --git a/wadsrc/static/filter/shadowwarrior/constants.mi b/wadsrc/static/filter/shadowwarrior/constants.mi index 5e9286ae0..e3803419f 100644 --- a/wadsrc/static/filter/shadowwarrior/constants.mi +++ b/wadsrc/static/filter/shadowwarrior/constants.mi @@ -4,5 +4,9 @@ constants { // texture flags TFLAG_BUNNYFRIENDLY = 1 + + // surface types + TSURF_WATER = 1 + TSURF_LAVA = 2 } diff --git a/wadsrc/static/filter/shadowwarrior/rmapinfo.texflags b/wadsrc/static/filter/shadowwarrior/rmapinfo.texflags index d40abf0fd..fbbd41c9b 100644 --- a/wadsrc/static/filter/shadowwarrior/rmapinfo.texflags +++ b/wadsrc/static/filter/shadowwarrior/rmapinfo.texflags @@ -15,3 +15,43 @@ textureflags FLOWERLAWN, THINGRASS } + +surfacetypes +{ + TSURF_WATER = + FLWATER1, + FLWATER2, + FLWATER3, + FLWATER4, + FLWATER5, + FLWATER6, + FLWATER7, + FLWATER8, + WATER1, + WATER2, + WATER3, + WATER4, + WATER5, + WATER6, + WATER7, + WATER8, + WHIRL1, + WHIRL2, + WHIRL3, + WHIRL4, + WHIRL5, + WHIRL6, + WHIRL7, + WHIRL8 + + TSURF_LAVA = + LAVA1, + LAVA2, + LAVA3, + LAVA4, + LAVA5, + LAVA6, + LAVA7, + LAVA8 + +} \ No newline at end of file