mirror of
https://github.com/ZDoom/Raze.git
synced 2025-03-13 20:42:11 +00:00
- PlotCourseToSprite, FindPlayer and GetUpAngle.
This commit is contained in:
parent
49c1163a33
commit
30541b09a4
2 changed files with 24 additions and 44 deletions
|
@ -244,12 +244,7 @@ DExhumedActor* GrabBody();
|
|||
DExhumedActor* GrabBodyGunSprite();
|
||||
void CreatePushBlock(int nSector);
|
||||
void FuncCreatureChunk(int a, int, int nRun);
|
||||
int FindPlayer(int nSprite, int nDistance, bool dontengage = false);
|
||||
inline DExhumedActor* FindPlayer(DExhumedActor* nSprite, int nDistance, bool dontengage = false)
|
||||
{
|
||||
int targ = FindPlayer(nSprite->GetSpriteIndex(), nDistance, dontengage);
|
||||
return targ > -1 ? &exhumedActors[targ] : nullptr;
|
||||
}
|
||||
DExhumedActor* FindPlayer(DExhumedActor* nSprite, int nDistance, bool dontengage = false);
|
||||
|
||||
int BuildCreatureChunk(int nVal, int nPic);
|
||||
DExhumedActor* BuildCreatureChunk(DExhumedActor* pSrc, int nPic, bool bSpecial = false)
|
||||
|
@ -260,22 +255,11 @@ DExhumedActor* BuildCreatureChunk(DExhumedActor* pSrc, int nPic, bool bSpecial =
|
|||
return c < 0 ? nullptr : &exhumedActors[c];
|
||||
}
|
||||
void BuildNear(int x, int y, int walldist, int nSector);
|
||||
int PlotCourseToSprite(int nSprite1, int nSprite2);
|
||||
inline int PlotCourseToSprite(DExhumedActor* nSprite1, DExhumedActor* nSprite2)
|
||||
{
|
||||
if (nSprite1 == nullptr || nSprite2 == nullptr)
|
||||
return -1;
|
||||
|
||||
return PlotCourseToSprite(nSprite1->GetSpriteIndex(), nSprite2->GetSpriteIndex());
|
||||
}
|
||||
int PlotCourseToSprite(DExhumedActor* nSprite1, DExhumedActor* nSprite2);
|
||||
void CheckSectorFloor(short nSector, int z, int *x, int *y);
|
||||
int GetAngleToSprite(DExhumedActor* nSprite1, DExhumedActor* nSprite2);
|
||||
int GetWallNormal(short nWall);
|
||||
int GetUpAngle(short nSprite1, int nVal, short nSprite2, int ecx);
|
||||
int GetUpAngle(DExhumedActor* nSprite1, int nVal, DExhumedActor* nSprite2, int ecx)
|
||||
{
|
||||
return GetUpAngle(nSprite1->GetSpriteIndex(), nVal, nSprite2->GetSpriteIndex(), ecx);
|
||||
}
|
||||
int GetUpAngle(DExhumedActor* nSprite1, int nVal, DExhumedActor* nSprite2, int ecx);
|
||||
void MoveSector(short nSector, int nAngle, int *nXVel, int *nYVel);
|
||||
Collision AngleChase(DExhumedActor* nSprite, DExhumedActor* nSprite2, int ebx, int ecx, int push1);
|
||||
void SetQuake(short nSprite, int nVal);
|
||||
|
|
|
@ -713,13 +713,13 @@ int GetAngleToSprite(DExhumedActor* a1, DExhumedActor* a2)
|
|||
return GetMyAngle(pSprite2->x - pSprite1->x, pSprite2->y - pSprite1->y);
|
||||
}
|
||||
|
||||
int PlotCourseToSprite(int nSprite1, int nSprite2)
|
||||
int PlotCourseToSprite(DExhumedActor* pActor1, DExhumedActor* pActor2)
|
||||
{
|
||||
if (nSprite1 < 0 || nSprite2 < 0)
|
||||
if (pActor1 == nullptr || pActor2 == nullptr)
|
||||
return -1;
|
||||
|
||||
auto pSprite1 = &sprite[nSprite1];
|
||||
auto pSprite2 = &sprite[nSprite2];
|
||||
auto pSprite1 = &pActor1->s();
|
||||
auto pSprite2 = &pActor2->s();
|
||||
int x = pSprite2->x - pSprite1->x;
|
||||
int y = pSprite2->y - pSprite1->y;
|
||||
|
||||
|
@ -739,15 +739,10 @@ int PlotCourseToSprite(int nSprite1, int nSprite2)
|
|||
return ksqrt(diff);
|
||||
}
|
||||
|
||||
int FindPlayer(int nSprite, int nDistance, bool dontengage)
|
||||
DExhumedActor* FindPlayer(DExhumedActor* pActor, int nDistance, bool dontengage)
|
||||
{
|
||||
auto pSprite = &sprite[nSprite];
|
||||
int var_18 = 0;
|
||||
if (nSprite >= 0 || !dontengage)
|
||||
var_18 = 1;
|
||||
|
||||
if (nSprite < 0)
|
||||
nSprite = -nSprite;
|
||||
auto pSprite = &pActor->s();
|
||||
int var_18 = !dontengage;
|
||||
|
||||
if (nDistance < 0)
|
||||
nDistance = 100;
|
||||
|
@ -756,29 +751,30 @@ int FindPlayer(int nSprite, int nDistance, bool dontengage)
|
|||
int y = pSprite->y;
|
||||
short nSector = pSprite->sectnum;
|
||||
|
||||
int z = pSprite->z - GetSpriteHeight(nSprite);
|
||||
int z = pSprite->z - GetActorHeight(pActor);
|
||||
|
||||
nDistance <<= 8;
|
||||
|
||||
short nPlayerSprite;
|
||||
DExhumedActor* pPlayerActor = nullptr;
|
||||
int i = 0;
|
||||
|
||||
while (1)
|
||||
{
|
||||
if (i >= nTotalPlayers)
|
||||
return -1;
|
||||
return nullptr;
|
||||
|
||||
nPlayerSprite = PlayerList[i].nSprite;
|
||||
pPlayerActor = PlayerList[i].Actor();
|
||||
auto pPlayerSprite = &pPlayerActor->s();
|
||||
|
||||
if ((sprite[nPlayerSprite].cstat & 0x101) && (!(sprite[nPlayerSprite].cstat & 0x8000)))
|
||||
if ((pPlayerSprite->cstat & 0x101) && (!(pPlayerSprite->cstat & 0x8000)))
|
||||
{
|
||||
int v9 = abs(sprite[nPlayerSprite].x - x);
|
||||
int v9 = abs(pPlayerSprite->x - x);
|
||||
|
||||
if (v9 < nDistance)
|
||||
{
|
||||
int v10 = abs(sprite[nPlayerSprite].y - y);
|
||||
int v10 = abs(pPlayerSprite->y - y);
|
||||
|
||||
if (v10 < nDistance && cansee(sprite[nPlayerSprite].x, sprite[nPlayerSprite].y, sprite[nPlayerSprite].z - 7680, sprite[nPlayerSprite].sectnum, x, y, z, nSector))
|
||||
if (v10 < nDistance && cansee(pPlayerSprite->x, pPlayerSprite->y, pPlayerSprite->z - 7680, pPlayerSprite->sectnum, x, y, z, nSector))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
@ -789,10 +785,10 @@ int FindPlayer(int nSprite, int nDistance, bool dontengage)
|
|||
}
|
||||
|
||||
if (var_18) {
|
||||
PlotCourseToSprite(nSprite, nPlayerSprite);
|
||||
PlotCourseToSprite(pActor, pPlayerActor);
|
||||
}
|
||||
|
||||
return nPlayerSprite;
|
||||
return pPlayerActor;
|
||||
}
|
||||
|
||||
void CheckSectorFloor(short nSector, int z, int *x, int *y)
|
||||
|
@ -818,10 +814,10 @@ void CheckSectorFloor(short nSector, int z, int *x, int *y)
|
|||
}
|
||||
}
|
||||
|
||||
int GetUpAngle(short nSprite1, int nVal, short nSprite2, int ecx)
|
||||
int GetUpAngle(DExhumedActor* pActor1, int nVal, DExhumedActor* pActor2, int ecx)
|
||||
{
|
||||
auto pSprite1 = &sprite[nSprite1];
|
||||
auto pSprite2 = &sprite[nSprite2];
|
||||
auto pSprite1 = &pActor1->s();
|
||||
auto pSprite2 = &pActor2->s();
|
||||
int x = pSprite2->x - pSprite1->x;
|
||||
int y = pSprite2->y - pSprite1->y;
|
||||
|
||||
|
|
Loading…
Reference in a new issue