From 0a8daf4d02b1ad807dd07a871f40d175cd12072a Mon Sep 17 00:00:00 2001 From: krs Date: Thu, 25 May 2023 22:36:42 +0300 Subject: [PATCH] Now less source images are used. Flipped versions will be calculated. --- .../battle/rangeHighlights/green/bottom.png | Bin 245 -> 0 bytes .../rangeHighlights/green/bottomLeft.png | Bin 217 -> 0 bytes .../green/bottomLeftCorner.png | Bin 377 -> 0 bytes .../green/bottomLeftHalfCorner.png | Bin 353 -> 0 bytes .../rangeHighlights/green/bottomRight.png | Bin 264 -> 0 bytes .../green/bottomRightCorner.png | Bin 380 -> 0 bytes .../green/bottomRightHalfCorner.png | Bin 351 -> 0 bytes .../battle/rangeHighlights/green/right.png | Bin 283 -> 0 bytes .../rangeHighlights/green/rightHalf.png | Bin 392 -> 0 bytes .../battle/rangeHighlights/green/topRight.png | Bin 223 -> 0 bytes .../rangeHighlights/green/topRightCorner.png | Bin 281 -> 0 bytes .../green/topRightHalfCorner.png | Bin 257 -> 0 bytes .../rangeHighlights/rangeHighlightsGreen.json | 36 +++++++++--------- client/battle/BattleFieldController.cpp | 25 +++++++++++- client/battle/BattleFieldController.h | 3 ++ 15 files changed, 44 insertions(+), 20 deletions(-) delete mode 100644 Mods/vcmi/Sprites/battle/rangeHighlights/green/bottom.png delete mode 100644 Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomLeft.png delete mode 100644 Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomLeftCorner.png delete mode 100644 Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomLeftHalfCorner.png delete mode 100644 Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomRight.png delete mode 100644 Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomRightCorner.png delete mode 100644 Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomRightHalfCorner.png delete mode 100644 Mods/vcmi/Sprites/battle/rangeHighlights/green/right.png delete mode 100644 Mods/vcmi/Sprites/battle/rangeHighlights/green/rightHalf.png delete mode 100644 Mods/vcmi/Sprites/battle/rangeHighlights/green/topRight.png delete mode 100644 Mods/vcmi/Sprites/battle/rangeHighlights/green/topRightCorner.png delete mode 100644 Mods/vcmi/Sprites/battle/rangeHighlights/green/topRightHalfCorner.png diff --git a/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottom.png b/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottom.png deleted file mode 100644 index adb1955989f604789fa156d0a29a8d1520ff46cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^xa~60+7BevL9Ry*<9TT(P0tLG~T^vI)oZnuI=4wz7a0t8`>0O-p_RNYo z9KkidPmkNiGdC3nG6NMtf#B;uj}GU|iOrQ*Ui{uhDV@Ln_qqeW59YP~h`Fqs)Al3C z+3ZFCk6Uw(PSAf8T^_=|NAP}i`sbwH9~Z56#jj4^crCxwy?d6x+6Y4#-A5ayT#Q&K grW^DzYNL9x*?f<%(<=&i4})y-boFyt=akR{0Dcx(r2qf` diff --git a/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomLeft.png b/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomLeft.png deleted file mode 100644 index ff4d60d4e58292ac0f0f7adfd201db235534af3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^xa~60+7BevL9Ry*<9TT(P0tNFtT^vI)oZnt{XKdf`E?#+avP0_f=aieR|^Rq4Ni_D;CMrb4M%wGxV_hXX;|O z&(cBj-{%cZHQyhc`ElRb_)$BrM%|4x&3$zTBGTBs9vF74{c`sb$TUw^KbLh*2~7Zw C<4YO< diff --git a/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomLeftCorner.png b/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomLeftCorner.png deleted file mode 100644 index 4f70bb3a2572961aa4fbb61e6f02f195a4c2fae2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^xa~60+7BevL9Ry*<9TT(P0yXe?x;TbpIKRD-%hzPU(~!7K?#$vs6a8f# zrN*aIf-OTp|L+kRmnoqMX zob?WQ{AtCq+)9(mEq7l|w->wI)V6y~o$vD7Qm@LB*nYk0*T}fT^QBn+Zi0uDtbXUa zB^M0%U!`iRHnv$NXe%>1-^r+WIqO@T&zu*x?M@sNP_L?(e&T3n8c-s8ma4ONYQ{<) z-Kh(g8f^*D`}bqVF7}i5+g)Mtodd|U`_{*tkt35#QnObrBlD> V*57{Zkqrzk22WQ%mvv4FO#tA~o8cN800001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940QN~lK~!i%?bzWC zf*=%zVXZE#OY_pYu`<7gj?q9s&f#M_@5Wqz;!%-ilVw?!Wm&_vtj`t0eH@~jJ2Ex9 z5seAGLvh!Wcb*BIy+j$8$7yWKBg?~fr9bYNj0KIWOuweXZLR2cq6hl!jzv(v9_aTr zs=-Jb?JtSyw9uHR=wVBxfyNxz%9?J(9=3pd=zPwAsl0=Juk@T7t z$yHm!=2w$fBFPS5c%_-~f3OkoQ4ll!6vBwl1~B1^ zCuYD`PuLTGd7>WpW)p;XBy|GKztqRepr`2z&tgS@S8(0t00000NkvXXu0mjf*C?5I diff --git a/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomRight.png b/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomRight.png deleted file mode 100644 index a4c387db537fed624e289d04565c56f260e74091..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^xa~60+7BevL9Ry*<9TT(P0tM%Kx;TbpIKRD?%hjMD;2OBLck7mE*Uqh4 z$fne>&!@J8-{W6bcTXTt<&T{^^f-+cY8*VaIC7iSle8$M8%j(4w#}V>N8`jqtHj?^ zPO^G$^qzi4T_0$fL!y!Wv%fcbUxz7IN#8lH7$&>7*HkR$yw>9Wq}b4l=^NK|y;!|* zUB;KY5#cJoGS{4z`fGMAwbM`ZwOy~D?Ce(8_lNIuCo*+w8YCF&UNHb#&*16m=d#Wz Gp$P!-TVtC5 diff --git a/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomRightCorner.png b/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomRightCorner.png deleted file mode 100644 index d590d427e1f7ef75f8555cc9eff833f46740568d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 380 zcmV-?0fYXDP)cN800001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940TD?=K~!i%?br

|*Gm5jdKS_*`7o^C*K6JIPb)M&Wp66Y)ejP8-Fg{0&xB1Ri zSjgmJT0#>Pt2wV|EKBGlG|b}mILzAi$nscQ>CZYQvx3Gdo8QyhV=Wtu&OqPSu?QM= z2Kqf+)nKHJ4!1;gT4>Bu^s=SWKw}OZWh`JMjmArtb@rAdiGEBMI~Yl#n@@>Yl4uby zlHSuIIa(`6YvpLI9Ich3wd(0lJv8($mR}YUh0Ymi9lrJbfZ+$o0zPK?gIT~I8KR&w z@VRpyLNxHDb7TV~@U_n@o|psQ`i$z;s+pMU+p0!WIS?)^)r_XLu)SKb6dRh_!*gMm ay6y`)`D(({Ruk<20000a~60+7BevL9Ry*<9TT(P0tLT#x;TbpIKRD-$klAX)An#zY>xZqjNLPe zf6r-Dinu+i&R0>tXH&dgOT>+)=auuGS1vYt`&{7c>+GXHZ|u9t)$GG}Stx43jAv#S zH|s2%e8Hmob>YmdUr&6BnEfT)esZK^@~LO#zbe+IHV5*5DYoxkP-uJM^!s35x15qa zLRU9lsPMaZdRkZGG2?=%D;ol{P2zT~*}Z+qwTx1OtlqHbPK#rHtDk3t^`$+963&Z4 z>pTr6*~?!Pcp+iq|Nf+j)iI@p!dWi!6IFv>Xs=0On%g~f*COwYLEa~60+7BevL9Ry*<9TT(P0tGjCx;TbpIKRCT$kl8h;CeB`{Mn^lh1tJV zS`|uWc^LH-@OykXecC{ck)dJttWTBP=W}nCockTEBelfxjK{_M0lvlaU+7O|?Lqy`5B2@;yOP_HM4Kmz?!o*^6-<-<-CHFWM{cwlxFj c+F-Bzd)EbjRUInJ2J#p@UHx3vIVCg!0JKMQIRF3v diff --git a/Mods/vcmi/Sprites/battle/rangeHighlights/green/rightHalf.png b/Mods/vcmi/Sprites/battle/rangeHighlights/green/rightHalf.png deleted file mode 100644 index df291210b6b768a2250882b12e6088a361885503..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392 zcmV;30eAk1P)cN800001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940Ub$1K~!i%?buNY zgD?<;VQnwgqj|JmthJruz*bQc-E2n44PjRqq8 z_IuLEVi#bW5_%JAQ$i=FHXcbHwKx5q?whHg@s{Oh8c6OIC>e}upzqT?3u>!@etoaQ zU=)qEBXPJWG}g)b*tUv5V-0L&E?`s|jgKyA@6D+++8vBaquoZr7BSQAHFQ)B9aTd| z)zDEjbX1o_yZlK+q<#Ro=u$_$7K@}0)z`303cZJA66jPctBTIWvMT7KSQd&ti)A5b mFDxsH_Qr+;^c;S^uKNHk;B$UeP@D|_0000a~60+7BevL9Ry*<9TT(P0tHJvT^vI)oZnuE<~pFj!y0%ua{9ANyNtUZ zEOphWb@ff;V>ubl=IpPjztbo7?2%t(7ulBYn04p1l76g6oBw#Z z+v&>{;unj|?}cuOIl8-N+UAPu7mIrIAMWqayA{t4va~60+7BevL9Ry*<9TT(P0tMH3x;TbpIKRCZ%jaq!;&$=c37)eT&YavUxBqN-xwj_{g~ zYW>~s=S|#ua~60+7BevL9Ry*<9TT(P0tKgex;TbpIKMrAoAa=N0BfM-)TJiVr=61# zDRN|SlACs1=uFMqy0G%GF^Wxy{^&d1ZY!$QP-6i(p=| 00 empty frame // load single edges - { "frame" : 01, "file" : "topLeft.png"}, //000001 -> 01 - { "frame" : 02, "file" : "topRight.png"}, //000010 -> 02 - { "frame" : 03, "file" : "right.png"}, //000100 -> 04 - { "frame" : 04, "file" : "bottomRight.png"}, //001000 -> 08 - { "frame" : 05, "file" : "bottomLeft.png"}, //010000 -> 16 - { "frame" : 06, "file" : "left.png"}, //100000 -> 32 + { "frame" : 01, "file" : "topLeft.png"}, //000001 -> 01 topLeft + { "frame" : 02, "file" : "topLeft.png"}, //000010 -> 02 topRight + { "frame" : 03, "file" : "left.png"}, //000100 -> 04 right + { "frame" : 04, "file" : "topLeft.png"}, //001000 -> 08 bottomRight + { "frame" : 05, "file" : "topLeft.png"}, //010000 -> 16 bottomLeft + { "frame" : 06, "file" : "left.png"}, //100000 -> 32 left // load double edges - { "frame" : 07, "file" : "top.png"}, //000011 -> 03 - { "frame" : 08, "file" : "bottom.png"}, //011000 -> 24 - { "frame" : 09, "file" : "topRightHalfCorner.png"}, //000110 -> 06 - { "frame" : 10, "file" : "bottomRightHalfCorner.png"}, //001100 -> 12 - { "frame" : 11, "file" : "bottomLeftHalfCorner.png"}, //110000 -> 48 - { "frame" : 12, "file" : "topLeftHalfCorner.png"}, //100001 -> 33 + { "frame" : 07, "file" : "top.png"}, //000011 -> 03 top + { "frame" : 08, "file" : "top.png"}, //011000 -> 24 bottom + { "frame" : 09, "file" : "topLeftHalfCorner.png"}, //000110 -> 06 topRightHalfCorner + { "frame" : 10, "file" : "topLeftHalfCorner.png"}, //001100 -> 12 bottomRightHalfCorner + { "frame" : 11, "file" : "topLeftHalfCorner.png"}, //110000 -> 48 bottomLeftHalfCorner + { "frame" : 12, "file" : "topLeftHalfCorner.png"}, //100001 -> 33 topLeftHalfCorner // load halves - { "frame" : 13, "file" : "rightHalf.png"}, //001110 -> 14 - { "frame" : 14, "file" : "leftHalf.png"}, //110001 -> 49 + { "frame" : 13, "file" : "leftHalf.png"}, //001110 -> 14 rightHalf + { "frame" : 14, "file" : "leftHalf.png"}, //110001 -> 49 leftHalf // load corners - { "frame" : 15, "file" : "topRightCorner.png"}, //000111 -> 07 - { "frame" : 16, "file" : "bottomRightCorner.png"}, //011100 -> 28 - { "frame" : 17, "file" : "bottomLeftCorner.png"}, //111000 -> 56 - { "frame" : 18, "file" : "topLeftCorner.png"} //100011 -> 35 + { "frame" : 15, "file" : "topLeftCorner.png"}, //000111 -> 07 topRightCorner + { "frame" : 16, "file" : "topLeftCorner.png"}, //011100 -> 28 bottomRightCorner + { "frame" : 17, "file" : "topLeftCorner.png"}, //111000 -> 56 bottomLeftCorner + { "frame" : 18, "file" : "topLeftCorner.png"} //100011 -> 35 topLeftCorner ] } diff --git a/client/battle/BattleFieldController.cpp b/client/battle/BattleFieldController.cpp index d2631bf86..07cb9f770 100644 --- a/client/battle/BattleFieldController.cpp +++ b/client/battle/BattleFieldController.cpp @@ -67,8 +67,8 @@ namespace HexMasks bottomLeftHalfCorner = 0b110000, topLeftHalfCorner = 0b100001, - rightTopAndBottom = 0b001010, - leftTopAndBottom = 0b010001, + rightTopAndBottom = 0b001010, // special case, right half can be drawn instead of only top and bottom + leftTopAndBottom = 0b010001, // special case, left half can be drawn instead of only top and bottom rightHalf = 0b001110, leftHalf = 0b110001, @@ -131,6 +131,7 @@ BattleFieldController::BattleFieldController(BattleInterface & owner): fullDamageRangeLimitImages->preload(); initializeHexEdgeMaskToFrameIndex(); + flipRangedFullDamageLimitImagesIntoPositions(); if(!owner.siegeController) { @@ -549,6 +550,26 @@ std::vector> BattleFieldController::calculateRangedFullD return output; } +void BattleFieldController::flipRangedFullDamageLimitImagesIntoPositions() +{ + rangedFullDamageLimitImages->getImage(hexEdgeMaskToFrameIndex[HexMasks::topRight])->verticalFlip(); + rangedFullDamageLimitImages->getImage(hexEdgeMaskToFrameIndex[HexMasks::right])->verticalFlip(); + rangedFullDamageLimitImages->getImage(hexEdgeMaskToFrameIndex[HexMasks::bottomRight])->doubleFlip(); + rangedFullDamageLimitImages->getImage(hexEdgeMaskToFrameIndex[HexMasks::bottomLeft])->horizontalFlip(); + + rangedFullDamageLimitImages->getImage(hexEdgeMaskToFrameIndex[HexMasks::bottom])->horizontalFlip(); + + rangedFullDamageLimitImages->getImage(hexEdgeMaskToFrameIndex[HexMasks::topRightHalfCorner])->verticalFlip(); + rangedFullDamageLimitImages->getImage(hexEdgeMaskToFrameIndex[HexMasks::bottomRightHalfCorner])->doubleFlip(); + rangedFullDamageLimitImages->getImage(hexEdgeMaskToFrameIndex[HexMasks::bottomLeftHalfCorner])->horizontalFlip(); + + rangedFullDamageLimitImages->getImage(hexEdgeMaskToFrameIndex[HexMasks::rightHalf])->verticalFlip(); + + rangedFullDamageLimitImages->getImage(hexEdgeMaskToFrameIndex[HexMasks::topRightCorner])->verticalFlip(); + rangedFullDamageLimitImages->getImage(hexEdgeMaskToFrameIndex[HexMasks::bottomRightCorner])->doubleFlip(); + rangedFullDamageLimitImages->getImage(hexEdgeMaskToFrameIndex[HexMasks::bottomLeftCorner])->horizontalFlip(); +} + void BattleFieldController::showHighlightedHexes(Canvas & canvas) { std::set hoveredStackMovementRangeHexes = getMovementRangeForHoveredStack(); diff --git a/client/battle/BattleFieldController.h b/client/battle/BattleFieldController.h index acc3faee6..6a8e75f39 100644 --- a/client/battle/BattleFieldController.h +++ b/client/battle/BattleFieldController.h @@ -87,6 +87,9 @@ class BattleFieldController : public CIntObject /// based on this mask the corresponding image is selected std::vector> calculateRangedFullDamageHighlightImages(std::vector> fullRangeLimitHexesNeighbourDirections); + /// to reduce the number of source images used, some images will be used as flipped versions of preloaded ones + void flipRangedFullDamageLimitImagesIntoPositions(); + void showBackground(Canvas & canvas); void showBackgroundImage(Canvas & canvas); void showBackgroundImageWithHexes(Canvas & canvas);