From 43a15387d296e71b7916929332093f6a227880ac Mon Sep 17 00:00:00 2001 From: MascaraSnake Date: Mon, 27 Dec 2021 21:28:42 +0100 Subject: [PATCH] Adapt diagonal springs to UDMF --- extras/conf/udb/Includes/SRB222_things.cfg | 30 ++++++++++++++++++++++ src/p_mobj.c | 16 +++++++----- src/p_setup.c | 8 ++++++ src/p_spec.h | 6 +++++ 4 files changed, 54 insertions(+), 6 deletions(-) diff --git a/extras/conf/udb/Includes/SRB222_things.cfg b/extras/conf/udb/Includes/SRB222_things.cfg index 523c29c56..41a99d1d7 100644 --- a/extras/conf/udb/Includes/SRB222_things.cfg +++ b/extras/conf/udb/Includes/SRB222_things.cfg @@ -4722,6 +4722,16 @@ udmf title = "Diagonal Yellow Spring"; sprite = "YSPRD2"; width = 16; + arg0 + { + title = "Flags"; + type = 12; + enum + { + 1 = "Ignore gravity"; + 2 = "Rotate 22.5° CCW"; + } + } } 556 { @@ -4729,6 +4739,16 @@ udmf title = "Diagonal Red Spring"; sprite = "RSPRD2"; width = 16; + arg0 + { + title = "Flags"; + type = 12; + enum + { + 1 = "Ignore gravity"; + 2 = "Rotate 22.5° CCW"; + } + } } 557 { @@ -4736,6 +4756,16 @@ udmf title = "Diagonal Blue Spring"; sprite = "BSPRD2"; width = 16; + arg0 + { + title = "Flags"; + type = 12; + enum + { + 1 = "Ignore gravity"; + 2 = "Rotate 22.5° CCW"; + } + } } 558 { diff --git a/src/p_mobj.c b/src/p_mobj.c index 7514b18bd..018d853f6 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -13050,6 +13050,16 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean if (maptol & TOL_XMAS) P_SetMobjState(mobj, mobj->info->seestate); break; + case MT_YELLOWDIAG: + case MT_REDDIAG: + case MT_BLUEDIAG: + mobj->angle = FixedAngle(mthing->angle << FRACBITS); + if (mthing->args[0] & TMDS_NOGRAVITY) + mobj->flags |= MF_NOGRAVITY; + if (mthing->args[0] & TMDS_ROTATEEXTRA) + mobj->angle += ANGLE_22h; + *doangle = false; + break; default: break; } @@ -13065,9 +13075,6 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean static void P_SetAmbush(mobj_t *mobj) { - if (mobj->type == MT_YELLOWDIAG || mobj->type == MT_REDDIAG || mobj->type == MT_BLUEDIAG) - mobj->angle += ANGLE_22h; - if (mobj->flags & MF_NIGHTSITEM) { // Spawn already displayed @@ -13095,9 +13102,6 @@ static void P_SetAmbush(mobj_t *mobj) static void P_SetObjectSpecial(mobj_t *mobj) { - if (mobj->type == MT_YELLOWDIAG || mobj->type == MT_REDDIAG || mobj->type == MT_BLUEDIAG) - mobj->flags |= MF_NOGRAVITY; - if ((mobj->flags & MF_MONITOR) && mobj->info->speed != 0) { // flag for strong/weak random boxes diff --git a/src/p_setup.c b/src/p_setup.c index 1b05ab219..783446298 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -4990,6 +4990,14 @@ static void P_ConvertBinaryMap(void) if (mapthings[i].options & MTF_AMBUSH) mapthings[i].args[2] |= TMSF_INTANGIBLE; break; + case 555: //Diagonal yellow spring + case 556: //Diagonal red spring + case 557: //Diagonal blue spring + if (mapthings[i].options & MTF_OBJECTSPECIAL) + mapthings[i].args[0] |= TMDS_NOGRAVITY; + if (mapthings[i].options & MTF_AMBUSH) + mapthings[i].args[0] |= TMDS_ROTATEEXTRA; + break; case 750: //Slope vertex mapthings[i].args[0] = mapthings[i].extrainfo; break; diff --git a/src/p_spec.h b/src/p_spec.h index 3bd3b0d5c..743c37744 100644 --- a/src/p_spec.h +++ b/src/p_spec.h @@ -63,6 +63,12 @@ typedef enum TMFH_CORONA = 1<<1, } textmapflameholderflags_t; +typedef enum +{ + TMDS_NOGRAVITY = 1, + TMDS_ROTATEEXTRA = 1<<1, +} textmapdiagonalspringflags_t; + //FOF flags typedef enum {