From 730c0ef66dfbd14cf56c6f7ceda7db8c25c293f6 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Thu, 6 Oct 2022 00:40:40 +0200 Subject: [PATCH] - lots of repeats in RR's spawn code. --- source/games/duke/src/actors_d.cpp | 5 +- source/games/duke/src/spawn_r.cpp | 73 ++++++++++++------------------ 2 files changed, 32 insertions(+), 46 deletions(-) diff --git a/source/games/duke/src/actors_d.cpp b/source/games/duke/src/actors_d.cpp index e743ff0d5..f6cda9433 100644 --- a/source/games/duke/src/actors_d.cpp +++ b/source/games/duke/src/actors_d.cpp @@ -2215,9 +2215,8 @@ static void greenslime(DDukeActor *actor) actor->temp_data[3] = 1; } - int add = int(BobVal(actor->temp_data[1]) * 2); - actor->spr.xrepeat = 20 + add; - actor->spr.yrepeat = 15 + add; + double add = (BobVal(actor->temp_data[1]) * 2) * REPEAT_SCALE; + actor->spr.SetScale(0.3125 + add, 0.234375 + add); actor->spr.pos.XY() = ps[p].pos.XY() + ps[p].angle.ang.ToVector() * 8; return; } diff --git a/source/games/duke/src/spawn_r.cpp b/source/games/duke/src/spawn_r.cpp index 2533f03f2..76434506d 100644 --- a/source/games/duke/src/spawn_r.cpp +++ b/source/games/duke/src/spawn_r.cpp @@ -192,9 +192,14 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray* if (actj) { SetActor(act, actj->spr.pos); - act->spr.xrepeat = act->spr.yrepeat = 8 + (krand() & 7); + double s = 0.125 + (krand() & 7) * REPEAT_SCALE; + act->spr.SetScale(s, s); + } + else + { + double s = 0.25 + (krand() & 15) * REPEAT_SCALE; + act->spr.SetScale(s, s); } - else act->spr.xrepeat = act->spr.yrepeat = 16 + (krand() & 15); act->spr.shade = -16; act->spr.cstat |= CSTAT_SPRITE_YCENTER; @@ -255,18 +260,15 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray* { if (act->spr.picnum == RABBITJIBA) { - act->spr.xrepeat = 18; - act->spr.yrepeat = 18; + act->spr.SetScale(0.28125, 0.28125); } else if (act->spr.picnum == RABBITJIBB) { - act->spr.xrepeat = 36; - act->spr.yrepeat = 36; + act->spr.SetScale(0.5625, 0.5625); } else if (act->spr.picnum == RABBITJIBC) { - act->spr.xrepeat = 54; - act->spr.yrepeat = 54; + act->spr.SetScale(0.84375, 0.84375); } } ChangeActorStat(act, STAT_MISC); @@ -448,15 +450,13 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray* case BOWLINGBALL: act->spr.cstat = CSTAT_SPRITE_BLOCK_HITSCAN; act->clipdist = 16; - act->spr.xrepeat = 11; - act->spr.yrepeat = 9; + act->spr.SetScale(0.171875, 0.140625); ChangeActorStat(act, 2); break; case HENSTAND: act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; act->clipdist = 12; - act->spr.xrepeat = 21; - act->spr.yrepeat = 15; + act->spr.SetScale(0.328125, 0.234375); ChangeActorStat(act, 2); break; case RRTILE295: @@ -474,56 +474,49 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray* case RRTILE3192: act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; act->clipdist = 2; - act->spr.xrepeat = 32; - act->spr.yrepeat = 26; + act->spr.SetScale(0.5, 0.40625); act->vel.X = 2; ChangeActorStat(act, 1); break; case RRTILE3120: act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; act->clipdist = 2; - act->spr.xrepeat = 12; - act->spr.yrepeat = 10; + act->spr.SetScale(0.1875, 0.15625); act->vel.X = 2; ChangeActorStat(act, 1); break; case RRTILE3122: act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; act->clipdist = 0.5; - act->spr.xrepeat = 8; - act->spr.yrepeat = 6; + act->spr.SetScale(0.125, 0.09375); act->vel.X = 1; ChangeActorStat(act, 1); break; case RRTILE3123: act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; act->clipdist = 2; - act->spr.xrepeat = 13; - act->spr.yrepeat = 13; + act->spr.SetScale(0.203125, 0.203125); act->vel.X = 1; ChangeActorStat(act, 1); break; case RRTILE3124: act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; act->clipdist = 2; - act->spr.xrepeat = 17; - act->spr.yrepeat = 12; + act->spr.SetScale(0.265625, 0.1875); act->vel.X = 2; ChangeActorStat(act, 1); break; case RRTILE3132: act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; act->clipdist = 2; - act->spr.xrepeat = 13; - act->spr.yrepeat = 10; + act->spr.SetScale(0.203125, 0.15625); act->vel.X = 0; ChangeActorStat(act, 1); break; case BOWLINGPIN: act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; act->clipdist = 12; - act->spr.xrepeat = 23; - act->spr.yrepeat = 23; + act->spr.SetScale(0.359375, 0.359375); ChangeActorStat(act, 2); break; case DUKELYINGDEAD: @@ -560,7 +553,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray* case SPOTLITE: break; case BULLETHOLE: - act->spr.xrepeat = act->spr.yrepeat = 3; + act->spr.SetScale(0.046875, 0.046875); act->spr.cstat = CSTAT_SPRITE_ALIGNMENT_WALL | randomFlip(); insertspriteq(act); [[fallthrough]]; @@ -569,7 +562,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray* { act->temp_data[0] = krand() & 2047; act->spr.cstat = randomFlip(); - act->spr.xrepeat = act->spr.yrepeat = 8; + act->spr.SetScale(0.125, 0.125); act->spr.angle = randomAngle(); } ChangeActorStat(act, STAT_MISC); @@ -623,13 +616,11 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray* } else if (act->spr.picnum == SMALLSMOKE) { - act->spr.xrepeat = 12; - act->spr.yrepeat = 12; + act->spr.SetScale(0.1875, 0.1875); } else if (act->spr.picnum == BURNING) { - act->spr.xrepeat = 4; - act->spr.yrepeat = 4; + act->spr.SetScale(0.0625, 0.0625); } if (actj) @@ -674,7 +665,8 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray* { if (actj) act->spr.angle = actj->spr.angle; - act->spr.xrepeat = act->spr.yrepeat = 1 + (krand() & 7); + double s = REPEAT_SCALE + (krand() & 7) * REPEAT_SCALE; + act->spr.SetScale(s, s); } else act->spr.SetScale(0.5, 0.5); @@ -690,8 +682,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray* if (act->spr.picnum != WATERDRIP) act->spr.angle = randomAngle(); - act->spr.xrepeat = 24; - act->spr.yrepeat = 24; + act->spr.SetScale(0.375, 0.375); ChangeActorStat(act, 6); break; @@ -801,8 +792,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray* case VIXEN: if (act->spr.pal == 34) { - act->spr.xrepeat = 22; - act->spr.yrepeat = 21; + act->spr.SetScale(0.34375, 0.328125); } else { @@ -821,14 +811,12 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray* case COOTPLAY: case COOT: case COOTSTAYPUT: - act->spr.xrepeat = 24; - act->spr.yrepeat = 18; + act->spr.SetScale(0.375, 0.28125); act->setClipDistFromTile(); act->clipdist *= 4; break; case DRONE: - act->spr.xrepeat = 14; - act->spr.yrepeat = 7; + act->spr.SetScale(0.21875, 0.109375); act->clipdist = 32; break; case SBSWIPE: @@ -838,8 +826,7 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray* case BILLYRAYSTAYPUT: case BRAYSNIPER: case BUBBASTAND: - act->spr.xrepeat = 25; - act->spr.yrepeat = 21; + act->spr.SetScale(0.390625, 0.328125); act->setClipDistFromTile(); break; case COW: