- floatified handle_se24

This commit is contained in:
Christoph Oelckers 2022-09-12 21:59:34 +02:00
parent 9cfd56a912
commit 7ee620628d
4 changed files with 8 additions and 10 deletions

View file

@ -4333,12 +4333,11 @@ void handle_se27(DDukeActor* actor)
//
//---------------------------------------------------------------------------
void handle_se24(DDukeActor *actor, bool scroll, int shift)
void handle_se24(DDukeActor *actor, bool scroll, double mult)
{
if (actor->temp_data[4]) return;
int x = MulScale(actor->spr.yint, bcos(actor->int_ang()), 18);
int y = MulScale(actor->spr.yint, bsin(actor->int_ang()), 18);
auto vec = actor->spr.angle.ToVector() * actor->spr.yint / 256.;
DukeSectIterator it(actor->sector());
while (auto a2 = it.Next())
@ -4363,7 +4362,7 @@ void handle_se24(DDukeActor *actor, bool scroll, int shift)
if (a2->spr.pos.Z > a2->floorz - 16)
{
a2->add_int_pos({ x >> shift , y >> shift, 0 });
a2->spr.pos += vec * mult;
SetActor(a2, a2->spr.pos);
@ -4382,8 +4381,7 @@ void handle_se24(DDukeActor *actor, bool scroll, int shift)
{
if (abs(ps[p].pos.Z - ps[p].truefz) < gs.playerheight + 9)
{
ps[p].fric.X += x * (1. / 64.);
ps[p].fric.Y += y * (1. / 64.);
ps[p].fric += vec * (1. / 4.);
}
}
}

View file

@ -3383,7 +3383,7 @@ void moveeffectors_d(void) //STATNUM 3
case SE_24_CONVEYOR:
case SE_34:
{
handle_se24(act, true, 2);
handle_se24(act, true, 0.25);
break;
}
case SE_35:

View file

@ -3332,13 +3332,13 @@ void moveeffectors_r(void) //STATNUM 3
handle_se22(act);
break;
case 156:
case SE_156_CONVEYOR_NOSCROLL:
if (!isRRRA()) break;
[[fallthrough]];
case SE_24_CONVEYOR:
case SE_34:
{
handle_se24(act, st != SE_156_CONVEYOR_NOSCROLL, 1);
handle_se24(act, st != SE_156_CONVEYOR_NOSCROLL, 0.5);
break;
}

View file

@ -85,7 +85,7 @@ void handle_se19(DDukeActor* i, int BIGFORCE);
void handle_se20(DDukeActor* i);
void handle_se21(DDukeActor* i);
void handle_se22(DDukeActor* i);
void handle_se24(DDukeActor* actor, bool scroll, int shift);
void handle_se24(DDukeActor* actor, bool scroll, double shift);
void handle_se25(DDukeActor* a, int snd1, int snd2);
void handle_se26(DDukeActor* i);
void handle_se27(DDukeActor* i);