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 adb195598..000000000 Binary files a/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottom.png and /dev/null differ 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 ff4d60d4e..000000000 Binary files a/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomLeft.png and /dev/null differ 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 4f70bb3a2..000000000 Binary files a/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomLeftCorner.png and /dev/null differ diff --git a/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomLeftHalfCorner.png b/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomLeftHalfCorner.png deleted file mode 100644 index 941b9bd14..000000000 Binary files a/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomLeftHalfCorner.png and /dev/null differ 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 a4c387db5..000000000 Binary files a/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomRight.png and /dev/null differ 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 d590d427e..000000000 Binary files a/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomRightCorner.png and /dev/null differ diff --git a/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomRightHalfCorner.png b/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomRightHalfCorner.png deleted file mode 100644 index 35b32818b..000000000 Binary files a/Mods/vcmi/Sprites/battle/rangeHighlights/green/bottomRightHalfCorner.png and /dev/null differ diff --git a/Mods/vcmi/Sprites/battle/rangeHighlights/green/right.png b/Mods/vcmi/Sprites/battle/rangeHighlights/green/right.png deleted file mode 100644 index eddf53427..000000000 Binary files a/Mods/vcmi/Sprites/battle/rangeHighlights/green/right.png and /dev/null differ 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 df291210b..000000000 Binary files a/Mods/vcmi/Sprites/battle/rangeHighlights/green/rightHalf.png and /dev/null differ diff --git a/Mods/vcmi/Sprites/battle/rangeHighlights/green/topRight.png b/Mods/vcmi/Sprites/battle/rangeHighlights/green/topRight.png deleted file mode 100644 index f72caeed0..000000000 Binary files a/Mods/vcmi/Sprites/battle/rangeHighlights/green/topRight.png and /dev/null differ diff --git a/Mods/vcmi/Sprites/battle/rangeHighlights/green/topRightCorner.png b/Mods/vcmi/Sprites/battle/rangeHighlights/green/topRightCorner.png deleted file mode 100644 index fd3706e3f..000000000 Binary files a/Mods/vcmi/Sprites/battle/rangeHighlights/green/topRightCorner.png and /dev/null differ diff --git a/Mods/vcmi/Sprites/battle/rangeHighlights/green/topRightHalfCorner.png b/Mods/vcmi/Sprites/battle/rangeHighlights/green/topRightHalfCorner.png deleted file mode 100644 index 68824abc9..000000000 Binary files a/Mods/vcmi/Sprites/battle/rangeHighlights/green/topRightHalfCorner.png and /dev/null differ diff --git a/Mods/vcmi/Sprites/battle/rangeHighlights/rangeHighlightsGreen.json b/Mods/vcmi/Sprites/battle/rangeHighlights/rangeHighlightsGreen.json index 2609782a3..1fbc4c4cf 100644 --- a/Mods/vcmi/Sprites/battle/rangeHighlights/rangeHighlightsGreen.json +++ b/Mods/vcmi/Sprites/battle/rangeHighlights/rangeHighlightsGreen.json @@ -5,30 +5,30 @@ { "frame" : 00, "file" : "empty.png"}, // 000001 -> 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);