From 6b73a37b56fa8182fe57ea172c45cf96957a40b6 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Thu, 18 Nov 2021 00:27:03 +0100 Subject: [PATCH] - made mirrorsector a pointer array --- source/games/duke/src/_polymost.cpp | 2 +- source/games/duke/src/global.cpp | 2 +- source/games/duke/src/global.h | 2 +- source/games/duke/src/premap_d.cpp | 2 +- source/games/duke/src/premap_r.cpp | 18 ++++++++---------- 5 files changed, 12 insertions(+), 14 deletions(-) diff --git a/source/games/duke/src/_polymost.cpp b/source/games/duke/src/_polymost.cpp index 021ddf42c..3cbc357a5 100644 --- a/source/games/duke/src/_polymost.cpp +++ b/source/games/duke/src/_polymost.cpp @@ -182,7 +182,7 @@ void renderMirror(int cposx, int cposy, int cposz, binangle cang, fixedhoriz cho int j = g_visibility; g_visibility = (j >> 1) + (j >> 2); - renderDrawRoomsQ16(tposx, tposy, cposz, tang, choriz.asq16(), mirrorsector[i], true); + renderDrawRoomsQ16(tposx, tposy, cposz, tang, choriz.asq16(), sectnum(mirrorsector[i]), true); display_mirror = 1; fi.animatesprites(pm_tsprite, pm_spritesortcnt, tposx, tposy, tang, smoothratio); diff --git a/source/games/duke/src/global.cpp b/source/games/duke/src/global.cpp index bb47058dd..6f26852ef 100644 --- a/source/games/duke/src/global.cpp +++ b/source/games/duke/src/global.cpp @@ -115,7 +115,7 @@ int cloudclock; int numcyclers; // sector lighting effects Cycler cyclers[MAXCYCLERS]; int mirrorcnt; -int mirrorsector[64]; // mirrors +sectortype* mirrorsector[64]; // mirrors walltype* mirrorwall[64]; int numplayersprites; // player management for some SEs. player_orig po[MAXPLAYERS]; diff --git a/source/games/duke/src/global.h b/source/games/duke/src/global.h index f7b5548a2..f7d961c94 100644 --- a/source/games/duke/src/global.h +++ b/source/games/duke/src/global.h @@ -97,7 +97,7 @@ extern int cloudclock; extern DDukeActor *spriteq[1024]; extern Cycler cyclers[MAXCYCLERS]; -extern int mirrorsector[64]; +extern sectortype* mirrorsector[64]; extern walltype* mirrorwall[64]; extern int wupass; diff --git a/source/games/duke/src/premap_d.cpp b/source/games/duke/src/premap_d.cpp index 7ac35bc34..20ad5e80e 100644 --- a/source/games/duke/src/premap_d.cpp +++ b/source/games/duke/src/premap_d.cpp @@ -390,7 +390,7 @@ void prelevel_d(int g) sectp->ceilingpicnum = MIRROR; sectp->floorpicnum = MIRROR; mirrorwall[mirrorcnt] = &wal; - mirrorsector[mirrorcnt] = sectnum(sectp); + mirrorsector[mirrorcnt] = sectp; mirrorcnt++; continue; } diff --git a/source/games/duke/src/premap_r.cpp b/source/games/duke/src/premap_r.cpp index b0a3bb3e7..345da6525 100644 --- a/source/games/duke/src/premap_r.cpp +++ b/source/games/duke/src/premap_r.cpp @@ -724,16 +724,16 @@ void prelevel_r(int g) if (wal->overpicnum == MIRROR && (wal->cstat & 32) != 0) { - j = wal->nextsector; + auto sect = wal->nextSector(); if (mirrorcnt > 63) I_Error("Too many mirrors (64 max.)"); - if ((j >= 0) && sector[j].ceilingpicnum != MIRROR) + if ((j >= 0) && sect->ceilingpicnum != MIRROR) { - sector[j].ceilingpicnum = MIRROR; - sector[j].floorpicnum = MIRROR; + sect->ceilingpicnum = MIRROR; + sect->floorpicnum = MIRROR; mirrorwall[mirrorcnt] = wal; - mirrorsector[mirrorcnt] = j; + mirrorsector[mirrorcnt] = sect; mirrorcnt++; continue; } @@ -777,12 +777,10 @@ void prelevel_r(int g) //Invalidate textures in sector behind mirror for (i = 0; i < mirrorcnt; i++) { - startwall = sector[mirrorsector[i]].wallptr; - endwall = startwall + sector[mirrorsector[i]].wallnum; - for (j = startwall; j < endwall; j++) + for (auto& mwal : wallsofsector(mirrorsector[i])) { - wall[j].picnum = MIRROR; - wall[j].overpicnum = MIRROR; + mwal.picnum = MIRROR; + mwal.overpicnum = MIRROR; } } thunder_brightness = 0;