mirror of
https://github.com/ZDoom/Raze.git
synced 2025-02-20 18:42:26 +00:00
- use dudeslope wrappers.
This commit is contained in:
parent
e44759d2ea
commit
27c0a00df6
9 changed files with 29 additions and 27 deletions
|
@ -59,7 +59,7 @@ AISTATE tinycaleb139698 = { kAiStateOther, 8, -1, 120, NULL, aiMoveTurn, NULL, &
|
|||
|
||||
void SeqAttackCallback(int, DBloodActor* actor)
|
||||
{
|
||||
DVector3 vect(actor->spr.angle.ToVector(), actor->_dudeSlope / 16384.);
|
||||
DVector3 vect(actor->spr.angle.ToVector(), actor->flt_dudeSlope());
|
||||
vect.X += Random2F(1500, 4);
|
||||
vect.Y += Random2F(1500, 4);
|
||||
vect.Z += Random2F(1500, 8);
|
||||
|
|
|
@ -84,7 +84,7 @@ void cerberusBurnSeqCallback(int, DBloodActor* actor)
|
|||
DVector3 pos(actor->spr.pos.XY(), height);
|
||||
//auto pos = actor->spr.pos.plusZ(height); // what it probably should be
|
||||
|
||||
DVector3 Aim(actor->spr.angle.ToVector(), actor->_dudeSlope / 16384.);
|
||||
DVector3 Aim(actor->spr.angle.ToVector(), actor->flt_dudeSlope());
|
||||
double nClosest = 0x7fffffff;
|
||||
BloodStatIterator it(kStatDude);
|
||||
while (auto actor2 = it.Next())
|
||||
|
@ -100,7 +100,7 @@ void cerberusBurnSeqCallback(int, DBloodActor* actor)
|
|||
|
||||
DVector3 tvec = pos;
|
||||
tvec.XY() += actor->spr.angle.ToVector() * nDist;
|
||||
tvec.Z += actor->_dudeSlope / 16384. * nDist;
|
||||
tvec.Z += actor->flt_dudeSlope() * nDist;
|
||||
double tsr = nDist * 9.23828125;
|
||||
double top, bottom;
|
||||
GetActorExtents(actor2, &top, &bottom);
|
||||
|
@ -145,7 +145,7 @@ void cerberusBurnSeqCallback2(int, DBloodActor* actor)
|
|||
DVector3 pos(actor->spr.pos.XY(), height);
|
||||
//auto pos = actor->spr.pos.plusZ(height); // what it probably should be
|
||||
|
||||
DVector3 Aim(actor->spr.angle.ToVector(), actor->_dudeSlope / 16384.);
|
||||
DVector3 Aim(actor->spr.angle.ToVector(), actor->flt_dudeSlope());
|
||||
DVector3 Aim2(Aim.XY(), 0);
|
||||
|
||||
double nClosest = 0x7fffffff;
|
||||
|
@ -165,7 +165,7 @@ void cerberusBurnSeqCallback2(int, DBloodActor* actor)
|
|||
|
||||
DVector3 tvec = pos;
|
||||
tvec.XY() += actor->spr.angle.ToVector() * nDist;
|
||||
tvec.Z += actor->_dudeSlope / 16384. * nDist;
|
||||
tvec.Z += actor->flt_dudeSlope() * nDist;
|
||||
|
||||
double tsr = nDist * 9.23828125;
|
||||
double top, bottom;
|
||||
|
|
|
@ -75,7 +75,7 @@ AISTATE cultistSwimRecoil = { kAiStateRecoil, 5, -1, 0, NULL, NULL, NULL, &culti
|
|||
|
||||
void TommySeqCallback(int, DBloodActor* actor)
|
||||
{
|
||||
DVector3 vect(actor->spr.angle.ToVector(), actor->_dudeSlope / 16384);
|
||||
DVector3 vect(actor->spr.angle.ToVector(), actor->flt_dudeSlope());
|
||||
vect.X += Random3F((5 - gGameOptions.nDifficulty) * 1000, 14);
|
||||
vect.Y += Random3F((5 - gGameOptions.nDifficulty) * 1000, 14);
|
||||
vect.Z += Random3F((5 - gGameOptions.nDifficulty) * 500, 14);
|
||||
|
@ -87,7 +87,7 @@ void TeslaSeqCallback(int, DBloodActor* actor)
|
|||
{
|
||||
if (Chance(gCultTeslaFireChance[gGameOptions.nDifficulty]))
|
||||
{
|
||||
DVector3 vect(actor->spr.angle.ToVector(), actor->_dudeSlope / 16384);
|
||||
DVector3 vect(actor->spr.angle.ToVector(), actor->flt_dudeSlope());
|
||||
vect.X += Random3F((5 - gGameOptions.nDifficulty) * 1000, 14);
|
||||
vect.Y += Random3F((5 - gGameOptions.nDifficulty) * 1000, 14);
|
||||
vect.Z += Random3F((5 - gGameOptions.nDifficulty) * 500, 14);
|
||||
|
@ -98,7 +98,7 @@ void TeslaSeqCallback(int, DBloodActor* actor)
|
|||
|
||||
void ShotSeqCallback(int, DBloodActor* actor)
|
||||
{
|
||||
DVector3 vect(actor->spr.angle.ToVector(), actor->_dudeSlope / 16384);
|
||||
DVector3 vect(actor->spr.angle.ToVector(), actor->flt_dudeSlope());
|
||||
vect.X += Random3F((5 - gGameOptions.nDifficulty) * 1000, 14);
|
||||
vect.Y += Random3F((5 - gGameOptions.nDifficulty) * 1000, 14);
|
||||
vect.Z += Random3F((5 - gGameOptions.nDifficulty) * 500, 14);
|
||||
|
@ -143,7 +143,7 @@ void cultThrowSeqCallback2(int, DBloodActor* actor)
|
|||
if (gGameOptions.nDifficulty > 2)
|
||||
nMissile = kThingArmedTNTBundle;
|
||||
sfxPlay3DSound(actor, 455, -1, 0);
|
||||
auto pMissile = actFireThing(actor, 0, 0, actor->_dudeSlope - 9460, nMissile, 0x133333);
|
||||
auto pMissile = actFireThing(actor, 0, 0, actor->int_dudeSlope() - 9460, nMissile, 0x133333);
|
||||
evPostActor(pMissile, 120 * (2 + Random(2)), kCmdOn, actor);
|
||||
}
|
||||
|
||||
|
|
|
@ -96,7 +96,7 @@ void SlashFSeqCallback(int, DBloodActor* actor)
|
|||
|
||||
void ThrowFSeqCallback(int, DBloodActor* actor)
|
||||
{
|
||||
actFireThing(actor, 0, 0, actor->_dudeSlope - 7500, kThingBone, 0xeeeee);
|
||||
actFireThing(actor, 0, 0, actor->int_dudeSlope() - 7500, kThingBone, 0xeeeee);
|
||||
}
|
||||
|
||||
void BlastSSeqCallback(int, DBloodActor* actor)
|
||||
|
@ -107,7 +107,7 @@ void BlastSSeqCallback(int, DBloodActor* actor)
|
|||
double height = (actor->spr.yrepeat * getDudeInfo(actor->spr.type)->eyeHeight) * REPEAT_SCALE;
|
||||
DVector3 pos(actor->spr.pos.XY(), height);
|
||||
|
||||
DVector3 Aim(actor->spr.angle.ToVector(), actor->_dudeSlope / 16384.);
|
||||
DVector3 Aim(actor->spr.angle.ToVector(), actor->flt_dudeSlope());
|
||||
double nClosest = 0x7fffffff;
|
||||
|
||||
BloodStatIterator it(kStatDude);
|
||||
|
@ -125,7 +125,7 @@ void BlastSSeqCallback(int, DBloodActor* actor)
|
|||
|
||||
DVector3 tvec = pos;
|
||||
tvec.XY() += actor->spr.angle.ToVector() * nDist;
|
||||
tvec.Z += actor->_dudeSlope / 16384. * nDist;
|
||||
tvec.Z += actor->flt_dudeSlope() * nDist;
|
||||
|
||||
double tsr = nDist * 9.23828125;
|
||||
double top, bottom;
|
||||
|
@ -169,7 +169,7 @@ void BlastSSeqCallback(int, DBloodActor* actor)
|
|||
|
||||
void ThrowSSeqCallback(int, DBloodActor* actor)
|
||||
{
|
||||
actFireThing(actor, 0., 0., actor->_dudeSlope / 16384. * 0.25 - 0.11444, kThingBone, Chance(0x6000) ? 19.2 : 17.066666);
|
||||
actFireThing(actor, 0., 0., actor->flt_dudeSlope() * 0.25 - 0.11444, kThingBone, Chance(0x6000) ? 19.2 : 17.066666);
|
||||
}
|
||||
|
||||
static void gargThinkTarget(DBloodActor* actor)
|
||||
|
|
|
@ -82,7 +82,7 @@ void ghostSlashSeqCallback(int, DBloodActor* actor)
|
|||
|
||||
void ghostThrowSeqCallback(int, DBloodActor* actor)
|
||||
{
|
||||
actFireThing(actor, 0., 0., actor->_dudeSlope / 16384. * 0.25 - 0.11444, kThingBone, 14.93333);
|
||||
actFireThing(actor, 0., 0., actor->flt_dudeSlope() * 0.25 - 0.11444, kThingBone, 14.93333);
|
||||
}
|
||||
|
||||
// This functions seems to be identical with BlastSSeqCallback except for the spawn calls at the end.
|
||||
|
@ -94,7 +94,7 @@ void ghostBlastSeqCallback(int, DBloodActor* actor)
|
|||
double height = (actor->spr.yrepeat * getDudeInfo(actor->spr.type)->eyeHeight) * REPEAT_SCALE;
|
||||
DVector3 pos(actor->spr.pos.XY(), height);
|
||||
|
||||
DVector3 Aim(actor->spr.angle.ToVector(), actor->_dudeSlope / 16384.);
|
||||
DVector3 Aim(actor->spr.angle.ToVector(), actor->flt_dudeSlope());
|
||||
double nClosest = 0x7fffffff;
|
||||
|
||||
BloodStatIterator it(kStatDude);
|
||||
|
@ -112,7 +112,7 @@ void ghostBlastSeqCallback(int, DBloodActor* actor)
|
|||
|
||||
DVector3 tvec = pos;
|
||||
tvec.XY() += actor->spr.angle.ToVector() * nDist;
|
||||
tvec.Z += actor->_dudeSlope / 16384. * nDist;
|
||||
tvec.Z += actor->flt_dudeSlope() * nDist;
|
||||
|
||||
double tsr = nDist * 9.23828125;
|
||||
double top, bottom;
|
||||
|
|
|
@ -65,7 +65,7 @@ void tchernobogBurnSeqCallback(int, DBloodActor* actor)
|
|||
if (!actor->ValidateTarget(__FUNCTION__)) return;
|
||||
DVector3 pos(actor->spr.pos.XY(), height);
|
||||
|
||||
DVector3 Aim(actor->spr.angle.ToVector(), actor->_dudeSlope / 16384.);
|
||||
DVector3 Aim(actor->spr.angle.ToVector(), actor->flt_dudeSlope());
|
||||
double nClosest = 0x7fffffff;
|
||||
|
||||
BloodStatIterator it(kStatDude);
|
||||
|
@ -83,7 +83,7 @@ void tchernobogBurnSeqCallback(int, DBloodActor* actor)
|
|||
|
||||
DVector3 tvec = pos;
|
||||
tvec.XY() += actor->spr.angle.ToVector() * nDist;
|
||||
tvec.Z += actor->_dudeSlope / 16384. * nDist;
|
||||
tvec.Z += actor->flt_dudeSlope() * nDist;
|
||||
|
||||
double tsr = nDist * 9.23828125;
|
||||
double top, bottom;
|
||||
|
@ -123,7 +123,7 @@ void tchernobogBurnSeqCallback2(int, DBloodActor* actor)
|
|||
double height = actor->spr.yrepeat * pDudeInfo->eyeHeight * REPEAT_SCALE * 0.25;
|
||||
|
||||
DVector3 pos(actor->spr.pos.XY(), height);
|
||||
DVector3 Aim(actor->spr.angle.ToVector(), -actor->_dudeSlope / 16384.);
|
||||
DVector3 Aim(actor->spr.angle.ToVector(), -actor->flt_dudeSlope());
|
||||
DVector3 Aim2(Aim.XY(), 0);
|
||||
double nClosest = 0x7fffffff;
|
||||
|
||||
|
@ -139,7 +139,7 @@ void tchernobogBurnSeqCallback2(int, DBloodActor* actor)
|
|||
|
||||
DVector3 tvec = pos;
|
||||
tvec.XY() += actor->spr.angle.ToVector() * nDist;
|
||||
tvec.Z += actor->_dudeSlope / 16384. * nDist;
|
||||
tvec.Z += actor->flt_dudeSlope() * nDist;
|
||||
|
||||
double tsr = nDist * 9.23828125;
|
||||
double top, bottom;
|
||||
|
|
|
@ -225,7 +225,7 @@ void genDudeAttack1(int, DBloodActor* actor)
|
|||
|
||||
if (pExtra->weaponType == kGenDudeWeaponHitscan)
|
||||
{
|
||||
dv = DVector3(actor->spr.angle.ToVector(), actor->_dudeSlope / 16384.);
|
||||
dv = DVector3(actor->spr.angle.ToVector(), actor->flt_dudeSlope());
|
||||
// dispersal modifiers here in case if non-melee enemy
|
||||
if (!dudeIsMelee(actor))
|
||||
{
|
||||
|
@ -264,7 +264,7 @@ void genDudeAttack1(int, DBloodActor* actor)
|
|||
}
|
||||
else if (pExtra->weaponType == kGenDudeWeaponMissile)
|
||||
{
|
||||
dv = DVector3(actor->spr.angle.ToVector(), actor->_dudeSlope / 16384.);
|
||||
dv = DVector3(actor->spr.angle.ToVector(), actor->flt_dudeSlope());
|
||||
|
||||
// dispersal modifiers here
|
||||
dv.X += Random3F(dispersion, 14);
|
||||
|
@ -746,9 +746,9 @@ static void unicultThinkChase(DBloodActor* actor)
|
|||
double targetDist = -1;
|
||||
int hit = -1;
|
||||
if (weaponType == kGenDudeWeaponHitscan)
|
||||
hit = HitScan(actor, actor->spr.pos.Z, DVector3(actor->spr.angle.ToVector(), actor->_dudeSlope / 16384.), CLIPMASK1, dist);
|
||||
hit = HitScan(actor, actor->spr.pos.Z, DVector3(actor->spr.angle.ToVector(), actor->flt_dudeSlope()), CLIPMASK1, dist);
|
||||
else if (weaponType == kGenDudeWeaponMissile)
|
||||
hit = HitScan(actor, actor->spr.pos.Z, DVector3(actor->spr.angle.ToVector(), actor->_dudeSlope / 16384.), CLIPMASK0, dist);
|
||||
hit = HitScan(actor, actor->spr.pos.Z, DVector3(actor->spr.angle.ToVector(), actor->flt_dudeSlope()), CLIPMASK0, dist);
|
||||
|
||||
if (hit >= 0)
|
||||
{
|
||||
|
@ -861,7 +861,7 @@ static void unicultThinkChase(DBloodActor* actor)
|
|||
else if (weaponType == kGenDudeWeaponHitscan && hscn)
|
||||
{
|
||||
if (genDudeAdjustSlope(actor, dist * worldtoint, weaponType)) break;
|
||||
VectorScan(actor, 0, 0, DVector3(actor->spr.angle.ToVector(), actor->_dudeSlope / 16384.), dist, 1);
|
||||
VectorScan(actor, 0, 0, DVector3(actor->spr.angle.ToVector(), actor->flt_dudeSlope()), dist, 1);
|
||||
if (actor == gHitInfo.actor()) break;
|
||||
|
||||
bool immune = nnExtIsImmune(hitactor, gVectorData[curWeapon].dmgType);
|
||||
|
@ -922,7 +922,7 @@ static void unicultThinkChase(DBloodActor* actor)
|
|||
if (hit == 4 && weaponType == kGenDudeWeaponHitscan && hscn)
|
||||
{
|
||||
bool masked = (pHWall->cstat & CSTAT_WALL_MASKED);
|
||||
if (masked) VectorScan(actor, 0, 0, DVector3(actor->spr.angle.ToVector(), actor->_dudeSlope / 16384.), dist, 1);
|
||||
if (masked) VectorScan(actor, 0, 0, DVector3(actor->spr.angle.ToVector(), actor->flt_dudeSlope()), dist, 1);
|
||||
|
||||
if ((actor != gHitInfo.actor()) && (pHWall->type != kWallGib || !masked || pXHWall == NULL || !pXHWall->triggerVector || pXHWall->locked))
|
||||
{
|
||||
|
|
|
@ -19,6 +19,8 @@ class DBloodActor : public DCoreActor
|
|||
|
||||
public:
|
||||
int _dudeSlope; // Q18.14 format
|
||||
[[deprecated]] int int_dudeSlope() const { return _dudeSlope; }
|
||||
[[deprecated]] double flt_dudeSlope() const { return _dudeSlope / 16384.; }
|
||||
bool hasx;
|
||||
XSPRITE xspr;
|
||||
SPRITEHIT hit;
|
||||
|
|
|
@ -4646,7 +4646,7 @@ bool condCheckSprite(DBloodActor* aCond, int cmpOp, bool PUSH)
|
|||
if ((pPlayer = getPlayerById(objActor->spr.type)) != NULL)
|
||||
var = HitScan_(objActor, pPlayer->zWeapon, pPlayer->aim.dx, pPlayer->aim.dy, pPlayer->aim.dz, arg1, arg3 << 1);
|
||||
else if (objActor->IsDudeActor())
|
||||
var = HitScan(objActor, objActor->spr.pos.Z, DVector3(objActor->spr.angle.ToVector() * 1024, (!objActor->hasX()) ? 0 : objActor->_dudeSlope * inttoworld), arg1, range);
|
||||
var = HitScan(objActor, objActor->spr.pos.Z, DVector3(objActor->spr.angle.ToVector(), (!objActor->hasX()) ? 0 : objActor->flt_dudeSlope()), arg1, range);
|
||||
else if ((objActor->spr.cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == CSTAT_SPRITE_ALIGNMENT_FLOOR)
|
||||
{
|
||||
var3 = (objActor->spr.cstat & CSTAT_SPRITE_YFLIP) ? 8 : -8; // was 0x20000 - HitScan uses Q28.4 for dz!
|
||||
|
|
Loading…
Reference in a new issue