From 866bc560085f28ccd088889a70d3f2cb62d004db Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Fri, 27 Aug 2021 18:42:36 +0200 Subject: [PATCH] Clean up remaning usages of Missiles[] --- Source/loadsave.cpp | 180 ++++++++++++++++++++++---------------------- Source/missiles.cpp | 27 ++++--- Source/scrollrt.cpp | 32 ++++---- 3 files changed, 121 insertions(+), 118 deletions(-) diff --git a/Source/loadsave.cpp b/Source/loadsave.cpp index 8ace5e4cf..97c9f8350 100644 --- a/Source/loadsave.cpp +++ b/Source/loadsave.cpp @@ -637,53 +637,53 @@ void LoadMonster(LoadHelper *file, MonsterStruct &monster) void LoadMissile(LoadHelper *file, int i) { - MissileStruct *pMissile = &Missiles[i]; - - pMissile->_mitype = static_cast(file->NextLE()); - pMissile->position.tile.x = file->NextLE(); - pMissile->position.tile.y = file->NextLE(); - pMissile->position.offset.deltaX = file->NextLE(); - pMissile->position.offset.deltaY = file->NextLE(); - pMissile->position.velocity.deltaX = file->NextLE(); - pMissile->position.velocity.deltaY = file->NextLE(); - pMissile->position.start.x = file->NextLE(); - pMissile->position.start.y = file->NextLE(); - pMissile->position.traveled.deltaX = file->NextLE(); - pMissile->position.traveled.deltaY = file->NextLE(); - pMissile->_mimfnum = file->NextLE(); - pMissile->_mispllvl = file->NextLE(); - pMissile->_miDelFlag = file->NextBool32(); - pMissile->_miAnimType = file->NextLE(); + auto &missile = Missiles[i]; + + missile._mitype = static_cast(file->NextLE()); + missile.position.tile.x = file->NextLE(); + missile.position.tile.y = file->NextLE(); + missile.position.offset.deltaX = file->NextLE(); + missile.position.offset.deltaY = file->NextLE(); + missile.position.velocity.deltaX = file->NextLE(); + missile.position.velocity.deltaY = file->NextLE(); + missile.position.start.x = file->NextLE(); + missile.position.start.y = file->NextLE(); + missile.position.traveled.deltaX = file->NextLE(); + missile.position.traveled.deltaY = file->NextLE(); + missile._mimfnum = file->NextLE(); + missile._mispllvl = file->NextLE(); + missile._miDelFlag = file->NextBool32(); + missile._miAnimType = file->NextLE(); file->Skip(3); // Alignment - pMissile->_miAnimFlags = static_cast(file->NextLE()); + missile._miAnimFlags = static_cast(file->NextLE()); file->Skip(4); // Skip pointer _miAnimData - pMissile->_miAnimDelay = file->NextLE(); - pMissile->_miAnimLen = file->NextLE(); - pMissile->_miAnimWidth = file->NextLE(); - pMissile->_miAnimWidth2 = file->NextLE(); - pMissile->_miAnimCnt = file->NextLE(); - pMissile->_miAnimAdd = file->NextLE(); - pMissile->_miAnimFrame = file->NextLE(); - pMissile->_miDrawFlag = file->NextBool32(); - pMissile->_miLightFlag = file->NextBool32(); - pMissile->_miPreFlag = file->NextBool32(); - pMissile->_miUniqTrans = file->NextLE(); - pMissile->_mirange = file->NextLE(); - pMissile->_misource = file->NextLE(); - pMissile->_micaster = static_cast(file->NextLE()); - pMissile->_midam = file->NextLE(); - pMissile->_miHitFlag = file->NextBool32(); - pMissile->_midist = file->NextLE(); - pMissile->_mlid = file->NextLE(); - pMissile->_mirnd = file->NextLE(); - pMissile->var1 = file->NextLE(); - pMissile->var2 = file->NextLE(); - pMissile->var3 = file->NextLE(); - pMissile->var4 = file->NextLE(); - pMissile->var5 = file->NextLE(); - pMissile->var6 = file->NextLE(); - pMissile->var7 = file->NextLE(); - pMissile->limitReached = file->NextBool32(); + missile._miAnimDelay = file->NextLE(); + missile._miAnimLen = file->NextLE(); + missile._miAnimWidth = file->NextLE(); + missile._miAnimWidth2 = file->NextLE(); + missile._miAnimCnt = file->NextLE(); + missile._miAnimAdd = file->NextLE(); + missile._miAnimFrame = file->NextLE(); + missile._miDrawFlag = file->NextBool32(); + missile._miLightFlag = file->NextBool32(); + missile._miPreFlag = file->NextBool32(); + missile._miUniqTrans = file->NextLE(); + missile._mirange = file->NextLE(); + missile._misource = file->NextLE(); + missile._micaster = static_cast(file->NextLE()); + missile._midam = file->NextLE(); + missile._miHitFlag = file->NextBool32(); + missile._midist = file->NextLE(); + missile._mlid = file->NextLE(); + missile._mirnd = file->NextLE(); + missile.var1 = file->NextLE(); + missile.var2 = file->NextLE(); + missile.var3 = file->NextLE(); + missile.var4 = file->NextLE(); + missile.var5 = file->NextLE(); + missile.var6 = file->NextLE(); + missile.var7 = file->NextLE(); + missile.limitReached = file->NextBool32(); } void LoadObject(LoadHelper *file, int i) @@ -1287,53 +1287,53 @@ void SaveMonster(SaveHelper *file, MonsterStruct &monster) void SaveMissile(SaveHelper *file, int i) { - MissileStruct *pMissile = &Missiles[i]; - - file->WriteLE(pMissile->_mitype); - file->WriteLE(pMissile->position.tile.x); - file->WriteLE(pMissile->position.tile.y); - file->WriteLE(pMissile->position.offset.deltaX); - file->WriteLE(pMissile->position.offset.deltaY); - file->WriteLE(pMissile->position.velocity.deltaX); - file->WriteLE(pMissile->position.velocity.deltaY); - file->WriteLE(pMissile->position.start.x); - file->WriteLE(pMissile->position.start.y); - file->WriteLE(pMissile->position.traveled.deltaX); - file->WriteLE(pMissile->position.traveled.deltaY); - file->WriteLE(pMissile->_mimfnum); - file->WriteLE(pMissile->_mispllvl); - file->WriteLE(pMissile->_miDelFlag ? 1 : 0); - file->WriteLE(pMissile->_miAnimType); + auto &missile = Missiles[i]; + + file->WriteLE(missile._mitype); + file->WriteLE(missile.position.tile.x); + file->WriteLE(missile.position.tile.y); + file->WriteLE(missile.position.offset.deltaX); + file->WriteLE(missile.position.offset.deltaY); + file->WriteLE(missile.position.velocity.deltaX); + file->WriteLE(missile.position.velocity.deltaY); + file->WriteLE(missile.position.start.x); + file->WriteLE(missile.position.start.y); + file->WriteLE(missile.position.traveled.deltaX); + file->WriteLE(missile.position.traveled.deltaY); + file->WriteLE(missile._mimfnum); + file->WriteLE(missile._mispllvl); + file->WriteLE(missile._miDelFlag ? 1 : 0); + file->WriteLE(missile._miAnimType); file->Skip(3); // Alignment - file->WriteLE(static_cast(pMissile->_miAnimFlags)); + file->WriteLE(static_cast(missile._miAnimFlags)); file->Skip(4); // Skip pointer _miAnimData - file->WriteLE(pMissile->_miAnimDelay); - file->WriteLE(pMissile->_miAnimLen); - file->WriteLE(pMissile->_miAnimWidth); - file->WriteLE(pMissile->_miAnimWidth2); - file->WriteLE(pMissile->_miAnimCnt); - file->WriteLE(pMissile->_miAnimAdd); - file->WriteLE(pMissile->_miAnimFrame); - file->WriteLE(pMissile->_miDrawFlag ? 1 : 0); - file->WriteLE(pMissile->_miLightFlag ? 1 : 0); - file->WriteLE(pMissile->_miPreFlag ? 1 : 0); - file->WriteLE(pMissile->_miUniqTrans); - file->WriteLE(pMissile->_mirange); - file->WriteLE(pMissile->_misource); - file->WriteLE(pMissile->_micaster); - file->WriteLE(pMissile->_midam); - file->WriteLE(pMissile->_miHitFlag ? 1 : 0); - file->WriteLE(pMissile->_midist); - file->WriteLE(pMissile->_mlid); - file->WriteLE(pMissile->_mirnd); - file->WriteLE(pMissile->var1); - file->WriteLE(pMissile->var2); - file->WriteLE(pMissile->var3); - file->WriteLE(pMissile->var4); - file->WriteLE(pMissile->var5); - file->WriteLE(pMissile->var6); - file->WriteLE(pMissile->var7); - file->WriteLE(pMissile->limitReached ? 1 : 0); + file->WriteLE(missile._miAnimDelay); + file->WriteLE(missile._miAnimLen); + file->WriteLE(missile._miAnimWidth); + file->WriteLE(missile._miAnimWidth2); + file->WriteLE(missile._miAnimCnt); + file->WriteLE(missile._miAnimAdd); + file->WriteLE(missile._miAnimFrame); + file->WriteLE(missile._miDrawFlag ? 1 : 0); + file->WriteLE(missile._miLightFlag ? 1 : 0); + file->WriteLE(missile._miPreFlag ? 1 : 0); + file->WriteLE(missile._miUniqTrans); + file->WriteLE(missile._mirange); + file->WriteLE(missile._misource); + file->WriteLE(missile._micaster); + file->WriteLE(missile._midam); + file->WriteLE(missile._miHitFlag ? 1 : 0); + file->WriteLE(missile._midist); + file->WriteLE(missile._mlid); + file->WriteLE(missile._mirnd); + file->WriteLE(missile.var1); + file->WriteLE(missile.var2); + file->WriteLE(missile.var3); + file->WriteLE(missile.var4); + file->WriteLE(missile.var5); + file->WriteLE(missile.var6); + file->WriteLE(missile.var7); + file->WriteLE(missile.limitReached ? 1 : 0); } void SaveObject(SaveHelper *file, int i) diff --git a/Source/missiles.cpp b/Source/missiles.cpp index b4e70922e..d2cb86aa0 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -1750,12 +1750,12 @@ void AddSearch(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) for (int i = 0; i < ActiveMissileCount; i++) { int mx = ActiveMissiles[i]; if (&Missiles[mx] != &missile) { - MissileStruct *mis = &Missiles[mx]; - if (mis->var1 == missile._misource && mis->_mitype == MIS_SEARCH) { + auto &other = Missiles[mx]; + if (other.var1 == missile._misource && other._mitype == MIS_SEARCH) { int r1 = missile._mirange; - int r2 = mis->_mirange; + int r2 = other._mirange; if (r2 < INT_MAX - r1) - mis->_mirange = r1 + r2; + other._mirange = r1 + r2; missile._miDelFlag = true; break; } @@ -2093,10 +2093,11 @@ void AddMisexp(MissileStruct &missile, Point /*dst*/, Direction /*midir*/) int mx = FindParent(missile); assert(mx != -1); // AddMisexp will always be called with a parent associated to the missile. - missile.position.tile = Missiles[mx].position.tile; - missile.position.start = Missiles[mx].position.start; - missile.position.offset = Missiles[mx].position.offset; - missile.position.traveled = Missiles[mx].position.traveled; + auto &parent = Missiles[mx]; + missile.position.tile = parent.position.tile; + missile.position.start = parent.position.start; + missile.position.offset = parent.position.offset; + missile.position.traveled = parent.position.traveled; missile._mirange = missile._miAnimLen; } @@ -2147,8 +2148,9 @@ void AddTown(MissileStruct &missile, Point dst, Direction /*midir*/) missile.var1 = missile._mirange - missile._miAnimLen; for (int i = 0; i < ActiveMissileCount; i++) { int mx = ActiveMissiles[i]; - if (Missiles[mx]._mitype == MIS_TOWN && (&Missiles[mx] != &missile) && Missiles[mx]._misource == missile._misource) - Missiles[mx]._mirange = 0; + auto &other = Missiles[mx]; + if (other._mitype == MIS_TOWN && (&other != &missile) && other._misource == missile._misource) + other._mirange = 0; } PutMissile(missile); if (missile._misource == MyPlayerId && !missile._miDelFlag && currlevel != 0) { @@ -2452,8 +2454,9 @@ void AddGolem(MissileStruct &missile, Point dst, Direction /*midir*/) for (int i = 0; i < ActiveMissileCount; i++) { int mx = ActiveMissiles[i]; - if (Missiles[mx]._mitype == MIS_GOLEM) { - if ((&Missiles[mx] != &missile) && Missiles[mx]._misource == playerId) { + auto &other = Missiles[mx]; + if (other._mitype == MIS_GOLEM) { + if ((&other != &missile) && other._misource == playerId) { return; } } diff --git a/Source/scrollrt.cpp b/Source/scrollrt.cpp index 4656e32b5..1d7f31927 100644 --- a/Source/scrollrt.cpp +++ b/Source/scrollrt.cpp @@ -316,31 +316,31 @@ void DrawCursor(const Surface &out) * @param sy Output buffer coordinate * @param pre Is the sprite in the background */ -void DrawMissilePrivate(const Surface &out, const MissileStruct *m, int sx, int sy, bool pre) +void DrawMissilePrivate(const Surface &out, const MissileStruct &missile, int sx, int sy, bool pre) { - if (m->_miPreFlag != pre || !m->_miDrawFlag) + if (missile._miPreFlag != pre || !missile._miDrawFlag) return; - if (m->_miAnimData == nullptr) { - Log("Draw Missile 2 type {}: NULL Cel Buffer", m->_mitype); + if (missile._miAnimData == nullptr) { + Log("Draw Missile 2 type {}: NULL Cel Buffer", missile._mitype); return; } - int nCel = m->_miAnimFrame; - const auto *frameTable = reinterpret_cast(m->_miAnimData); + int nCel = missile._miAnimFrame; + const auto *frameTable = reinterpret_cast(missile._miAnimData); int frames = SDL_SwapLE32(frameTable[0]); if (nCel < 1 || frames > 50 || nCel > frames) { - Log("Draw Missile 2: frame {} of {}, missile type=={}", nCel, frames, m->_mitype); + Log("Draw Missile 2: frame {} of {}, missile type=={}", nCel, frames, missile._mitype); return; } - int mx = sx + m->position.offsetForRendering.deltaX - m->_miAnimWidth2; - int my = sy + m->position.offsetForRendering.deltaY; - CelSprite cel { m->_miAnimData, m->_miAnimWidth }; - if (m->_miUniqTrans != 0) - Cl2DrawLightTbl(out, mx, my, cel, m->_miAnimFrame, m->_miUniqTrans + 3); - else if (m->_miLightFlag) - Cl2DrawLight(out, mx, my, cel, m->_miAnimFrame); + int mx = sx + missile.position.offsetForRendering.deltaX - missile._miAnimWidth2; + int my = sy + missile.position.offsetForRendering.deltaY; + CelSprite cel { missile._miAnimData, missile._miAnimWidth }; + if (missile._miUniqTrans != 0) + Cl2DrawLightTbl(out, mx, my, cel, missile._miAnimFrame, missile._miUniqTrans + 3); + else if (missile._miLightFlag) + Cl2DrawLight(out, mx, my, cel, missile._miAnimFrame); else - Cl2Draw(out, mx, my, cel, m->_miAnimFrame); + Cl2Draw(out, mx, my, cel, missile._miAnimFrame); } /** @@ -356,7 +356,7 @@ void DrawMissile(const Surface &out, int x, int y, int sx, int sy, bool pre) { const auto range = MissilesAtRenderingTile.equal_range(Point { x, y }); for (auto it = range.first; it != range.second; it++) { - DrawMissilePrivate(out, it->second, sx, sy, pre); + DrawMissilePrivate(out, *it->second, sx, sy, pre); } }