From 322d8b340e6c1206a36fa591180ec5fdfbde8592 Mon Sep 17 00:00:00 2001 From: Juliano Leal Goncalves Date: Sun, 27 Jun 2021 23:29:19 -0300 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Leverage=20'Point'=20in=20?= =?UTF-8?q?'DrawMonsterHelper'=20function?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Source/scrollrt.cpp | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/Source/scrollrt.cpp b/Source/scrollrt.cpp index 2f7f225b0..53f1c418f 100644 --- a/Source/scrollrt.cpp +++ b/Source/scrollrt.cpp @@ -732,21 +732,19 @@ void DrawItem(const Surface &out, Point tilePosition, Point targetBufferPosition /** * @brief Check if and how a monster should be rendered * @param out Output buffer - * @param y dPiece coordinate - * @param x dPiece coordinate + * @param tilePosition dPiece coordinates * @param oy dPiece Y offset - * @param sx Output buffer coordinate - * @param sy Output buffer coordinate + * @param targetBufferPosition Output buffer coordinates */ -void DrawMonsterHelper(const Surface &out, int x, int y, int oy, int sx, int sy) +void DrawMonsterHelper(const Surface &out, Point tilePosition, int oy, Point targetBufferPosition) { - int mi = dMonster[x][y + oy]; + int mi = dMonster[tilePosition.x][tilePosition.y + oy]; mi = mi > 0 ? mi - 1 : -(mi + 1); if (leveltype == DTYPE_TOWN) { auto &towner = Towners[mi]; - int px = sx - CalculateWidth2(towner._tAnimWidth); - const Point position { px, sy }; + int px = targetBufferPosition.x - CalculateWidth2(towner._tAnimWidth); + const Point position { px, targetBufferPosition.y }; if (mi == pcursmonst) { CelBlitOutlineTo(out, 166, position, CelSprite(towner._tAnimData, towner._tAnimWidth), towner._tAnimFrame); } @@ -755,7 +753,7 @@ void DrawMonsterHelper(const Surface &out, int x, int y, int oy, int sx, int sy) return; } - if ((dFlags[x][y] & BFLAG_LIT) == 0 && !Players[MyPlayerId]._pInfraFlag) + if ((dFlags[tilePosition.x][tilePosition.y] & BFLAG_LIT) == 0 && !Players[MyPlayerId]._pInfraFlag) return; if (mi < 0 || mi >= MAXMONSTERS) { @@ -780,12 +778,11 @@ void DrawMonsterHelper(const Surface &out, int x, int y, int oy, int sx, int sy) offset = GetOffsetForWalking(monster.AnimInfo, monster._mdir); } - int px = sx + offset.deltaX - CalculateWidth2(cel.Width()); - int py = sy + offset.deltaY; + const Point monsterRenderPosition { targetBufferPosition + offset - Displacement { CalculateWidth2(cel.Width()), 0 } }; if (mi == pcursmonst) { - Cl2DrawOutline(out, 233, px, py, cel, monster.AnimInfo.GetFrameToUseForRendering()); + Cl2DrawOutline(out, 233, monsterRenderPosition.x, monsterRenderPosition.y, cel, monster.AnimInfo.GetFrameToUseForRendering()); } - DrawMonster(out, x, y, px, py, monster); + DrawMonster(out, tilePosition.x, tilePosition.y, monsterRenderPosition.x, monsterRenderPosition.y, monster); } /** @@ -883,7 +880,7 @@ void DrawDungeon(const Surface &out, Point tilePosition, Point targetBufferPosit DrawPlayerHelper(out, { tilePosition.x, syy }, targetBufferPosition); } if ((bFlag & BFLAG_MONSTLR) != 0 && negMon < 0) { - DrawMonsterHelper(out, tilePosition.x, tilePosition.y, -1, targetBufferPosition.x, targetBufferPosition.y); + DrawMonsterHelper(out, tilePosition, -1, targetBufferPosition); } if ((bFlag & BFLAG_DEAD_PLAYER) != 0) { DrawDeadPlayer(out, tilePosition.x, tilePosition.y, targetBufferPosition.x, targetBufferPosition.y); @@ -892,7 +889,7 @@ void DrawDungeon(const Surface &out, Point tilePosition, Point targetBufferPosit DrawPlayerHelper(out, tilePosition, targetBufferPosition); } if (dMonster[tilePosition.x][tilePosition.y] > 0) { - DrawMonsterHelper(out, tilePosition.x, tilePosition.y, 0, targetBufferPosition.x, targetBufferPosition.y); + DrawMonsterHelper(out, tilePosition, 0, targetBufferPosition); } DrawMissile(out, tilePosition, targetBufferPosition, false); DrawObject(out, tilePosition, targetBufferPosition, false);