- Exhumed: Change inita into a DAngle.

This commit is contained in:
Mitchell Richters 2022-09-07 17:48:05 +10:00 committed by Christoph Oelckers
parent 0625d4b65f
commit fc47cec222
26 changed files with 129 additions and 131 deletions

View file

@ -38,7 +38,7 @@ void BuildSplash(DExhumedActor* actor, sectortype* pSector);
// anubis
void BuildAnubis(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle, uint8_t bIsDrummer);
void BuildAnubis(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, DAngle nAngle, uint8_t bIsDrummer);
void FuncAnubis(int, int a, int b, int c);
// bubbles
@ -76,7 +76,7 @@ int GrabBullet();
void DestroyBullet(int nRun);
int MoveBullet(int nBullet);
void SetBulletEnemy(int nBullet, DExhumedActor* nEnemy);
DExhumedActor* BuildBullet(DExhumedActor* pActor, int nType, int val1, int nAngle, DExhumedActor* pTarget, int val3, int horiz = 0);
DExhumedActor* BuildBullet(DExhumedActor* pActor, int nType, int val1, DAngle nAngle, DExhumedActor* pTarget, int val3, int horiz = 0);
void IgniteSprite(DExhumedActor* nSprite);
void FuncBullet(int, int, int, int);
@ -84,7 +84,7 @@ void BackUpBullet(int *x, int *y, int nAngle);
// fish
void BuildFish(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle);
void BuildFish(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, DAngle nAngle);
void FuncFish(int, int, int, int);
void FuncFishLimb(int a, int b, int c);
@ -166,7 +166,7 @@ void DoRegenerates();
// lavadude
void BuildLava(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle, int nChannel);
void BuildLava(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, DAngle nAngle, int nChannel);
DExhumedActor* BuildLavaLimb(DExhumedActor* nSprite, int edx, int ebx);
void FuncLavaLimb(int, int, int, int);
void FuncLava(int, int, int, int);
@ -188,7 +188,7 @@ void AddFlicker(sectortype* pSector, int nVal);
// lion
void BuildLion(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle);
void BuildLion(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, DAngle nAngle);
void FuncLion(int, int, int, int);
// move
@ -242,7 +242,7 @@ void SetQuake(DExhumedActor* nSprite, int nVal);
enum { kMaxMummies = 150 };
void BuildMummy(DExhumedActor* val, const DVector3& pos, sectortype* pSector, int nAngle);
void BuildMummy(DExhumedActor* val, const DVector3& pos, sectortype* pSector, DAngle nAngle);
// object
@ -298,7 +298,7 @@ int BuildSlide(int nChannel, walltype* edx, walltype* ebx, walltype* ecx, wallty
// queen
void InitQueens();
void BuildQueen(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle, int nVal);
void BuildQueen(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, DAngle nAngle, int nVal);
void FuncQueenEgg(int, int, int, int);
void FuncQueenHead(int, int, int, int);
void FuncQueen(int, int, int, int);
@ -329,17 +329,17 @@ void FuncRa(int, int, int, int);
// rat
void InitRats();
void BuildRat(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle);
void BuildRat(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, DAngle nAngle);
void FuncRat(int a, int, int b, int nRun);
// rex
void BuildRex(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle, int nChannel);
void BuildRex(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, DAngle nAngle, int nChannel);
void FuncRex(int, int, int, int);
// roach
void BuildRoach(int nType, DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int angle);
void BuildRoach(int nType, DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, DAngle angle);
void FuncRoach(int a, int, int nDamage, int nRun);
// runlist
@ -701,12 +701,12 @@ void runlist_ExecObjects();
// scorp
void BuildScorp(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle, int nChannel);
void BuildScorp(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, DAngle nAngle, int nChannel);
void FuncScorp(int, int, int, int);
// set
void BuildSet(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle, int nChannel);
void BuildSet(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, DAngle nAngle, int nChannel);
void FuncSoul(int, int, int, int);
void FuncSet(int, int, int, int);
@ -739,7 +739,7 @@ void FuncSnake(int, int, int, int);
// spider
DExhumedActor* BuildSpider(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle);
DExhumedActor* BuildSpider(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, DAngle nAngle);
void FuncSpider(int a, int, int b, int nRun);
// switch
@ -765,7 +765,7 @@ std::pair<int, int> BuildSwPressWall(int nChannel, int nLink, walltype* pWall);
// wasp
DExhumedActor* BuildWasp(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, int nAngle, bool bEggWasp);
DExhumedActor* BuildWasp(DExhumedActor* nSprite, const DVector3& pos, sectortype* pSector, DAngle nAngle, bool bEggWasp);
void FuncWasp(int eax, int, int edx, int nRun);

View file

@ -43,7 +43,7 @@ static const actionSeq AnubisSeq[] = {
{ 43, 1 },
};
void BuildAnubis(DExhumedActor* ap, const DVector3& pos, sectortype* pSector, int nAngle, uint8_t bIsDrummer)
void BuildAnubis(DExhumedActor* ap, const DVector3& pos, sectortype* pSector, DAngle nAngle, uint8_t bIsDrummer)
{
if (ap == nullptr)
{
@ -55,7 +55,7 @@ void BuildAnubis(DExhumedActor* ap, const DVector3& pos, sectortype* pSector, in
ChangeActorStat(ap, 101);
ap->spr.pos.Z = ap->sector()->floorz;
nAngle = ap->int_ang();
nAngle = ap->spr.angle;
}
ap->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
@ -65,7 +65,7 @@ void BuildAnubis(DExhumedActor* ap, const DVector3& pos, sectortype* pSector, in
ap->spr.picnum = 1;
ap->spr.pal = ap->sector()->ceilingpal;
ap->spr.clipdist = 60;
ap->set_int_ang(nAngle);
ap->spr.angle = nAngle;
ap->spr.xrepeat = 40;
ap->spr.yrepeat = 40;
ap->vel.X = 0;
@ -265,7 +265,7 @@ void AIAnubis::Tick(RunListEvent* ev)
// loc_25718:
if (nFlag & 0x80)
{
BuildBullet(ap, 8, -1, ap->int_ang(), pTarget, 1);
BuildBullet(ap, 8, -1, ap->spr.angle, pTarget, 1);
}
}

View file

@ -52,7 +52,7 @@ DExhumedActor* BuildBubble(const DVector3& pos, sectortype* pSector)
pActor->spr.xoffset = 0;
pActor->spr.yoffset = 0;
pActor->spr.picnum = 1;
pActor->set_int_ang(inita);
pActor->spr.angle = inita;
pActor->vel.X = 0;
pActor->vel.Y = 0;
pActor->set_int_zvel(-1200);

View file

@ -533,7 +533,7 @@ void SetBulletEnemy(int nBullet, DExhumedActor* pEnemy)
}
}
DExhumedActor* BuildBullet(DExhumedActor* pActor, int nType, int nZOffset, int nAngle, DExhumedActor* pTarget, int nDoubleDamage, int nPitch)
DExhumedActor* BuildBullet(DExhumedActor* pActor, int nType, int nZOffset, DAngle nAngle, DExhumedActor* pTarget, int nDoubleDamage, int nPitch)
{
Bullet sBullet;
bulletInfo *pBulletInfo = &BulletInfo[nType];
@ -548,7 +548,7 @@ DExhumedActor* BuildBullet(DExhumedActor* pActor, int nType, int nZOffset, int n
sBullet.nDoubleDamage = nDoubleDamage;
sBullet.pActor = insertActor(pActor->sector(), 200);
sBullet.pActor->set_int_ang(nAngle);
sBullet.pActor->spr.angle = nAngle;
double nHeight = GetActorHeightF(pTarget);
@ -616,7 +616,7 @@ DExhumedActor* BuildBullet(DExhumedActor* pActor, int nType, int nZOffset, int n
pBulletActor->spr.yrepeat = (uint8_t)nRepeat;
pBulletActor->spr.xoffset = 0;
pBulletActor->spr.yoffset = 0;
pBulletActor->set_int_ang(nAngle);
pBulletActor->spr.angle = nAngle;
pBulletActor->vel.X = 0;
pBulletActor->vel.Y = 0;
pBulletActor->vel.Z = 0;
@ -703,43 +703,39 @@ DExhumedActor* BuildBullet(DExhumedActor* pActor, int nType, int nZOffset, int n
int var_20 = pTarget->int_pos().Z - nHeight;
int x, y;
DVector2 xy;
if (pActor != nullptr && pActor->spr.statnum != 100)
{
x = pTarget->int_pos().X;
y = pTarget->int_pos().Y;
xy = pTarget->spr.pos.XY();
if (pTarget->spr.statnum != 100)
{
x += (pTarget->int_xvel() * 20) >> 6;
y += (pTarget->int_yvel() * 20) >> 6;
xy += pTarget->vel.XY() * (10. / 32.);
}
else
{
int nPlayer = GetPlayerFromActor(pTarget);
if (nPlayer > -1)
{
x += PlayerList[nPlayer].nPlayerD.X * 15;
y += PlayerList[nPlayer].nPlayerD.Y * 15;
xy.X += PlayerList[nPlayer].nPlayerD.X * (15. / 16.);
xy.Y += PlayerList[nPlayer].nPlayerD.Y * (15. / 16.);
}
}
x -= pBulletActor->int_pos().X;
y -= pBulletActor->int_pos().Y;
xy -= pBulletActor->spr.pos.XY();
nAngle = getangle(x, y);
pActor->set_int_ang(nAngle);
nAngle = xy.Angle();
pActor->spr.angle = nAngle;
}
else
{
// loc_2ABA3:
x = pTarget->int_pos().X - pBulletActor->int_pos().X;
y = pTarget->int_pos().Y - pBulletActor->int_pos().Y;
xy = pTarget->spr.pos.XY() - pBulletActor->spr.pos.XY();
}
int nSqrt = lsqrt(y*y + x*x);
if ((unsigned int)nSqrt > 0)
int nSqrt = (xy * worldtoint).Length();
if (nSqrt > 0)
{
var_18 = ((var_20 - pBulletActor->int_pos().Z) * pBulletInfo->field_4) / nSqrt;
}
@ -751,8 +747,8 @@ DExhumedActor* BuildBullet(DExhumedActor* pActor, int nType, int nZOffset, int n
}
pBullet->z = 0;
pBullet->x = (pActor->spr.clipdist << 2) * bcos(nAngle);
pBullet->y = (pActor->spr.clipdist << 2) * bsin(nAngle);
pBullet->x = (pActor->spr.clipdist << 2) * nAngle.Cos() * (1 << 14);
pBullet->y = (pActor->spr.clipdist << 2) * nAngle.Sin() * (1 << 14);
BulletList[nBullet].pEnemy = nullptr;
@ -763,8 +759,8 @@ DExhumedActor* BuildBullet(DExhumedActor* pActor, int nType, int nZOffset, int n
else
{
pBullet->field_10 = pBulletInfo->field_4;
pBullet->x = bcos(nAngle, -3) * pBulletInfo->field_4;
pBullet->y = bsin(nAngle, -3) * pBulletInfo->field_4;
pBullet->x = nAngle.Cos() * (1 << 11) * pBulletInfo->field_4;
pBullet->y = nAngle.Sin() * (1 << 11) * pBulletInfo->field_4;
pBullet->z = var_18 >> 3;
}

View file

@ -53,7 +53,7 @@ enum {
};
extern DVector3 initpos;
extern int16_t inita;
extern DAngle inita;
extern sectortype* initsectp;
extern int nCurChunkNum;

View file

@ -334,12 +334,12 @@ void GameInterface::Ticker()
}
else if (EndLevel == 0)
{
inita &= kAngleMask;
inita = inita.Normalized360();
for (int i = 0; i < 4; i++)
{
lPlayerXVel += localInput.fvel * bcos(inita) + localInput.svel * bsin(inita);
lPlayerYVel += localInput.fvel * bsin(inita) - localInput.svel * bcos(inita);
lPlayerXVel += localInput.fvel * bcos(inita.Buildang()) + localInput.svel * bsin(inita.Buildang());
lPlayerYVel += localInput.fvel * bsin(inita.Buildang()) - localInput.svel * bcos(inita.Buildang());
lPlayerXVel -= (lPlayerXVel >> 5) + (lPlayerXVel >> 6);
lPlayerYVel -= (lPlayerYVel >> 5) + (lPlayerYVel >> 6);
}

View file

@ -138,7 +138,7 @@ void AIFishLimb::Draw(RunListEvent* ev)
}
void BuildFish(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle)
void BuildFish(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, DAngle nAngle)
{
if (pActor == nullptr)
{
@ -147,7 +147,7 @@ void BuildFish(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector,
}
else
{
nAngle = pActor->int_ang();
nAngle = pActor->spr.angle;
ChangeActorStat(pActor, 103);
}
@ -163,7 +163,7 @@ void BuildFish(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector,
pActor->vel.X = 0;
pActor->vel.Y = 0;
pActor->vel.Z = 0;
pActor->set_int_ang(nAngle);
pActor->spr.angle = nAngle;
pActor->spr.lotag = runlist_HeadRun() + 1;
pActor->spr.hitag = 0;
pActor->spr.extra = -1;

View file

@ -632,11 +632,11 @@ loc_flag:
}
int nAmmoType = WeaponInfo[nWeapon].nAmmoType;
int nAngle = pPlayerActor->int_ang();
DAngle nAngle = pPlayerActor->spr.angle;
auto thePos = pPlayerActor->spr.pos;
int ebp = bcos(nAngle) * (pPlayerActor->spr.clipdist << 3);
int ebx = bsin(nAngle) * (pPlayerActor->spr.clipdist << 3);
int ebp = nAngle.Cos() * (1 << 14) * (pPlayerActor->spr.clipdist << 3);
int ebx = nAngle.Sin() * (1 << 14) * (pPlayerActor->spr.clipdist << 3);
if (WeaponInfo[nWeapon].c)
{
@ -648,9 +648,9 @@ loc_flag:
else
ecx = theVal;
int var_44 = (nAngle + 512) & kAngleMask;
ebp += bcos(var_44, -11) * ecx;
ebx += bsin(var_44, -11) * ecx;
DAngle var_44 = (nAngle + DAngle90).Normalized360();
ebp += var_44.Cos() * (1 << 3) * ecx;
ebx += var_44.Sin() * (1 << 3) * ecx;
}
int nHeight = (-GetActorHeight(pPlayerActor)) >> 1;

View file

@ -40,7 +40,7 @@ enum
};
DVector3 initpos;
int16_t inita;
DAngle inita;
sectortype* initsectp;
int nCurChunkNum = 0;
@ -142,7 +142,9 @@ uint8_t LoadLevel(MapRecord* map)
int initsect;
SpawnSpriteDef spawned;
loadMap(currentLevel->fileName, 0, &initpos, &inita, &initsect, spawned);
int16_t mapang;
loadMap(currentLevel->fileName, 0, &initpos, &mapang, &initsect, spawned);
inita = DAngle::fromBuild(mapang);
initsectp = &sector[initsect];
auto actors = spawnactors(spawned);
@ -422,7 +424,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
return;
}
BuildAnubis(pActor, nulvec, nullptr, 0, 1);
BuildAnubis(pActor, nulvec, nullptr, nullAngle, 1);
return;
}
case 117:
@ -432,27 +434,27 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
return;
}
BuildWasp(pActor, nulvec, nullptr, 0, false);
BuildWasp(pActor, nulvec, nullptr, nullAngle, false);
return;
}
case 116:
{
BuildRat(pActor, nulvec, nullptr, -1);
BuildRat(pActor, nulvec, nullptr, DAngle::fromBam(unsigned(-1)));
return;
}
case 115: // Rat (eating)
{
BuildRat(pActor, nulvec, nullptr, 0);
BuildRat(pActor, nulvec, nullptr, nullAngle);
return;
}
case 113:
{
BuildQueen(pActor, nulvec, nullptr, 0, nChannel);
BuildQueen(pActor, nulvec, nullptr, nullAngle, nChannel);
return;
}
case 112:
{
BuildScorp(pActor, nulvec, nullptr, 0, nChannel);
BuildScorp(pActor, nulvec, nullptr, nullAngle, nChannel);
return;
}
case 111:
@ -462,7 +464,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
return;
}
BuildSet(pActor, nulvec, nullptr, 0, nChannel);
BuildSet(pActor, nulvec, nullptr, nullAngle, nChannel);
return;
}
case 108:
@ -472,7 +474,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
return;
}
BuildLava(pActor, nulvec, nullptr, 0, nChannel);
BuildLava(pActor, nulvec, nullptr, nullAngle, nChannel);
return;
}
case 107:
@ -482,7 +484,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
return;
}
BuildRex(pActor, nulvec, nullptr, 0, nChannel);
BuildRex(pActor, nulvec, nullptr, nullAngle, nChannel);
return;
}
case 106:
@ -492,7 +494,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
return;
}
BuildFish(pActor, nulvec, nullptr, 0);
BuildFish(pActor, nulvec, nullptr, nullAngle);
return;
}
case 105:
@ -502,7 +504,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
return;
}
BuildSpider(pActor, nulvec, nullptr, 0);
BuildSpider(pActor, nulvec, nullptr, nullAngle);
return;
}
case 104:
@ -512,7 +514,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
return;
}
BuildRoach(1, pActor, nulvec, nullptr, 0);
BuildRoach(1, pActor, nulvec, nullptr, nullAngle);
return;
}
case 103:
@ -522,7 +524,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
return;
}
BuildRoach(0, pActor, nulvec, nullptr, 0);
BuildRoach(0, pActor, nulvec, nullptr, nullAngle);
return;
}
case 102:
@ -532,7 +534,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
return;
}
BuildLion(pActor, nulvec, nullptr, 0);
BuildLion(pActor, nulvec, nullptr, nullAngle);
return;
}
case 101:
@ -542,7 +544,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
return;
}
BuildMummy(pActor, nulvec, nullptr, 0);
BuildMummy(pActor, nulvec, nullptr, nullAngle);
return;
}
case 100:
@ -552,7 +554,7 @@ void ProcessSpriteTag(DExhumedActor* pActor, int nLotag, int nHitag)
return;
}
BuildAnubis(pActor, nulvec, nullptr, 0, 0);
BuildAnubis(pActor, nulvec, nullptr, nullAngle, 0);
return;
}
case 99: // underwater type 2

View file

@ -97,7 +97,7 @@ void AILavaDudeLimb::Draw(RunListEvent* ev)
}
void BuildLava(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle, int nChannel)
void BuildLava(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, DAngle nAngle, int nChannel)
{
if (pActor == nullptr)
{
@ -107,7 +107,7 @@ void BuildLava(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector,
else
{
pSector = pActor->sector();
nAngle = pActor->int_ang();
nAngle = pActor->spr.angle;
pActor->spr.pos.Z = pSector->floorz;
ChangeActorStat(pActor, 118);
@ -125,7 +125,7 @@ void BuildLava(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector,
pActor->vel.X = 0;
pActor->vel.Y = 0;
pActor->vel.Z = 0;
pActor->set_int_ang(nAngle);
pActor->spr.angle = nAngle;
pActor->spr.hitag = 0;
pActor->spr.lotag = runlist_HeadRun() + 1;
@ -347,7 +347,7 @@ void AILavaDude::Tick(RunListEvent* ev)
int nHeight = GetActorHeight(pActor);
GetUpAngle(pActor, -64000, pTarget, (-(nHeight >> 1)));
BuildBullet(pActor, 10, -1, pActor->int_ang(), pTarget, 1);
BuildBullet(pActor, 10, -1, pActor->spr.angle, pTarget, 1);
}
else if (var_1C)
{

View file

@ -41,7 +41,7 @@ static actionSeq LionSeq[] = {
};
void BuildLion(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle)
void BuildLion(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, DAngle nAngle)
{
if (pActor == nullptr)
{
@ -52,7 +52,7 @@ void BuildLion(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector,
{
ChangeActorStat(pActor, 104);
pActor->spr.pos.Z = pActor->sector()->floorz;
nAngle = pActor->int_ang();
nAngle = pActor->spr.angle;
}
pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
@ -64,7 +64,7 @@ void BuildLion(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector,
pActor->spr.pal = pActor->sector()->ceilingpal;
pActor->spr.xoffset = 0;
pActor->spr.yoffset = 0;
pActor->set_int_ang(nAngle);
pActor->spr.angle = nAngle;
pActor->vel.X = 0;
pActor->vel.Y = 0;
pActor->vel.Z = 0;

View file

@ -1041,7 +1041,7 @@ void MoveSector(sectortype* pSector, int nAngle, int *nXVel, int *nYVel)
*/
auto pActor = PlayerList[nLocalPlayer].pActor;
initpos = pActor->spr.pos;
inita = pActor->int_ang();
inita = pActor->spr.angle;
initsectp = pActor->sector();
}

View file

@ -37,7 +37,7 @@ static actionSeq MummySeq[] = {
};
void BuildMummy(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle)
void BuildMummy(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, DAngle nAngle)
{
if (pActor == nullptr)
{
@ -46,7 +46,7 @@ void BuildMummy(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector,
}
else
{
nAngle = pActor->int_ang();
nAngle = pActor->spr.angle;
ChangeActorStat(pActor, 102);
}
@ -61,7 +61,7 @@ void BuildMummy(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector,
pActor->spr.pal = pActor->sector()->ceilingpal;
pActor->spr.xoffset = 0;
pActor->spr.yoffset = 0;
pActor->set_int_ang(nAngle);
pActor->spr.angle = nAngle;
pActor->spr.picnum = 1;
pActor->spr.hitag = 0;
pActor->spr.lotag = runlist_HeadRun() + 1;
@ -320,7 +320,7 @@ void AIMummy::Tick(RunListEvent* ev)
SetQuake(pActor, 100);
// low 16 bits of returned var contains the sprite index, the high 16 the bullet number
auto pBullet = BuildBullet(pActor, 9, -15360, pActor->int_ang(), pTarget, 1);
auto pBullet = BuildBullet(pActor, 9, -15360, pActor->spr.angle, pTarget, 1);
CheckMummyRevive(pActor);
if (pBullet)

View file

@ -1308,7 +1308,7 @@ void AITrap::Tick(RunListEvent* ev)
return;
}
auto pBullet = BuildBullet(pActor, nType, 0, pActor->int_ang(), nullptr, 1);
auto pBullet = BuildBullet(pActor, nType, 0, pActor->spr.angle, nullptr, 1);
if (pBullet)
{
if (nType == 15)

View file

@ -101,7 +101,7 @@ size_t MarkPlayers()
return 5 * kMaxPlayers;
}
void SetSavePoint(int nPlayer, const DVector3& pos, sectortype* pSector, int nAngle)
void SetSavePoint(int nPlayer, const DVector3& pos, sectortype* pSector, DAngle nAngle)
{
PlayerList[nPlayer].sPlayerSave.pos = pos;
PlayerList[nPlayer].sPlayerSave.pSector = pSector;
@ -278,7 +278,7 @@ void RestartPlayer(int nPlayer)
{
pActor->spr.pos.XY() = plr->sPlayerSave.pos.XY();
pActor->spr.pos.Z = plr->sPlayerSave.pSector->floorz;
plr->angle.ang = DAngle::fromBuild(plr->sPlayerSave.nAngle&kAngleMask);
plr->angle.ang = plr->sPlayerSave.nAngle;
pActor->spr.angle = plr->angle.ang;
floorsprt = nullptr;
@ -591,8 +591,8 @@ static void pickupMessage(int no)
void UpdatePlayerSpriteAngle(Player* pPlayer)
{
inita = pPlayer->angle.ang.Buildang();
if (pPlayer->pActor) pPlayer->pActor->set_int_ang(inita);
inita = pPlayer->angle.ang;
if (pPlayer->pActor) pPlayer->pActor->spr.angle = inita;
}
void AIPlayer::Draw(RunListEvent* ev)
@ -2170,7 +2170,7 @@ sectdone:
ChangeActorStat(pActorB, 899);
}
SetSavePoint(nPlayer, pPlayerActor->spr.pos, pPlayerActor->sector(), pPlayerActor->int_ang());
SetSavePoint(nPlayer, pPlayerActor->spr.pos, pPlayerActor->sector(), pPlayerActor->spr.angle);
break;
}
@ -2515,7 +2515,7 @@ sectdone:
{
initpos = pPlayerActor->spr.pos;
initsectp = pPlayerActor->sector();
inita = pPlayerActor->int_ang();
inita = pPlayerActor->spr.angle;
}
if (!PlayerList[nPlayer].nHealth)

View file

@ -23,7 +23,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
BEGIN_PS_NS
void SetSavePoint(int nPlayer, const DVector3& pos, sectortype* pSector, int nAngle);
void SetSavePoint(int nPlayer, const DVector3& pos, sectortype* pSector, DAngle nAngle);
void InitPlayer();
void InitPlayerKeys(int nPlayer);
int GrabPlayer();
@ -47,7 +47,7 @@ struct PlayerSave
{
sectortype* pSector;
DVector3 pos;
int16_t nAngle;
DAngle nAngle;
};
struct Player

View file

@ -628,7 +628,7 @@ void AIQueenEgg::Tick(RunListEvent* ev)
pEgg->nCounter--;
if (pEgg->nCounter <= 0)
{
auto pWaspSprite = BuildWasp(nullptr, pActor->spr.pos, pActor->sector(), pActor->int_ang(), true);
auto pWaspSprite = BuildWasp(nullptr, pActor->spr.pos, pActor->sector(), pActor->spr.angle, true);
pActor->spr.pos.Z = pWaspSprite->spr.pos.Z;
DestroyEgg(nEgg);
@ -1066,7 +1066,7 @@ void AIQueenHead::Draw(RunListEvent* ev)
seq_PlotSequence(ev->nParam, nSeq, QueenHead.nFrame, edx);
}
void BuildQueen(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle, int nChannel)
void BuildQueen(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, DAngle nAngle, int nChannel)
{
QueenCount--;
@ -1084,7 +1084,7 @@ void BuildQueen(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector,
{
ChangeActorStat(pActor, 121);
pActor->spr.pos.Z = pActor->sector()->floorz;
nAngle = pActor->int_ang();
nAngle = pActor->spr.angle;
}
pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
@ -1096,7 +1096,7 @@ void BuildQueen(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector,
pActor->spr.xoffset = 0;
pActor->spr.yoffset = 0;
pActor->spr.picnum = 1;
pActor->set_int_ang(nAngle);
pActor->spr.angle = nAngle;
pActor->vel.X = 0;
pActor->vel.Y = 0;
pActor->vel.Z = 0;
@ -1314,7 +1314,7 @@ void AIQueen::Tick(RunListEvent* ev)
if (!si)
{
BuildBullet(pActor, 12, -1, pActor->int_ang(), pTarget, 1);
BuildBullet(pActor, 12, -1, pActor->spr.angle, pTarget, 1);
}
else
{

View file

@ -72,7 +72,7 @@ void SetRatVel(DExhumedActor* pActor)
pActor->VelFromAngle(-2);
}
void BuildRat(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle)
void BuildRat(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, DAngle nAngle)
{
if (pActor == nullptr)
{
@ -83,7 +83,7 @@ void BuildRat(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, i
{
ChangeActorStat(pActor, 108);
pActor->spr.pos.Z = pActor->sector()->floorz;
nAngle = pActor->int_ang();
nAngle = pActor->spr.angle;
}
pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
@ -93,7 +93,7 @@ void BuildRat(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, i
pActor->spr.picnum = 1;
pActor->spr.pal = pActor->sector()->ceilingpal;
pActor->spr.clipdist = 30;
pActor->set_int_ang(nAngle);
pActor->spr.angle = nAngle;
pActor->spr.xrepeat = 50;
pActor->spr.yrepeat = 50;
pActor->vel.X = 0;
@ -103,7 +103,7 @@ void BuildRat(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, i
pActor->spr.hitag = 0;
pActor->spr.extra = -1;
if (nAngle >= 0) {
if (nAngle.Degrees() >= 0) {
pActor->nAction = 2;
}
else {

View file

@ -37,7 +37,7 @@ static actionSeq RexSeq[] = {
{28, 1}
};
void BuildRex(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle, int nChannel)
void BuildRex(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, DAngle nAngle, int nChannel)
{
if (pActor == nullptr)
{
@ -46,7 +46,7 @@ void BuildRex(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, i
}
else
{
nAngle = pActor->int_ang();
nAngle = pActor->spr.angle;
pActor->spr.pos.Z = pActor->sector()->floorz;
ChangeActorStat(pActor, 119);
}
@ -60,7 +60,7 @@ void BuildRex(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, i
pActor->spr.pal = pActor->sector()->ceilingpal;
pActor->spr.xoffset = 0;
pActor->spr.yoffset = 0;
pActor->set_int_ang(nAngle);
pActor->spr.angle = nAngle;
pActor->vel.X = 0;
pActor->vel.Y = 0;
pActor->vel.Z = 0;

View file

@ -35,7 +35,7 @@ static actionSeq RoachSeq[] = {
};
// TODO - make nType a bool?
void BuildRoach(int nType, DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int angle)
void BuildRoach(int nType, DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, DAngle angle)
{
if (pActor == nullptr)
{
@ -46,7 +46,7 @@ void BuildRoach(int nType, DExhumedActor* pActor, const DVector3& pos, sectortyp
{
ChangeActorStat(pActor, 105);
pActor->spr.pos.Z = pActor->sector()->floorz;
angle = pActor->int_ang();
angle = pActor->spr.angle;
}
pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
@ -56,7 +56,7 @@ void BuildRoach(int nType, DExhumedActor* pActor, const DVector3& pos, sectortyp
pActor->spr.picnum = 1;
pActor->spr.pal = pActor->sector()->ceilingpal;
pActor->spr.clipdist = 60;
pActor->set_int_ang(angle);
pActor->spr.angle = angle;
pActor->spr.xrepeat = 40;
pActor->spr.yrepeat = 40;
pActor->vel.X = 0;
@ -338,7 +338,7 @@ void AIRoach::Tick(RunListEvent* ev)
{
if (nFlag & 0x80)
{
BuildBullet(pActor, 13, -1, pActor->int_ang(), pTarget, 1);
BuildBullet(pActor, 13, -1, pActor->spr.angle, pTarget, 1);
}
}

View file

@ -38,7 +38,7 @@ static actionSeq ScorpSeq[] = {
{53, 1}
};
void BuildScorp(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle, int nChannel)
void BuildScorp(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, DAngle nAngle, int nChannel)
{
if (pActor == nullptr)
{
@ -49,7 +49,7 @@ void BuildScorp(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector,
{
ChangeActorStat(pActor, 122);
pActor->spr.pos.Z = pActor->sector()->floorz;
nAngle = pActor->int_ang();
nAngle = pActor->spr.angle;
}
pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
@ -61,7 +61,7 @@ void BuildScorp(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector,
pActor->spr.pal = pActor->sector()->ceilingpal;
pActor->spr.xoffset = 0;
pActor->spr.yoffset = 0;
pActor->set_int_ang(nAngle);
pActor->spr.angle = nAngle;
pActor->vel.X = 0;
pActor->vel.Y = 0;
pActor->vel.Z = 0;
@ -312,7 +312,7 @@ void AIScorp::Tick(RunListEvent* ev)
return;
}
auto nBulletSprite = BuildBullet(pActor, 16, -1, pActor->int_ang(), pTarget, 1);
auto nBulletSprite = BuildBullet(pActor, 16, -1, pActor->spr.angle, pTarget, 1);
if (nBulletSprite)
{
PlotCourseToSprite(nBulletSprite, pTarget);
@ -362,7 +362,7 @@ void AIScorp::Tick(RunListEvent* ev)
return;
}
auto pSpiderActor = BuildSpider(nullptr, pActor->spr.pos, pActor->sector(), pActor->int_ang());
auto pSpiderActor = BuildSpider(nullptr, pActor->spr.pos, pActor->sector(), pActor->spr.angle);
if (pSpiderActor)
{
pSpiderActor->set_int_ang(RandomSize(11));

View file

@ -39,7 +39,7 @@ static actionSeq SetSeq[] = {
{74, 1}
};
void BuildSet(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle, int nChannel)
void BuildSet(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, DAngle nAngle, int nChannel)
{
if (pActor == nullptr)
{
@ -50,7 +50,7 @@ void BuildSet(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, i
{
ChangeActorStat(pActor, 120);
pActor->spr.pos.Z = pActor->sector()->floorz;
nAngle = pActor->int_ang();
nAngle = pActor->spr.angle;
}
pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
@ -64,7 +64,7 @@ void BuildSet(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, i
pActor->spr.pal = pActor->sector()->ceilingpal;
pActor->spr.xoffset = 0;
pActor->spr.yoffset = 0;
pActor->set_int_ang(nAngle);
pActor->spr.angle = nAngle;
pActor->spr.picnum = 1;
pActor->spr.hitag = 0;
pActor->spr.lotag = runlist_HeadRun() + 1;
@ -490,7 +490,7 @@ void AISet::Tick(RunListEvent* ev)
{
if (nFlag & 0x80)
{
auto pBullet = BuildBullet(pActor, 11, -1, pActor->int_ang(), pTarget, 1);
auto pBullet = BuildBullet(pActor, 11, -1, pActor->spr.angle, pTarget, 1);
if (pBullet)
SetBulletEnemy(pBullet->nPhase, pTarget);

View file

@ -499,12 +499,12 @@ void GameInterface::UpdateSounds()
return;
DVector3 pos;
int ang;
DAngle ang;
if (nSnakeCam > -1)
{
Snake *pSnake = &SnakeList[nSnakeCam];
pos = pSnake->pSprites[0]->spr.pos;
ang = pSnake->pSprites[0]->int_ang();
ang = pSnake->pSprites[0]->spr.angle;
}
else
{
@ -512,7 +512,7 @@ void GameInterface::UpdateSounds()
ang = inita;
}
SoundListener listener;
listener.angle = float(-ang * BAngRadian); // Build uses a period of 2048.
listener.angle = float(-ang.Radians()); // Build uses a period of 2048.
listener.velocity.Zero();
listener.position = GetSoundPos(pos);
listener.underwater = false;

View file

@ -36,7 +36,7 @@ static actionSeq SpiderSeq[] = {
};
DExhumedActor* BuildSpider(DExhumedActor* spp, const DVector3& pos, sectortype* pSector, int nAngle)
DExhumedActor* BuildSpider(DExhumedActor* spp, const DVector3& pos, sectortype* pSector, DAngle nAngle)
{
if (spp == nullptr)
{
@ -48,7 +48,7 @@ DExhumedActor* BuildSpider(DExhumedActor* spp, const DVector3& pos, sectortype*
ChangeActorStat(spp, 99);
spp->spr.pos.Z = spp->sector()->floorz;
nAngle = spp->int_ang();
nAngle = spp->spr.angle;
}
spp->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
@ -62,7 +62,7 @@ DExhumedActor* BuildSpider(DExhumedActor* spp, const DVector3& pos, sectortype*
spp->spr.pal = spp->sector()->ceilingpal;
spp->spr.xoffset = 0;
spp->spr.yoffset = 0;
spp->set_int_ang(nAngle);
spp->spr.angle = nAngle;
spp->spr.picnum = 1;
spp->spr.hitag = 0;
spp->spr.lotag = runlist_HeadRun() + 1;

View file

@ -332,13 +332,13 @@ void DrawView(double interpfrac, bool sceneonly)
pPlayerActor->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
int ang2 = nCameraang.Buildang() - pPlayerActor->int_ang();
if (ang2 < 0)
auto ang2 = nCameraang - pPlayerActor->spr.angle;
if (ang2.Degrees() < 0)
ang2 = -ang2;
if (ang2 > 10)
if (ang2 > DAngle::fromBuild(10))
{
inita -= (ang2 >> 3);
inita -= ang2 * (1. / 8.);
return;
}

View file

@ -39,7 +39,7 @@ void SetWaspVel(DExhumedActor* pActor)
pActor->VelFromAngle();
}
DExhumedActor* BuildWasp(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle, bool bEggWasp)
DExhumedActor* BuildWasp(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, DAngle nAngle, bool bEggWasp)
{
if (pActor == nullptr)
{
@ -49,7 +49,7 @@ DExhumedActor* BuildWasp(DExhumedActor* pActor, const DVector3& pos, sectortype*
}
else
{
nAngle = pActor->int_ang();
nAngle = pActor->spr.angle;
ChangeActorStat(pActor, 107);
}
@ -72,7 +72,7 @@ DExhumedActor* BuildWasp(DExhumedActor* pActor, const DVector3& pos, sectortype*
pActor->spr.xoffset = 0;
pActor->spr.yoffset = 0;
pActor->spr.picnum = 1;
pActor->set_int_ang(nAngle);
pActor->spr.angle = nAngle;
pActor->vel.X = 0;
pActor->vel.Y = 0;
pActor->vel.Z = 0;