From 4196195b898ddd60af15b785da97696a6c92dc1b Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 12 Sep 2022 23:35:48 +0200 Subject: [PATCH] - floatified handle_se25 --- source/games/duke/src/actors.cpp | 13 +++++++------ source/games/duke/src/actors_d.cpp | 2 +- source/games/duke/src/actors_r.cpp | 2 +- source/games/duke/src/funct.h | 2 +- source/games/duke/src/spawn.cpp | 10 ++-------- 5 files changed, 12 insertions(+), 17 deletions(-) diff --git a/source/games/duke/src/actors.cpp b/source/games/duke/src/actors.cpp index 6680f099d..f05f8fea5 100644 --- a/source/games/duke/src/actors.cpp +++ b/source/games/duke/src/actors.cpp @@ -4392,18 +4392,19 @@ void handle_se24(DDukeActor *actor, bool scroll, int shift) // //--------------------------------------------------------------------------- -void handle_se25(DDukeActor* actor, int t_index, int snd1, int snd2) +void handle_se25(DDukeActor* actor, int snd1, int snd2) { auto sec = actor->sector(); + auto add = actor->spr.yint * zmaptoworld; if (sec->floorz <= sec->ceilingz) actor->spr.shade = 0; - else if (sec->int_ceilingz() <= actor->temp_data[t_index]) + else if (sec->ceilingz <= actor->temp_pos.Z) actor->spr.shade = 1; if (actor->spr.shade) { - sec->addceilingz(actor->spr.yint * zmaptoworld); + sec->addceilingz(add); if (sec->ceilingz > sec->floorz) { sec->setceilingz(sec->floorz); @@ -4413,10 +4414,10 @@ void handle_se25(DDukeActor* actor, int t_index, int snd1, int snd2) } else { - sec->addceilingz(-actor->spr.yint * zmaptoworld); - if (sec->int_ceilingz() < actor->temp_data[t_index]) + sec->addceilingz(-add); + if (sec->ceilingz < actor->temp_pos.Z) { - sec->set_int_ceilingz(actor->temp_data[t_index]); + sec->setceilingz(actor->temp_pos.Z); if (pistonsound && snd2 >= 0) S_PlayActorSound(snd2, actor); } diff --git a/source/games/duke/src/actors_d.cpp b/source/games/duke/src/actors_d.cpp index 6060a689a..3bfc80c9a 100644 --- a/source/games/duke/src/actors_d.cpp +++ b/source/games/duke/src/actors_d.cpp @@ -3406,7 +3406,7 @@ void moveeffectors_d(void) //STATNUM 3 case SE_25_PISTON: //PISTONS if (act->temp_data[4] == 0) break; - handle_se25(act, 3, -1, -1); + handle_se25(act, -1, -1); break; case SE_26: diff --git a/source/games/duke/src/actors_r.cpp b/source/games/duke/src/actors_r.cpp index ec3cb6387..599212add 100644 --- a/source/games/duke/src/actors_r.cpp +++ b/source/games/duke/src/actors_r.cpp @@ -3368,7 +3368,7 @@ void moveeffectors_r(void) //STATNUM 3 case SE_25_PISTON: //PISTONS if (act->temp_data[4] == 0) break; - handle_se25(act, 4, isRRRA() ? 371 : -1, isRRRA() ? 167 : -1); + handle_se25(act, isRRRA() ? 371 : -1, isRRRA() ? 167 : -1); break; case SE_26: diff --git a/source/games/duke/src/funct.h b/source/games/duke/src/funct.h index 962003ce0..c32fdfbc6 100644 --- a/source/games/duke/src/funct.h +++ b/source/games/duke/src/funct.h @@ -86,7 +86,7 @@ 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_se25(DDukeActor* a, int t_index, int snd1, int snd2); +void handle_se25(DDukeActor* a, int snd1, int snd2); void handle_se26(DDukeActor* i); void handle_se27(DDukeActor* i); void handle_se29(DDukeActor* actor); diff --git a/source/games/duke/src/spawn.cpp b/source/games/duke/src/spawn.cpp index 9271b8529..24f503ba6 100644 --- a/source/games/duke/src/spawn.cpp +++ b/source/games/duke/src/spawn.cpp @@ -661,14 +661,8 @@ void spawneffector(DDukeActor* actor, TArray* actors) actor->SetOwner(nullptr); break; case SE_25_PISTON: // Pistons - if (!isRR()) - { - actor->temp_data[3] = sectp->int_ceilingz(); - actor->temp_data[4] = 1; - } - else - actor->temp_data[4] = sectp->int_ceilingz(); - + actor->temp_pos.Z = sectp->ceilingz; + actor->temp_data[4] = 1; sectp->setceilingz(actor->spr.pos.Z); StartInterpolation(sectp, Interp_Sect_Ceilingz); break;