Adjustments to how springs work for customization
Springs are now have gravity by default and that gets inverted if arg0 is set with flag TMSPR_NOGRAVITY
This commit is contained in:
parent
4610034752
commit
2474569652
3 changed files with 60 additions and 16 deletions
28
src/p_mobj.c
28
src/p_mobj.c
|
|
@ -12611,7 +12611,12 @@ fixed_t P_GetMapThingSpawnHeight(const mobjtype_t mobjtype, const mapthing_t* mt
|
|||
switch (mobjtype)
|
||||
{
|
||||
// Objects with a non-zero default height.
|
||||
// (None yet)
|
||||
// Horizontal springs, float additional units unless args[0] is set.
|
||||
case MT_YELLOWHORIZ:
|
||||
case MT_REDHORIZ:
|
||||
case MT_BLUEHORIZ:
|
||||
offset += mthing->args[0] ? 0 : 16*FRACUNIT;
|
||||
break;
|
||||
|
||||
// Ring-like items, float additional units unless args[0] is set.
|
||||
case MT_SPIKEBALL:
|
||||
|
|
@ -13747,18 +13752,27 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean
|
|||
break;
|
||||
|
||||
}
|
||||
case MT_REDDIAG:
|
||||
case MT_YELLOWDIAG:
|
||||
case MT_BLUEDIAG:
|
||||
case MT_GRAYDIAG:
|
||||
case MT_REDSPRING:
|
||||
case MT_BLUESPRING:
|
||||
case MT_GRAYSPRING:
|
||||
case MT_YELLOWSPRING:
|
||||
case MT_INVISSPRING:
|
||||
{
|
||||
if (mapnamespace == MNS_SRB2KART)
|
||||
mobj->flags ^= MF_NOGRAVITY;
|
||||
if (mthing->args[0] & TMSPR_NOGRAVITY)
|
||||
mobj->gravity = 0;
|
||||
break;
|
||||
}
|
||||
case MT_YELLOWDIAG:
|
||||
case MT_REDDIAG:
|
||||
case MT_BLUEDIAG:
|
||||
case MT_GRAYDIAG:
|
||||
{
|
||||
mobj->angle = FixedAngle(mthing->angle << FRACBITS);
|
||||
if (mthing->args[0] & TMSPR_NOGRAVITY)
|
||||
mobj->gravity = 0;
|
||||
if (mthing->args[0] & TMSPR_ROTATEEXTRA)
|
||||
mobj->angle += ANGLE_22h;
|
||||
*doangle = false;
|
||||
break;
|
||||
}
|
||||
case MT_DASHRING:
|
||||
|
|
|
|||
|
|
@ -7350,9 +7350,9 @@ static void P_ConvertBinaryThingTypes(void)
|
|||
case 557: //Diagonal blue spring
|
||||
case 558: //Diagonal grey spring
|
||||
if (mapthings[i].options & MTF_OBJECTSPECIAL)
|
||||
mapthings[i].args[0] |= TMDS_NOGRAVITY;
|
||||
mapthings[i].args[0] |= TMSPR_NOGRAVITY;
|
||||
if (mapthings[i].options & MTF_AMBUSH)
|
||||
mapthings[i].args[0] |= TMDS_ROTATEEXTRA;
|
||||
mapthings[i].args[0] |= TMSPR_ROTATEEXTRA;
|
||||
break;
|
||||
case 559: //Horizontal yellow spring
|
||||
case 560: //Horizontal red spring
|
||||
|
|
@ -7971,23 +7971,50 @@ static void P_RemapDoomedNum(boolean mappatch)
|
|||
TYPECONVERT(MT_BLUEHORIZ, 560)
|
||||
TYPECONVERT(MT_GRAYDIAG, 557)
|
||||
TYPECONVERT(MT_GRAYHORIZ, 561)
|
||||
TYPECONVERT(MT_SNEAKERPANEL, 510)
|
||||
TYPECONVERT(MT_SNEAKERPANELSPAWNER, 511)
|
||||
TYPECONVERT(MT_DASHRING, 3441)
|
||||
TYPECONVERT(MT_RAINBOWDASHRING, 3442)
|
||||
}
|
||||
|
||||
TYPECONVERT(MT_SNEAKERPANEL, 510)
|
||||
TYPECONVERT(MT_SNEAKERPANELSPAWNER, 511)
|
||||
TYPECONVERT(MT_WAYPOINT_RISER, 2002)
|
||||
TYPECONVERT(MT_WAYPOINT_ANCHOR, 2003)
|
||||
TYPECONVERT(MT_BOTHINT, 2004)
|
||||
TYPECONVERT(MT_ITEMCAPSULE, 2010)
|
||||
TYPECONVERT(MT_LOOPENDPOINT, 2020)
|
||||
TYPECONVERT(MT_LOOPCENTERPOINT, 2021)
|
||||
TYPECONVERT(MT_DASHRING, 3441)
|
||||
TYPECONVERT(MT_RAINBOWDASHRING, 3442)
|
||||
TYPECONVERT(MT_SCRIPT_THING, 4096)
|
||||
}
|
||||
#undef TYPECONVERT
|
||||
}
|
||||
|
||||
static void P_SetCompatArgs(void)
|
||||
{
|
||||
if (mapnamespace != MNS_RINGRACERS)
|
||||
return;
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i < nummapthings; i++)
|
||||
{
|
||||
switch(mapthings[i].type)
|
||||
{
|
||||
case MT_YELLOWDIAG:
|
||||
case MT_REDDIAG:
|
||||
case MT_BLUEDIAG:
|
||||
case MT_GRAYDIAG:
|
||||
case MT_REDSPRING:
|
||||
case MT_BLUESPRING:
|
||||
case MT_GRAYSPRING:
|
||||
case MT_YELLOWSPRING:
|
||||
case MT_INVISSPRING:
|
||||
mapthings[i].args[0] |= TMSPR_NOGRAVITY;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static boolean P_LoadMapFromFile(void)
|
||||
{
|
||||
TracyCZone(__zone, true);
|
||||
|
|
@ -8013,6 +8040,9 @@ static boolean P_LoadMapFromFile(void)
|
|||
// Should allow for textmap conversion of things making it easier for people to convert their RR maps.
|
||||
P_RemapDoomedNum(false);
|
||||
|
||||
// Now set some arguments used for compatbility.
|
||||
P_SetCompatArgs();
|
||||
|
||||
if (!udmf)
|
||||
P_AddBinaryMapTags();
|
||||
|
||||
|
|
|
|||
|
|
@ -118,9 +118,9 @@ typedef enum
|
|||
|
||||
typedef enum
|
||||
{
|
||||
TMDS_NOGRAVITY = 1,
|
||||
TMDS_ROTATEEXTRA = 1<<1,
|
||||
} textmapdiagonalspringflags_t;
|
||||
TMSPR_NOGRAVITY = 1,
|
||||
TMSPR_ROTATEEXTRA = 1<<1,
|
||||
} textmapspringflags_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue