From 0b2f443d97e1766206b5dcea131ee545d6b3c425 Mon Sep 17 00:00:00 2001 From: Juliano Leal Goncalves Date: Sun, 27 Jun 2021 19:45:29 -0300 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Leverage=20'Point'=20in=20?= =?UTF-8?q?'DrawMissile'=20function?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Source/scrollrt.cpp | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/Source/scrollrt.cpp b/Source/scrollrt.cpp index 60f8d1e39..e9594e0d5 100644 --- a/Source/scrollrt.cpp +++ b/Source/scrollrt.cpp @@ -292,11 +292,10 @@ void DrawCursor(const Surface &out) * @brief Render a missile sprite * @param out Output buffer * @param m Pointer to Missile struct - * @param sx Output buffer coordinate - * @param sy Output buffer coordinate + * @param targetBufferPosition Output buffer coordinate * @param pre Is the sprite in the background */ -void DrawMissilePrivate(const Surface &out, const Missile &missile, int sx, int sy, bool pre) +void DrawMissilePrivate(const Surface &out, const Missile &missile, Point targetBufferPosition, bool pre) { if (missile._miPreFlag != pre || !missile._miDrawFlag) return; @@ -312,31 +311,29 @@ void DrawMissilePrivate(const Surface &out, const Missile &missile, int sx, int Log("Draw Missile 2: frame {} of {}, missile type=={}", nCel, frames, missile._mitype); return; } - int mx = sx + missile.position.offsetForRendering.deltaX - missile._miAnimWidth2; - int my = sy + missile.position.offsetForRendering.deltaY; + + const Point missileRenderPosition { targetBufferPosition + missile.position.offsetForRendering - Displacement { missile._miAnimWidth2, 0 } }; CelSprite cel { missile._miAnimData, missile._miAnimWidth }; if (missile._miUniqTrans != 0) - Cl2DrawLightTbl(out, mx, my, cel, missile._miAnimFrame, missile._miUniqTrans + 3); + Cl2DrawLightTbl(out, missileRenderPosition.x, missileRenderPosition.y, cel, missile._miAnimFrame, missile._miUniqTrans + 3); else if (missile._miLightFlag) - Cl2DrawLight(out, mx, my, cel, missile._miAnimFrame); + Cl2DrawLight(out, missileRenderPosition.x, missileRenderPosition.y, cel, missile._miAnimFrame); else - Cl2Draw(out, mx, my, cel, missile._miAnimFrame); + Cl2Draw(out, missileRenderPosition.x, missileRenderPosition.y, cel, missile._miAnimFrame); } /** * @brief Render a missile sprites for a given tile * @param out Output buffer - * @param x dPiece coordinate - * @param y dPiece coordinate - * @param sx Output buffer coordinate - * @param sy Output buffer coordinate + * @param tilePosition dPiece coordinates + * @param targetBufferPosition Output buffer coordinates * @param pre Is the sprite in the background */ -void DrawMissile(const Surface &out, int x, int y, int sx, int sy, bool pre) +void DrawMissile(const Surface &out, Point tilePosition, Point targetBufferPosition, bool pre) { - const auto range = MissilesAtRenderingTile.equal_range(Point { x, y }); + const auto range = MissilesAtRenderingTile.equal_range(tilePosition); for (auto it = range.first; it != range.second; it++) { - DrawMissilePrivate(out, *it->second, sx, sy, pre); + DrawMissilePrivate(out, *it->second, targetBufferPosition, pre); } } @@ -863,7 +860,7 @@ void DrawDungeon(const Surface &out, Point tilePosition, Point targetBufferPosit #endif if (MissilePreFlag) { - DrawMissile(out, tilePosition.x, tilePosition.y, targetBufferPosition.x, targetBufferPosition.y, true); + DrawMissile(out, tilePosition, targetBufferPosition, true); } if (LightTableIndex < LightsMax && bDead != 0) { @@ -906,7 +903,7 @@ void DrawDungeon(const Surface &out, Point tilePosition, Point targetBufferPosit if (dMonster[tilePosition.x][tilePosition.y] > 0) { DrawMonsterHelper(out, tilePosition.x, tilePosition.y, 0, targetBufferPosition.x, targetBufferPosition.y); } - DrawMissile(out, tilePosition.x, tilePosition.y, targetBufferPosition.x, targetBufferPosition.y, false); + DrawMissile(out, tilePosition, targetBufferPosition, false); DrawObject(out, tilePosition.x, tilePosition.y, targetBufferPosition.x, targetBufferPosition.y, false); DrawItem(out, tilePosition.x, tilePosition.y, targetBufferPosition.x, targetBufferPosition.y, false);