Merge branch 'master' into newrenderer

This commit is contained in:
Christoph Oelckers 2021-04-22 00:10:37 +02:00
commit 14971f9569
65 changed files with 2659 additions and 2976 deletions

View file

@ -1078,7 +1078,7 @@ DoPlayerSpriteThrow(PLAYERp pp)
int
DoPlayerSpriteReset(short SpriteNum)
{
USERp u = User[SpriteNum];
USERp u = User[SpriteNum].Data();
PLAYERp pp;
if (!u->PlayerP)
@ -1146,7 +1146,7 @@ DoPickTarget(SPRITEp sp, uint32_t max_delta_ang, int skip_targets)
SPRITEp ep;
USERp eu;
int16_t* shp;
USERp u = User[sp - sprite];
USERp u = User[sp - sprite].Data();
int ezh, ezhl, ezhm;
unsigned ndx;
TARGET_SORTp ts;
@ -1164,7 +1164,7 @@ DoPickTarget(SPRITEp sp, uint32_t max_delta_ang, int skip_targets)
while ((i = it.NextIndex()) >= 0)
{
ep = &sprite[i];
eu = User[i];
eu = User[i].Data();
// don't pick yourself
if (i == (sp - sprite))
@ -1274,7 +1274,7 @@ DoPlayerResetMovement(PLAYERp pp)
void
DoPlayerTeleportPause(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
// SPRITEp sp = pp->SpriteP;
// set this so we don't get stuck in teleporting loop
@ -1381,7 +1381,7 @@ DoSpawnTeleporterEffectPlace(SPRITEp sp)
void
DoPlayerWarpTeleporter(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
SPRITEp sp = pp->SpriteP;
short pnum;
SPRITEp sp_warp;
@ -1462,8 +1462,8 @@ DoPlayerSetWadeDepth(PLAYERp pp)
if (TEST(sectp->extra, SECTFX_SINK))
{
// make sure your even in the water
if (pp->posz + PLAYER_HEIGHT > pp->lo_sectp->floorz - Z(SectUser[pp->lo_sectp - sector]->depth))
pp->WadeDepth = SectUser[pp->lo_sectp - sector]->depth;
if (pp->posz + PLAYER_HEIGHT > pp->lo_sectp->floorz - Z(FixedToInt(SectUser[pp->lo_sectp - sector]->depth_fixed)))
pp->WadeDepth = FixedToInt(SectUser[pp->lo_sectp - sector]->depth_fixed);
}
}
@ -1650,7 +1650,7 @@ void SlipSlope(PLAYERp pp)
short ang;
SECT_USERp sectu;
if (pp->cursectnum < 0 || !(sectu = SectUser[pp->cursectnum]) || !TEST(sectu->flags, SECTFU_SLIDE_SECTOR) || !TEST(sector[pp->cursectnum].floorstat, FLOOR_STAT_SLOPE))
if (pp->cursectnum < 0 || !(sectu = SectUser[pp->cursectnum].Data()) || !TEST(sectu->flags, SECTFU_SLIDE_SECTOR) || !TEST(sector[pp->cursectnum].floorstat, FLOOR_STAT_SLOPE))
return;
short wallptr = sector[pp->cursectnum].wallptr;
@ -1757,7 +1757,7 @@ void
UpdatePlayerUnderSprite(PLAYERp pp)
{
SPRITEp over_sp = pp->SpriteP;
USERp over_u = User[pp->PlayerSprite];
USERp over_u = User[pp->PlayerSprite].Data();
SPRITEp sp;
USERp u;
@ -1803,7 +1803,7 @@ UpdatePlayerUnderSprite(PLAYERp pp)
}
sp = pp->UnderSpriteP;
u = User[pp->PlayerUnderSprite];
u = User[pp->PlayerUnderSprite].Data();
SpriteNum = pp->PlayerUnderSprite;
@ -1973,7 +1973,7 @@ DoPlayerZrange(PLAYERp pp)
void
DoPlayerSlide(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
int push_ret;
if ((pp->slide_xvect|pp->slide_yvect) == 0)
@ -2066,7 +2066,7 @@ void PlayerSectorBound(PLAYERp pp, int amt)
void
DoPlayerMove(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
int friction;
int save_cstat;
int push_ret = 0;
@ -2582,7 +2582,7 @@ DriveCrush(PLAYERp pp, int *x, int *y)
while ((i = it.NextIndex()) >= 0)
{
sp = &sprite[i];
u = User[i];
u = User[i].Data();
if (testpointinquad(sp->x, sp->y, x, y))
{
@ -2669,7 +2669,7 @@ DriveCrush(PLAYERp pp, int *x, int *y)
continue;
sp = &sprite[i];
u = User[i];
u = User[i].Data();
if (u->PlayerP == pp)
continue;
@ -2698,7 +2698,7 @@ DriveCrush(PLAYERp pp, int *x, int *y)
while ((i = it.NextIndex()) >= 0)
{
sp = &sprite[i];
u = User[i];
u = User[i].Data();
// give some extra buffer
if (sp->z < sop->crush_z + Z(40))
@ -2725,7 +2725,7 @@ DoPlayerMoveVehicle(PLAYERp pp)
int floor_dist;
short save_sectnum;
SPRITEp sp = pp->sop->sp_child;
USERp u = User[sp - sprite];
USERp u = User[sp - sprite].Data();
int save_cstat;
int x[4], y[4], ox[4], oy[4];
int wallcount;
@ -2973,7 +2973,7 @@ DoPlayerMoveTurret(PLAYERp pp)
void
DoPlayerBeginJump(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
SET(pp->Flags, PF_JUMPING);
RESET(pp->Flags, PF_FALLING);
@ -3004,7 +3004,7 @@ DoPlayerBeginJump(PLAYERp pp)
void
DoPlayerBeginForceJump(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
SET(pp->Flags, PF_JUMPING);
RESET(pp->Flags, PF_FALLING|PF_CRAWLING|PF_CLIMBING|PF_LOCK_CRAWL);
@ -3152,7 +3152,7 @@ DoPlayerForceJump(PLAYERp pp)
void
DoPlayerBeginFall(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
SET(pp->Flags, PF_FALLING);
RESET(pp->Flags, PF_JUMPING);
@ -3250,7 +3250,7 @@ DoPlayerFall(PLAYERp pp)
if (PlayerFloorHit(pp, pp->loz - PLAYER_HEIGHT + recoil_amt))
{
SECT_USERp sectu = SectUser[pp->cursectnum];
SECT_USERp sectu = SectUser[pp->cursectnum].Data();
SECTORp sectp = &sector[pp->cursectnum];
PlayerSectorBound(pp, Z(1));
@ -3298,7 +3298,7 @@ DoPlayerFall(PLAYERp pp)
}
else if (pp->jump_speed >= 4000)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
PlayerUpdateHealth(pp, -u->Health); // Make sure he dies!
u->Health = 0;
}
@ -3347,7 +3347,7 @@ DoPlayerFall(PLAYERp pp)
void
DoPlayerBeginClimb(PLAYERp pp)
{
// USERp u = User[pp->PlayerSprite];
// USERp u = User[pp->PlayerSprite].Data();
SPRITEp sp = pp->SpriteP;
RESET(pp->Flags, PF_JUMPING|PF_FALLING);
@ -3369,7 +3369,7 @@ DoPlayerBeginClimb(PLAYERp pp)
void
DoPlayerClimb(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
int climb_amt;
char i;
SPRITEp sp = pp->SpriteP;
@ -3646,7 +3646,7 @@ bool PlayerFlyKey(void)
void
DoPlayerBeginCrawl(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
RESET(pp->Flags, PF_FALLING | PF_JUMPING);
SET(pp->Flags, PF_CRAWLING);
@ -3686,7 +3686,7 @@ bool PlayerFallTest(PLAYERp pp, int player_height)
void
DoPlayerCrawl(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
if (pp->cursectnum >= 0 && SectorIsUnderwaterArea(pp->cursectnum))
{
@ -3762,7 +3762,7 @@ DoPlayerCrawl(PLAYERp pp)
void
DoPlayerBeginFly(PLAYERp pp)
{
// USERp u = User[pp->PlayerSprite];
// USERp u = User[pp->PlayerSprite].Data();
RESET(pp->Flags, PF_FALLING | PF_JUMPING | PF_CRAWLING);
SET(pp->Flags, PF_FLYING);
@ -4110,7 +4110,7 @@ GetOverlapSector(int x, int y, short *over, short *under)
int i, found = 0;
short sf[2]= {0,0}; // sectors found
if ((SectUser[*under] && SectUser[*under]->number >= 30000) || (SectUser[*over] && SectUser[*over]->number >= 30000))
if ((SectUser[*under].Data() && SectUser[*under]->number >= 30000) || (SectUser[*over].Data() && SectUser[*over]->number >= 30000))
return GetOverlapSector2(x,y,over,under);
// instead of check ALL sectors, just check the two most likely first
@ -4266,9 +4266,9 @@ GetOverlapSector2(int x, int y, short *over, short *under)
void
DoPlayerWarpToUnderwater(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
int i;
SECT_USERp sectu = SectUser[pp->cursectnum];
SECT_USERp sectu = SectUser[pp->cursectnum].Data();
SPRITEp under_sp = NULL, over_sp = NULL;
bool Found = false;
short over, under;
@ -4284,7 +4284,7 @@ DoPlayerWarpToUnderwater(PLAYERp pp)
over_sp = &sprite[i];
if (TEST(sector[over_sp->sectnum].extra, SECTFX_DIVE_AREA) &&
SectUser[over_sp->sectnum] &&
SectUser[over_sp->sectnum].Data() &&
SectUser[over_sp->sectnum]->number == sectu->number)
{
Found = true;
@ -4302,7 +4302,7 @@ DoPlayerWarpToUnderwater(PLAYERp pp)
under_sp = &sprite[i];
if (TEST(sector[under_sp->sectnum].extra, SECTFX_UNDERWATER) &&
SectUser[under_sp->sectnum] &&
SectUser[under_sp->sectnum].Data() &&
SectUser[under_sp->sectnum]->number == sectu->number)
{
Found = true;
@ -4343,9 +4343,9 @@ DoPlayerWarpToUnderwater(PLAYERp pp)
void
DoPlayerWarpToSurface(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
int i;
SECT_USERp sectu = SectUser[pp->cursectnum];
SECT_USERp sectu = SectUser[pp->cursectnum].Data();
short over, under;
SPRITEp under_sp = NULL, over_sp = NULL;
@ -4361,7 +4361,7 @@ DoPlayerWarpToSurface(PLAYERp pp)
under_sp = &sprite[i];
if (TEST(sector[under_sp->sectnum].extra, SECTFX_UNDERWATER) &&
SectUser[under_sp->sectnum] &&
SectUser[under_sp->sectnum].Data() &&
SectUser[under_sp->sectnum]->number == sectu->number)
{
Found = true;
@ -4379,7 +4379,7 @@ DoPlayerWarpToSurface(PLAYERp pp)
over_sp = &sprite[i];
if (TEST(sector[over_sp->sectnum].extra, SECTFX_DIVE_AREA) &&
SectUser[over_sp->sectnum] &&
SectUser[over_sp->sectnum].Data() &&
SectUser[over_sp->sectnum]->number == sectu->number)
{
Found = true;
@ -4448,7 +4448,7 @@ void
DoPlayerBeginDive(PLAYERp pp)
{
SPRITEp sp = &sprite[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
if (Prediction)
return;
@ -4496,7 +4496,7 @@ DoPlayerBeginDive(PLAYERp pp)
void DoPlayerBeginDiveNoWarp(PLAYERp pp)
{
SPRITEp sp = &sprite[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
if (Prediction)
return;
@ -4643,8 +4643,8 @@ DoPlayerDiveMeter(PLAYERp pp)
void
DoPlayerDive(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
SECT_USERp sectu = SectUser[pp->cursectnum];
USERp u = User[pp->PlayerSprite].Data();
SECT_USERp sectu = SectUser[pp->cursectnum].Data();
// whenever your view is not in a water area
if (pp->cursectnum < 0 || !SectorIsUnderwaterArea(pp->cursectnum))
@ -4826,7 +4826,7 @@ DoPlayerDive(PLAYERp pp)
int
DoPlayerTestPlaxDeath(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
// landed on a paralax floor
if (pp->lo_sectp && TEST(pp->lo_sectp->floorstat, FLOOR_STAT_PLAX))
@ -4843,7 +4843,7 @@ void
DoPlayerCurrent(PLAYERp pp)
{
int xvect, yvect;
SECT_USERp sectu = SectUser[pp->cursectnum];
SECT_USERp sectu = SectUser[pp->cursectnum].Data();
int push_ret;
if (!sectu)
@ -4857,7 +4857,7 @@ DoPlayerCurrent(PLAYERp pp)
{
if (!TEST(pp->Flags, PF_DEAD))
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
PlayerUpdateHealth(pp, -u->Health); // Make sure he dies!
PlayerCheckDeath(pp, -1);
@ -4874,7 +4874,7 @@ DoPlayerCurrent(PLAYERp pp)
{
if (!TEST(pp->Flags, PF_DEAD))
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
PlayerUpdateHealth(pp, -u->Health); // Make sure he dies!
PlayerCheckDeath(pp, -1);
@ -4889,7 +4889,7 @@ DoPlayerCurrent(PLAYERp pp)
void
DoPlayerFireOutWater(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
if (Prediction)
return;
@ -4905,7 +4905,7 @@ DoPlayerFireOutWater(PLAYERp pp)
void
DoPlayerFireOutDeath(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
if (Prediction)
return;
@ -4919,7 +4919,7 @@ DoPlayerFireOutDeath(PLAYERp pp)
void
DoPlayerBeginWade(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
// landed on a paralax floor?
if (DoPlayerTestPlaxDeath(pp))
@ -4952,7 +4952,7 @@ DoPlayerBeginWade(PLAYERp pp)
void
DoPlayerWade(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
DoPlayerFireOutWater(pp);
@ -5093,7 +5093,7 @@ DoPlayerWade(PLAYERp pp)
void
DoPlayerBeginOperateBoat(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
pp->floor_dist = PLAYER_RUN_FLOOR_DIST;
pp->ceiling_dist = PLAYER_RUN_CEILING_DIST;
@ -5114,7 +5114,7 @@ DoPlayerBeginOperateBoat(PLAYERp pp)
void
DoPlayerBeginOperateVehicle(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
pp->floor_dist = PLAYER_RUN_FLOOR_DIST;
pp->ceiling_dist = PLAYER_RUN_CEILING_DIST;
@ -5134,7 +5134,7 @@ DoPlayerBeginOperateVehicle(PLAYERp pp)
void
DoPlayerBeginOperateTurret(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
pp->floor_dist = PLAYER_RUN_FLOOR_DIST;
pp->ceiling_dist = PLAYER_RUN_CEILING_DIST;
@ -5815,7 +5815,7 @@ DoPlayerBeginDie(PLAYERp pp)
short bak;
int choosesnd = 0;
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
static void (*PlayerDeathFunc[MAX_PLAYER_DEATHS]) (PLAYERp) =
{
@ -5860,7 +5860,7 @@ DoPlayerBeginDie(PLAYERp pp)
// Give kill credit to player if necessary
if (pp->Killer >= 0)
{
USERp ku = User[pp->Killer];
USERp ku = User[pp->Killer].Data();
ASSERT(ku);
@ -6056,7 +6056,7 @@ DoPlayerDeathTilt(PLAYERp pp, short target, short speed)
void
DoPlayerDeathZrange(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
// make sure we don't land on a regular sprite
DoFindGround(pp->PlayerSprite);
@ -6133,7 +6133,7 @@ void DoPlayerDeathFollowKiller(PLAYERp pp)
void DoPlayerDeathCheckKeys(PLAYERp pp)
{
SPRITEp sp = pp->SpriteP;
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
if (pp->input.actions & SB_OPEN)
{
@ -6229,7 +6229,7 @@ DoPlayerHeadDebris(PLAYERp pp)
SPRITEp DoPlayerDeathCheckKick(PLAYERp pp)
{
SPRITEp sp = pp->SpriteP, hp;
USERp u = User[pp->PlayerSprite], hu;
USERp u = User[pp->PlayerSprite].Data(), hu;
int i;
unsigned stat;
int dist;
@ -6241,7 +6241,7 @@ SPRITEp DoPlayerDeathCheckKick(PLAYERp pp)
while ((i = it.NextIndex()) >= 0)
{
hp = &sprite[i];
hu = User[i];
hu = User[i].Data();
if (i == pp->PlayerSprite)
break;
@ -6292,7 +6292,7 @@ SPRITEp DoPlayerDeathCheckKick(PLAYERp pp)
void DoPlayerDeathMoveHead(PLAYERp pp)
{
SPRITEp sp = pp->SpriteP;
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
int dax,day;
short sectnum;
@ -6444,7 +6444,7 @@ void DoPlayerDeathDrown(PLAYERp pp)
void DoPlayerDeathBounce(PLAYERp pp)
{
SPRITEp sp = pp->SpriteP;
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
if (Prediction)
return;
@ -6474,7 +6474,7 @@ void DoPlayerDeathBounce(PLAYERp pp)
void DoPlayerDeathCrumble(PLAYERp pp)
{
SPRITEp sp = pp->SpriteP;
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
if (Prediction)
return;
@ -6527,7 +6527,7 @@ void DoPlayerDeathCrumble(PLAYERp pp)
void DoPlayerDeathExplode(PLAYERp pp)
{
SPRITEp sp = pp->SpriteP;
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
if (Prediction)
return;
@ -6583,7 +6583,7 @@ void DoPlayerDeathExplode(PLAYERp pp)
void
DoPlayerBeginRun(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
// Crawl if in small aread automatically
if (DoPlayerTestCrawl(pp))
@ -6618,7 +6618,7 @@ DoPlayerBeginRun(PLAYERp pp)
void
DoPlayerRun(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u = User[pp->PlayerSprite].Data();
if (pp->cursectnum >= 0 && SectorIsUnderwaterArea(pp->cursectnum))
{
@ -6767,7 +6767,7 @@ PlayerStateControl(int16_t SpriteNum)
return;
// Convienience var
u = User[SpriteNum];
u = User[SpriteNum].Data();
if (u == NULL)
return;
@ -6858,7 +6858,7 @@ MoveSkipSavePos(void)
continue;
sp = &sprite[i];
u = User[i];
u = User[i].Data();
if (sp == NULL || u == NULL)
continue;
@ -6882,7 +6882,7 @@ MoveSkipSavePos(void)
if ((unsigned)i >= MAXSPRITES)
continue;
sp = &sprite[i];
u = User[i];
u = User[i].Data();
if (sp == NULL || u == NULL)
continue;
@ -7439,7 +7439,7 @@ InitMultiPlayerInfo(void)
start0 = SpawnSprite(MultiStatList[stat], ST1, NULL, pp->cursectnum, pp->posx, pp->posy, pp->posz, pp->angle.ang.asbuild(), 0);
ASSERT(start0 >= 0);
FreeUser(start0);
User[start0].Clear();
sprite[start0].picnum = ST1;
}
@ -7474,7 +7474,7 @@ InitMultiPlayerInfo(void)
int
DoFootPrints(short SpriteNum)
{
USERp u = User[SpriteNum];
USERp u = User[SpriteNum].Data();
if (u->PlayerP)
{