- consolidated Exhumed’s velocity setters

This commit is contained in:
Christoph Oelckers 2022-09-03 12:06:50 +02:00
parent 6eb18eb3f6
commit b462c3d998
16 changed files with 47 additions and 68 deletions

View file

@ -157,8 +157,7 @@ void AIAnubis::Tick(RunListEvent* ev)
ap->nFrame = 0;
ap->pTarget = pTarget;
ap->set_int_xvel(bcos(ap->int_ang(), -2));
ap->set_int_yvel(bsin(ap->int_ang(), -2));
ap->VelFromAngle(-2);
}
}
return;
@ -194,8 +193,7 @@ void AIAnubis::Tick(RunListEvent* ev)
case kHitWall:
{
ap->set_int_ang((ap->int_ang() + 256) & kAngleMask);
ap->set_int_xvel(bcos(ap->int_ang(), -2));
ap->set_int_yvel(bsin(ap->int_ang(), -2));
ap->VelFromAngle(-2);
break;
}

View file

@ -238,8 +238,7 @@ void BulletHitsSprite(Bullet *pBullet, DExhumedActor* pBulletActor, DExhumedActo
int xVel = pHitActor->int_xvel();
int yVel = pHitActor->int_yvel();
pHitActor->set_int_xvel(bcos(pActor->int_ang(), -2));
pHitActor->set_int_yvel(bsin(pActor->int_ang(), -2));
pHitActor->VelFromAngle(-2);
MoveCreature(pHitActor);

View file

@ -608,6 +608,18 @@ std::pair<DVector3, DAngle> GameInterface::GetCoordinates()
}
/*
void DExhumedActor::VelFromAngle(int shift = 0)
{
vel.XY() = spr.angle.ToVector() * (1 << (14 + shift));
}
*/
void DExhumedActor::VelFromAngle(int shift)
{
set_int_xvel(bcos(int_ang(), shift));
set_int_yvel(bsin(int_ang(), shift));
}
void DExhumedActor::Serialize(FSerializer& arc)
{
Super::Serialize(arc);

View file

@ -43,7 +43,7 @@ public:
DExhumedActor() = default;
void Serialize(FSerializer& arc) override;
void VelFromAngle(int shift = 0);
};
// subclassed to add a game specific actor() method

View file

@ -187,8 +187,7 @@ void IdleFish(DExhumedActor* pActor, int edx)
pActor->add_int_ang((256 - RandomSize(9)) + 1024);
pActor->norm_ang();
pActor->set_int_xvel(bcos(pActor->int_ang(), -8));
pActor->set_int_yvel(bsin(pActor->int_ang(), -8));
pActor->VelFromAngle(-8);
pActor->nAction = 0;
pActor->nFrame = 0;

View file

@ -264,8 +264,7 @@ void AILavaDude::Tick(RunListEvent* ev)
PlotCourseToSprite(pActor, pTarget);
pActor->set_int_xvel(bcos(pActor->int_ang()));
pActor->set_int_yvel(bsin(pActor->int_ang()));
pActor->VelFromAngle();
if (pTarget && !RandomSize(1))
{
@ -288,8 +287,7 @@ void AILavaDude::Tick(RunListEvent* ev)
pActor->spr.pos = pos;
pActor->set_int_ang((pActor->int_ang() + ((RandomWord() & 0x3FF) + 1024)) & kAngleMask);
pActor->set_int_xvel(bcos(pActor->int_ang()));
pActor->set_int_yvel(bsin(pActor->int_ang()));
pActor->VelFromAngle();
break;
}
@ -300,8 +298,7 @@ void AILavaDude::Tick(RunListEvent* ev)
if (coll.type == kHitWall)
{
pActor->set_int_ang((pActor->int_ang() + ((RandomWord() & 0x3FF) + 1024)) & kAngleMask);
pActor->set_int_xvel(bcos(pActor->int_ang()));
pActor->set_int_yvel(bsin(pActor->int_ang()));
pActor->VelFromAngle();
break;
}
else if (coll.type == kHitSprite)

View file

@ -236,8 +236,7 @@ void AILion::Tick(RunListEvent* ev)
pActor->nAction = 2;
pActor->nFrame = 0;
pActor->set_int_xvel(bcos(pActor->int_ang(), -1));
pActor->set_int_yvel(bsin(pActor->int_ang(), -1));
pActor->VelFromAngle(-1);
pActor->pTarget = pTarget;
return;
}
@ -252,8 +251,7 @@ void AILion::Tick(RunListEvent* ev)
if (RandomBit())
{
pActor->set_int_ang(RandomWord() & kAngleMask);
pActor->set_int_xvel(bcos(pActor->int_ang(), -1));
pActor->set_int_yvel(bsin(pActor->int_ang(), -1));
pActor->VelFromAngle(-1);
}
else
{
@ -292,8 +290,7 @@ void AILion::Tick(RunListEvent* ev)
{
// loc_378FA:
pActor->set_int_ang((pActor->int_ang() + 256) & kAngleMask);
pActor->set_int_xvel(bcos(pActor->int_ang(), -1));
pActor->set_int_yvel(bsin(pActor->int_ang(), -1));
pActor->VelFromAngle(-1);
break;
}
else if (nMov.type == kHitSprite)
@ -323,8 +320,7 @@ void AILion::Tick(RunListEvent* ev)
{
// loc_378FA:
pActor->set_int_ang((pActor->int_ang() + 256) & kAngleMask);
pActor->set_int_xvel(bcos(pActor->int_ang(), -1));
pActor->set_int_yvel(bsin(pActor->int_ang(), -1));
pActor->VelFromAngle(-1);
break;
}
}
@ -448,8 +444,7 @@ void AILion::Tick(RunListEvent* ev)
{
// loc_378FA:
pActor->set_int_ang((pActor->int_ang() + 256) & kAngleMask);
pActor->set_int_xvel(bcos(pActor->int_ang(), -1));
pActor->set_int_yvel(bsin(pActor->int_ang(), -1));
pActor->VelFromAngle(-1);
break;
}
}
@ -476,7 +471,7 @@ void AILion::Tick(RunListEvent* ev)
pActor->set_int_zvel(-1000);
pActor->nAction = 6;
pActor->set_int_xvel(bcos(pActor->int_ang()) - bcos(pActor->int_ang(), -3));
pActor->set_int_xvel(bcos(pActor->int_ang()) - bcos(pActor->int_ang(), -3));
pActor->set_int_yvel(bsin(pActor->int_ang()) - bsin(pActor->int_ang(), -3));
D3PlayFX(StaticSound[kSound24], pActor);
}

View file

@ -638,8 +638,7 @@ Collision MoveCreatureWithCaution(DExhumedActor* pActor)
ChangeActorSect(pActor, pSectorPre);
pActor->set_int_ang((pActor->int_ang() + 256) & kAngleMask);
pActor->set_int_xvel(bcos(pActor->int_ang(), -2));
pActor->set_int_yvel(bsin(pActor->int_ang(), -2));
pActor->VelFromAngle(-2);
Collision c;
c.setNone();
return c;

View file

@ -176,8 +176,7 @@ void AIMummy::Tick(RunListEvent* ev)
pActor->nAction = 1;
pActor->nCount = 90;
pActor->set_int_xvel(bcos(pActor->int_ang(), -2));
pActor->set_int_yvel(bsin(pActor->int_ang(), -2));
pActor->VelFromAngle(-2);
}
}
}
@ -218,8 +217,7 @@ void AIMummy::Tick(RunListEvent* ev)
// loc_2B5A8
if (!pActor->nFrame)
{
pActor->set_int_xvel(bcos(pActor->int_ang(), -1));
pActor->set_int_yvel(bsin(pActor->int_ang(), -1));
pActor->VelFromAngle(-1);
}
if (pActor->vel.X != 0 || pActor->vel.Y != 0)
@ -260,8 +258,7 @@ void AIMummy::Tick(RunListEvent* ev)
case kHitWall:
{
pActor->set_int_ang((pActor->int_ang() + ((RandomWord() & 0x3FF) + 1024)) & kAngleMask);
pActor->set_int_xvel(bcos(pActor->int_ang(), -2));
pActor->set_int_yvel(bsin(pActor->int_ang(), -2));
pActor->VelFromAngle(-2);
return;
}

View file

@ -604,8 +604,7 @@ void AIQueenEgg::Tick(RunListEvent* ev)
case kHitWall:
pActor->set_int_ang((RandomSize(9) + 768));
pActor->norm_ang();
pActor->set_int_xvel(bcos(pActor->int_ang(), -3));
pActor->set_int_yvel(bsin(pActor->int_ang(), -3));
pActor->VelFromAngle(-3);
pActor->set_int_zvel(-RandomSize(5));
break;
}
@ -1128,8 +1127,7 @@ void BuildQueen(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector,
void SetQueenSpeed(DExhumedActor* pActor, int nSpeed)
{
pActor->set_int_xvel(bcos(pActor->int_ang(), -(2 - nSpeed)));
pActor->set_int_yvel(bsin(pActor->int_ang(), -(2 - nSpeed)));
pActor->VelFromAngle(-(2 - nSpeed));
}
void AIQueen::Tick(RunListEvent* ev)

View file

@ -69,8 +69,7 @@ void InitRats()
void SetRatVel(DExhumedActor* pActor)
{
pActor->set_int_xvel(bcos(pActor->int_ang(), -2));
pActor->set_int_yvel(bsin(pActor->int_ang(), -2));
pActor->VelFromAngle(-2);
}
void BuildRat(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle)

View file

@ -221,8 +221,7 @@ void AIRex::Tick(RunListEvent* ev)
pActor->nAction = 1;
pActor->nFrame = 0;
pActor->set_int_xvel(bcos(pActor->int_ang(), -2));
pActor->set_int_yvel(bsin(pActor->int_ang(), -2));
pActor->VelFromAngle(-2);
D3PlayFX(StaticSound[kSound48], pActor);
@ -287,8 +286,7 @@ void AIRex::Tick(RunListEvent* ev)
case kHitWall:
{
pActor->set_int_ang((pActor->int_ang() + 256) & kAngleMask);
pActor->set_int_xvel(bcos(pActor->int_ang(), -2));
pActor->set_int_yvel(bsin(pActor->int_ang(), -2));
pActor->VelFromAngle(-2);
pActor->nAction = 1;
pActor->nFrame = 0;
nAction = 1;
@ -306,8 +304,7 @@ void AIRex::Tick(RunListEvent* ev)
{
PlotCourseToSprite(pActor, pTarget);
pActor->set_int_xvel(bcos(pActor->int_ang(), -1));
pActor->set_int_yvel(bsin(pActor->int_ang(), -1));
pActor->VelFromAngle(-1);
auto nMov = MoveCreatureWithCaution(pActor);
@ -319,8 +316,7 @@ void AIRex::Tick(RunListEvent* ev)
pActor->nCount = 60;
pActor->set_int_ang((pActor->int_ang() + 256) & kAngleMask);
pActor->set_int_xvel(bcos(pActor->int_ang(), -2));
pActor->set_int_yvel(bsin(pActor->int_ang(), -2));
pActor->VelFromAngle(-2);
pActor->nAction = 1;
pActor->nFrame = 0;
nAction = 1;

View file

@ -217,8 +217,7 @@ void AIScorp::Tick(RunListEvent* ev)
D3PlayFX(StaticSound[kSound41], pActor);
pActor->nFrame = 0;
pActor->set_int_xvel(bcos(pActor->int_ang()));
pActor->set_int_yvel(bsin(pActor->int_ang()));
pActor->VelFromAngle();
pActor->nAction = 1;
pActor->pTarget = pTarget;
@ -302,8 +301,7 @@ void AIScorp::Tick(RunListEvent* ev)
{
pActor->nAction = 1;
pActor->set_int_xvel(bcos(pActor->int_ang()));
pActor->set_int_yvel(bsin(pActor->int_ang()));
pActor->VelFromAngle();
pActor->nFrame = 0;
return;
@ -410,8 +408,7 @@ void AIScorp::Effect(RunListEvent* ev, DExhumedActor* pTarget, int mode)
pActor->add_int_ang(RandomSize(7) - 63);
pActor->norm_ang();
pActor->set_int_xvel(bcos(pActor->int_ang()));
pActor->set_int_yvel(bsin(pActor->int_ang()));
pActor->VelFromAngle();
}
if (mode <= 1)
{

View file

@ -295,8 +295,7 @@ void AISet::Tick(RunListEvent* ev)
pActor->nFrame = 0;
pActor->pTarget = pTarget;
pActor->set_int_xvel(bcos(pActor->int_ang(), -1));
pActor->set_int_yvel(bsin(pActor->int_ang(), -1));
pActor->VelFromAngle(-1);
}
}
@ -419,8 +418,7 @@ void AISet::Tick(RunListEvent* ev)
}
pActor->set_int_ang((pActor->int_ang() + 256) & kAngleMask);
pActor->set_int_xvel(bcos(pActor->int_ang(), -1));
pActor->set_int_yvel(bsin(pActor->int_ang(), -1));
pActor->VelFromAngle(-1);
break;
}
else if (nMov.type == kHitSprite)
@ -522,8 +520,7 @@ void AISet::Tick(RunListEvent* ev)
pActor->nAction = 8;
pActor->nFrame = 0;
pActor->set_int_xvel(bcos(pActor->int_ang()));
pActor->set_int_yvel(bsin(pActor->int_ang()));
pActor->VelFromAngle();
}
return;
}

View file

@ -142,8 +142,7 @@ void AISpider::Tick(RunListEvent* ev)
spp->nFrame = 0;
spp->pTarget = pTarget;
spp->set_int_xvel(bcos(spp->int_ang()));
spp->set_int_yvel(bsin(spp->int_ang()));
spp->VelFromAngle();
return;
}
}
@ -193,8 +192,7 @@ void AISpider::Tick(RunListEvent* ev)
if (RandomSize(3))
{
spp->set_int_xvel(bcos(spp->int_ang()));
spp->set_int_yvel(bsin(spp->int_ang()));
spp->VelFromAngle();
}
else
{
@ -300,8 +298,7 @@ void AISpider::Tick(RunListEvent* ev)
case kHitWall:
{
spp->set_int_ang((spp->int_ang() + 256) & 0x7EF);
spp->set_int_xvel(bcos(spp->int_ang()));
spp->set_int_yvel(bsin(spp->int_ang()));
spp->VelFromAngle();
return;
}
case kHitSprite:

View file

@ -36,8 +36,7 @@ static actionSeq WaspSeq[] = {
void SetWaspVel(DExhumedActor* pActor)
{
pActor->set_int_xvel(bcos(pActor->int_ang()));
pActor->set_int_yvel(bsin(pActor->int_ang()));
pActor->VelFromAngle();
}
DExhumedActor* BuildWasp(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, int nAngle, bool bEggWasp)