mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-22 19:51:16 +00:00
- floatify AISnake::Tick
This commit is contained in:
parent
f393b7e917
commit
efb538ba69
1 changed files with 15 additions and 11 deletions
|
@ -304,9 +304,10 @@ void AISnake::Tick(RunListEvent* ev)
|
||||||
if (pEnemySprite == nullptr)
|
if (pEnemySprite == nullptr)
|
||||||
{
|
{
|
||||||
SEARCH_ENEMY:
|
SEARCH_ENEMY:
|
||||||
|
auto vec = pActor->spr.angle.ToVector() * 37.5;
|
||||||
nMov = movesprite(pActor,
|
nMov = movesprite(pActor,
|
||||||
600 * bcos(pActor->int_ang()),
|
FixedToFloat<18>(vec.X),
|
||||||
600 * bsin(pActor->int_ang()),
|
FixedToFloat<18>(vec.Y),
|
||||||
bsin(SnakeList[nSnake].nAngle, -5),
|
bsin(SnakeList[nSnake].nAngle, -5),
|
||||||
0, 0, CLIPMASK1);
|
0, 0, CLIPMASK1);
|
||||||
|
|
||||||
|
@ -341,15 +342,15 @@ void AISnake::Tick(RunListEvent* ev)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int nAngle = pActor->int_ang();
|
DAngle nAngle = pActor->spr.angle;
|
||||||
int var_30 = -bcos(nAngle, 6);
|
double cosang = -nAngle.Cos() * 4;
|
||||||
int var_34 = -bsin(nAngle, 6);
|
double sinang = -nAngle.Sin() * 4;
|
||||||
|
|
||||||
int var_20 = SnakeList[nSnake].nAngle;
|
DAngle snakeang = DAngle::fromBuild(SnakeList[nSnake].nAngle);
|
||||||
|
|
||||||
SnakeList[nSnake].nAngle = (SnakeList[nSnake].nAngle + 64) & 0x7FF;
|
SnakeList[nSnake].nAngle = (SnakeList[nSnake].nAngle + 64) & 0x7FF;
|
||||||
|
|
||||||
int var_28 = (nAngle + 512) & kAngleMask;
|
DAngle normalang = (nAngle + DAngle90);
|
||||||
auto pSector = pActor->sector();
|
auto pSector = pActor->sector();
|
||||||
|
|
||||||
for (int i = 7; i > 0; i--)
|
for (int i = 7; i > 0; i--)
|
||||||
|
@ -357,17 +358,20 @@ void AISnake::Tick(RunListEvent* ev)
|
||||||
DExhumedActor* pActor2 = SnakeList[nSnake].pSprites[i];
|
DExhumedActor* pActor2 = SnakeList[nSnake].pSprites[i];
|
||||||
if (!pActor2) continue;
|
if (!pActor2) continue;
|
||||||
|
|
||||||
pActor2->set_int_ang(nAngle);
|
pActor2->spr.angle = nAngle;
|
||||||
pActor2->spr.pos = pActor->spr.pos;
|
pActor2->spr.pos = pActor->spr.pos;
|
||||||
|
|
||||||
ChangeActorSect(pActor2, pSector);
|
ChangeActorSect(pActor2, pSector);
|
||||||
|
|
||||||
int eax = (bsin(var_20) * SnakeList[nSnake].c[i]) >> 9;
|
double eax = snakeang.Sin() * 2 * SnakeList[nSnake].c[i];
|
||||||
|
|
||||||
movesprite(pActor2, var_30 + var_30 * i + eax * bcos(var_28), var_30 + var_34 * i + eax * bsin(var_28),
|
DVector2 vect;
|
||||||
|
vect.X = cosang + cosang * i + eax * normalang.Cos();
|
||||||
|
vect.Y = cosang + sinang * i + eax * normalang.Sin();
|
||||||
|
movesprite(pActor2, FloatToFixed<18>(vect.X), FloatToFixed<18>(vect.Y),
|
||||||
int(- zVal * (i - 1) * zworldtoint), 0, 0, CLIPMASK1);
|
int(- zVal * (i - 1) * zworldtoint), 0, 0, CLIPMASK1);
|
||||||
|
|
||||||
var_20 = (var_20 + 128) & kAngleMask;
|
snakeang += DAngle22_5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue