mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-22 03:31:26 +00:00
- another batch of utility use
This commit is contained in:
parent
8ba7cb0ddb
commit
c5fb88e203
10 changed files with 43 additions and 48 deletions
|
@ -115,9 +115,8 @@ void GameInterface::WarpToCoords(int x, int y, int z, int ang, int horz)
|
|||
{
|
||||
player_struct* p = &ps[myconnectindex];
|
||||
|
||||
p->__int_opos.X = p->__int_pos.X = x;
|
||||
p->__int_opos.Y = p->__int_pos.Y = y;
|
||||
p->__int_opos.Z = p->__int_pos.Z = z;
|
||||
p->__int_pos = { x, y, z };
|
||||
p->backupxyz();
|
||||
|
||||
if (ang != INT_MIN)
|
||||
{
|
||||
|
|
|
@ -2047,9 +2047,7 @@ int ParseState::parse(void)
|
|||
if(!isRR() && ps[g_p].newOwner != nullptr)
|
||||
{
|
||||
ps[g_p].newOwner = nullptr;
|
||||
ps[g_p].__int_pos.X = ps[g_p].player_int_opos().X;
|
||||
ps[g_p].__int_pos.Y = ps[g_p].player_int_opos().Y;
|
||||
ps[g_p].__int_pos.Z = ps[g_p].player_int_opos().Z;
|
||||
ps[g_p].restorexyz();
|
||||
ps[g_p].angle.restore();
|
||||
updatesector(ps[g_p].player_int_pos().X,ps[g_p].player_int_pos().Y,&ps[g_p].cursector);
|
||||
|
||||
|
@ -2226,7 +2224,9 @@ int ParseState::parse(void)
|
|||
{
|
||||
// I am not convinced this is even remotely smart to be executed from here..
|
||||
pickrandomspot(g_p);
|
||||
g_ac->set_int_pos({ ps[g_p].bobpos.X = ps[g_p].__int_opos.X = ps[g_p].player_int_pos().X, ps[g_p].bobpos.Y = ps[g_p].__int_opos.Y = ps[g_p].player_int_pos().Y, ps[g_p].__int_opos.Z = ps[g_p].__int_pos.Z });
|
||||
g_ac->set_int_pos(ps[g_p].player_int_pos());
|
||||
ps[g_p].backupxyz();
|
||||
ps[g_p].setbobpos();
|
||||
g_ac->backuppos();
|
||||
updatesector(ps[g_p].player_int_pos().X, ps[g_p].player_int_pos().Y, &ps[g_p].cursector);
|
||||
SetActor(ps[g_p].GetActor(), vec3_t( ps[g_p].player_int_pos().X, ps[g_p].player_int_pos().Y, ps[g_p].player_int_pos().Z + gs.int_playerheight ));
|
||||
|
|
|
@ -215,10 +215,10 @@ int hitawall(struct player_struct* p, walltype** hitw)
|
|||
{
|
||||
HitInfo hit{};
|
||||
|
||||
hitscan(p->__int_pos, p->cursector, { p->angle.ang.bcos(), p->angle.ang.bsin(), 0 }, hit, CLIPMASK0);
|
||||
hitscan(p->player_int_pos(), p->cursector, { p->angle.ang.bcos(), p->angle.ang.bsin(), 0 }, hit, CLIPMASK0);
|
||||
if (hitw) *hitw = hit.hitWall;
|
||||
|
||||
return (FindDistance2D(hit.hitpos.vec2 - p->__int_pos.vec2));
|
||||
return (FindDistance2D(hit.hitpos.vec2 - p->player_int_pos().vec2));
|
||||
}
|
||||
|
||||
|
||||
|
@ -252,7 +252,7 @@ DDukeActor* aim(DDukeActor* actor, int aang)
|
|||
int zvel = -plr->horizon.sum().asq16() >> 5;
|
||||
|
||||
HitInfo hit{};
|
||||
hitscan(plr->__int_pos.withZOffset(1024), actor->sector(), { bcos(actor->spr.ang), bsin(actor->spr.ang), zvel }, hit, CLIPMASK1);
|
||||
hitscan(plr->player_int_pos().withZOffset(1024), actor->sector(), { bcos(actor->spr.ang), bsin(actor->spr.ang), zvel }, hit, CLIPMASK1);
|
||||
|
||||
if (hit.actor() != nullptr)
|
||||
{
|
||||
|
@ -769,16 +769,14 @@ void player_struct::backuppos(bool noclipping)
|
|||
{
|
||||
if (!noclipping)
|
||||
{
|
||||
__int_opos.X = player_int_pos().X;
|
||||
__int_opos.Y = player_int_pos().Y;
|
||||
backupxy();
|
||||
}
|
||||
else
|
||||
{
|
||||
__int_pos.X = player_int_opos().X;
|
||||
__int_pos.Y = player_int_opos().Y;
|
||||
restorexy();
|
||||
}
|
||||
|
||||
__int_opos.Z = player_int_pos().Z;
|
||||
backupz();
|
||||
bobpos.X = player_int_pos().X;
|
||||
bobpos.Y = player_int_pos().Y;
|
||||
opyoff = pyoff;
|
||||
|
|
|
@ -184,7 +184,7 @@ static void shootflamethrowerflame(DDukeActor* actor, int p, int sx, int sy, int
|
|||
zvel = -MulScale(ps[p].horizon.sum().asq16(), 81, 16);
|
||||
if (ps[p].GetActor()->spr.xvel != 0)
|
||||
vel = (int)((((512 - (1024
|
||||
- abs(abs(getangle(sx - ps[p].player_int_opos().X, sy - ps[p].__int_opos.Y) - sa) - 1024)))
|
||||
- abs(abs(getangle(sx - ps[p].player_int_opos().X, sy - ps[p].player_int_opos().Y) - sa) - 1024)))
|
||||
* 0.001953125f) * ps[p].GetActor()->spr.xvel) + 400);
|
||||
if (actor->sector()->lotag == 2 && (krand() % 5) == 0)
|
||||
spawned = spawn(actor, WATERBUBBLE);
|
||||
|
@ -2736,7 +2736,7 @@ void processinput_d(int snum)
|
|||
p->spritebridge = 0;
|
||||
|
||||
shrunk = (pact->spr.yrepeat < 32);
|
||||
getzrange(p->__int_pos, psectp, &cz, chz, &fz, clz, 163, CLIPMASK0);
|
||||
getzrange(p->player_int_pos(), psectp, &cz, chz, &fz, clz, 163, CLIPMASK0);
|
||||
|
||||
j = getflorzofslopeptr(psectp, p->player_int_pos().X, p->player_int_pos().Y);
|
||||
|
||||
|
|
|
@ -3401,12 +3401,12 @@ void processinput_r(int snum)
|
|||
int tempfz;
|
||||
if (pact->spr.clipdist == 64)
|
||||
{
|
||||
getzrange(p->__int_pos, psectp, &cz, chz, &fz, clz, 163L, CLIPMASK0);
|
||||
getzrange(p->player_int_pos(), psectp, &cz, chz, &fz, clz, 163L, CLIPMASK0);
|
||||
tempfz = getflorzofslopeptr(psectp, p->player_int_pos().X, p->player_int_pos().Y);
|
||||
}
|
||||
else
|
||||
{
|
||||
getzrange(p->__int_pos, psectp, &cz, chz, &fz, clz, 4L, CLIPMASK0);
|
||||
getzrange(p->player_int_pos(), psectp, &cz, chz, &fz, clz, 4L, CLIPMASK0);
|
||||
tempfz = getflorzofslopeptr(psectp, p->player_int_pos().X, p->player_int_pos().Y);
|
||||
}
|
||||
|
||||
|
|
|
@ -95,9 +95,9 @@ void pickrandomspot(int snum)
|
|||
i = krand()%numplayersprites;
|
||||
else i = snum;
|
||||
|
||||
p->bobpos.X = p->__int_opos.X = p->__int_pos.X = po[i].opos.X;
|
||||
p->bobpos.Y = p->__int_opos.Y = p->__int_pos.Y = po[i].opos.Y;
|
||||
p->__int_opos.Z = p->__int_pos.Z = po[i].opos.Z;
|
||||
p->__int_pos = po[i].opos;
|
||||
p->backupxyz();
|
||||
p->setbobpos();
|
||||
p->angle.oang = p->angle.ang = buildang(po[i].oa);
|
||||
p->setCursector(po[i].os);
|
||||
}
|
||||
|
@ -615,9 +615,7 @@ void resetpspritevars(int g)
|
|||
firsty = ps[0].player_int_pos().Y;
|
||||
}
|
||||
|
||||
po[numplayersprites].opos.X = act->int_pos().X;
|
||||
po[numplayersprites].opos.Y = act->int_pos().Y;
|
||||
po[numplayersprites].opos.Z = act->int_pos().Z;
|
||||
po[numplayersprites].opos = act->int_pos();
|
||||
po[numplayersprites].oa = act->spr.ang;
|
||||
po[numplayersprites].os = act->sector();
|
||||
|
||||
|
@ -659,9 +657,9 @@ void resetpspritevars(int g)
|
|||
ps[j].frag_ps = j;
|
||||
act->SetOwner(act);
|
||||
|
||||
ps[j].bobpos.X = ps[j].__int_opos.X = ps[j].__int_pos.X = act->int_pos().X;
|
||||
ps[j].bobpos.Y = ps[j].__int_opos.Y = ps[j].__int_pos.Y = act->int_pos().Y;
|
||||
ps[j].__int_opos.Z = ps[j].__int_pos.Z = act->int_pos().Z;
|
||||
ps[j].getposfromactor(act);
|
||||
ps[j].backupxyz();
|
||||
ps[j].setbobpos();
|
||||
act->backuppos();
|
||||
ps[j].angle.oang = ps[j].angle.ang = buildang(act->spr.ang);
|
||||
|
||||
|
@ -1005,7 +1003,9 @@ static int LoadTheMap(MapRecord *mi, struct player_struct *p, int gamemode)
|
|||
currentLevel = mi;
|
||||
int sect;
|
||||
SpawnSpriteDef sprites;
|
||||
loadMap(mi->fileName, isShareware(), &p->__int_pos, &lbang, §, sprites);
|
||||
vec3_t pos;
|
||||
loadMap(mi->fileName, isShareware(), &pos, &lbang, §, sprites);
|
||||
p->__int_pos = pos;
|
||||
p->cursector = §or[sect];
|
||||
|
||||
SECRET_SetMapName(mi->DisplayName(), mi->name);
|
||||
|
|
|
@ -277,9 +277,7 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, player_struct& w,
|
|||
.EndObject();
|
||||
|
||||
w.invdisptime = 0;
|
||||
w.__int_opos.X = w.player_int_pos().X;
|
||||
w.__int_opos.Y = w.player_int_pos().Y;
|
||||
w.__int_opos.Z = w.player_int_pos().Z;
|
||||
w.backupxyz();
|
||||
w.opyoff = w.pyoff;
|
||||
w.backupweapon();
|
||||
w.sync.actions &= SB_CENTERVIEW|SB_CROUCH; // these are the only bits we need to preserve.
|
||||
|
|
|
@ -482,7 +482,7 @@ bool checkhitswitch_d(int snum, walltype* wwal, DDukeActor *act)
|
|||
return 1;
|
||||
}
|
||||
|
||||
vec3_t v = { sx, sy, ps[snum].__int_pos.Z };
|
||||
vec3_t v = { sx, sy, ps[snum].player_int_pos().Z };
|
||||
switch (picnum)
|
||||
{
|
||||
default:
|
||||
|
@ -1441,9 +1441,7 @@ void checkhitsprite_d(DDukeActor* targ, DDukeActor* proj)
|
|||
if (ps[p].newOwner != nullptr)
|
||||
{
|
||||
ps[p].newOwner = nullptr;
|
||||
ps[p].__int_pos.X = ps[p].player_int_opos().X;
|
||||
ps[p].__int_pos.Y = ps[p].player_int_opos().Y;
|
||||
ps[p].__int_pos.Z = ps[p].player_int_opos().Z;
|
||||
ps[p].restorexyz();
|
||||
ps[p].angle.restore();
|
||||
|
||||
updatesector(ps[p].player_int_pos().X, ps[p].player_int_pos().Y, &ps[p].cursector);
|
||||
|
@ -1479,9 +1477,7 @@ void clearcameras(int i, player_struct* p)
|
|||
{
|
||||
if (i < 0)
|
||||
{
|
||||
p->__int_pos.X = p->player_int_opos().X;
|
||||
p->__int_pos.Y = p->player_int_opos().Y;
|
||||
p->__int_pos.Z = p->player_int_opos().Z;
|
||||
p->restorexyz();
|
||||
p->newOwner = nullptr;
|
||||
|
||||
updatesector(p->player_int_pos().X, p->player_int_pos().Y, &p->cursector);
|
||||
|
@ -1593,10 +1589,10 @@ void checksectors_d(int snum)
|
|||
return;
|
||||
}
|
||||
if (p->newOwner != nullptr)
|
||||
neartag({ p->player_int_opos().X, p->player_int_opos().Y, p->__int_opos.Z }, p->GetActor()->sector(), p->angle.oang.asbuild(), near, 1280L, 1);
|
||||
neartag({ p->player_int_opos().X, p->player_int_opos().Y, p->player_int_opos().Z }, p->GetActor()->sector(), p->angle.oang.asbuild(), near, 1280L, 1);
|
||||
else
|
||||
{
|
||||
neartag(p->__int_pos, p->GetActor()->sector(), p->angle.oang.asbuild(), near, 1280, 1);
|
||||
neartag(p->player_int_pos(), p->GetActor()->sector(), p->angle.oang.asbuild(), near, 1280, 1);
|
||||
if (near.actor() == nullptr && near.hitWall == nullptr && near.hitSector == nullptr)
|
||||
neartag({ p->player_int_pos().X, p->player_int_pos().Y, p->player_int_pos().Z + (8 << 8) }, p->GetActor()->sector(), p->angle.oang.asbuild(), near, 1280, 1);
|
||||
if (near.actor() == nullptr && near.hitWall == nullptr && near.hitSector == nullptr)
|
||||
|
|
|
@ -681,7 +681,7 @@ bool checkhitswitch_r(int snum, walltype* wwal, DDukeActor* act)
|
|||
setnextmap(false);
|
||||
}
|
||||
|
||||
vec3_t v = { sx, sy, ps[snum].__int_pos.Z };
|
||||
vec3_t v = { sx, sy, ps[snum].player_int_pos().Z };
|
||||
switch (picnum)
|
||||
{
|
||||
default:
|
||||
|
@ -2373,9 +2373,7 @@ void checkhitsprite_r(DDukeActor* targ, DDukeActor* proj)
|
|||
if (ps[p].newOwner != nullptr)
|
||||
{
|
||||
ps[p].newOwner = nullptr;
|
||||
ps[p].__int_pos.X = ps[p].player_int_opos().X;
|
||||
ps[p].__int_pos.Y = ps[p].player_int_opos().Y;
|
||||
ps[p].__int_pos.Z = ps[p].player_int_opos().Z;
|
||||
ps[p].restorexyz();
|
||||
|
||||
updatesector(ps[p].player_int_pos().X, ps[p].player_int_pos().Y, &ps[p].cursector);
|
||||
|
||||
|
@ -2526,14 +2524,14 @@ void checksectors_r(int snum)
|
|||
}
|
||||
return;
|
||||
}
|
||||
neartag(p->__int_pos, p->GetActor()->sector(), p->angle.oang.asbuild(), near , 1280, 3);
|
||||
neartag(p->player_int_pos(), p->GetActor()->sector(), p->angle.oang.asbuild(), near , 1280, 3);
|
||||
}
|
||||
|
||||
if (p->newOwner != nullptr)
|
||||
neartag({ p->player_int_opos().X, p->player_int_opos().Y, p->__int_opos.Z }, p->GetActor()->sector(), p->angle.oang.asbuild(), near, 1280L, 1);
|
||||
neartag({ p->player_int_opos().X, p->player_int_opos().Y, p->player_int_opos().Z }, p->GetActor()->sector(), p->angle.oang.asbuild(), near, 1280L, 1);
|
||||
else
|
||||
{
|
||||
neartag(p->__int_pos, p->GetActor()->sector(), p->angle.oang.asbuild(), near, 1280, 1);
|
||||
neartag(p->player_int_pos(), p->GetActor()->sector(), p->angle.oang.asbuild(), near, 1280, 1);
|
||||
if (near.actor() == nullptr && near.hitWall == nullptr && near.hitSector == nullptr)
|
||||
neartag({ p->player_int_pos().X, p->player_int_pos().Y, p->player_int_pos().Z + (8 << 8) }, p->GetActor()->sector(), p->angle.oang.asbuild(), near, 1280, 1);
|
||||
if (near.actor() == nullptr && near.hitWall == nullptr && near.hitSector == nullptr)
|
||||
|
|
|
@ -374,6 +374,12 @@ struct player_struct
|
|||
__int_opos.Y = __int_pos.Y;
|
||||
}
|
||||
|
||||
void restorexy()
|
||||
{
|
||||
__int_pos.X = __int_opos.X;
|
||||
__int_pos.Y = __int_opos.Y;
|
||||
}
|
||||
|
||||
void backupz()
|
||||
{
|
||||
__int_opos.Z = __int_pos.Z;
|
||||
|
|
Loading…
Reference in a new issue