From 1a8a86cb2c1b4a6186e804651012fec9c2f509c5 Mon Sep 17 00:00:00 2001 From: will-ca Date: Wed, 29 Dec 2021 08:21:34 -0800 Subject: [PATCH] Unify and improve moddability of more tile-based images. (#5873) --- android/Images/OtherIcons/Crosshair.png | Bin 1676 -> 0 bytes android/Images/TileSets/Default/Crosshair.png | Bin 0 -> 6133 bytes android/Images/TileSets/Default/Highlight.png | Bin 0 -> 10442 bytes .../Images/TileSets/FantasyHex/Crosshair.png | Bin 0 -> 6133 bytes .../Images/TileSets/FantasyHex/Highlight.png | Bin 0 -> 10442 bytes .../src/com/unciv/ui/cityscreen/CityScreen.kt | 8 +-- core/src/com/unciv/ui/map/TileGroupMap.kt | 4 +- .../com/unciv/ui/mapeditor/MapEditorScreen.kt | 4 +- core/src/com/unciv/ui/tilegroups/TileGroup.kt | 56 ++++++++---------- .../unciv/ui/worldscreen/WorldMapHolder.kt | 32 +++++----- 10 files changed, 48 insertions(+), 56 deletions(-) delete mode 100644 android/Images/OtherIcons/Crosshair.png create mode 100644 android/Images/TileSets/Default/Crosshair.png create mode 100644 android/Images/TileSets/Default/Highlight.png create mode 100644 android/Images/TileSets/FantasyHex/Crosshair.png create mode 100644 android/Images/TileSets/FantasyHex/Highlight.png diff --git a/android/Images/OtherIcons/Crosshair.png b/android/Images/OtherIcons/Crosshair.png deleted file mode 100644 index 9212f7a18d80b16959a24cfbca75e39fe663a769..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1676 zcmeAS@N?(olHy`uVBq!ia0vp^DImv%n*=n1O*?0E8LW zD(@`?3QCl?MwA5SrKP_$&G7~X;wMiR$B+!?w-YZG z9ai9Bx&8nD3zqKHxexpl?ikMO`F_%>66*&>NStI`^_TtUVH!_viS3N3lZ_q`6fpneR`YAbeV7y3U(J z*S$XR?OUF}zT!z!>$mA1dQlbCOH(c>o$7sZX};1fFQe4JvtdU06J3=i+OKe4w{hOI z7TsOPREouxyQmtAtv{q1=el&$g~=19@$jAzby}3IWo&R=qf@8r#DO~ss_t9gTvBLW z;Ogx%w?~qN$G>P-!JG`XhL%TO=iG&=x75o-Ecu}NRg-m^sO`xP*4eYxEm?nX*5L+~ z#$pzoA3dHz7Euk$^$rU$9~b60*5N6X==^A6ONEM}U9iz%WzNFpCts_WOE3AD?5X-X Q7gTb1y85}Sb4q9e00a63?*IS* diff --git a/android/Images/TileSets/Default/Crosshair.png b/android/Images/TileSets/Default/Crosshair.png new file mode 100644 index 0000000000000000000000000000000000000000..971dfaa8ddc5ee02ca06631dc96f2c866c247cb3 GIT binary patch literal 6133 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 Yhw<1Q>Ky<6m3Sv|uywX6Uhg0GALQ+%Jpcdz literal 0 HcmV?d00001 diff --git a/android/Images/TileSets/Default/Highlight.png b/android/Images/TileSets/Default/Highlight.png new file mode 100644 index 0000000000000000000000000000000000000000..25262fe1c0f5bd9f77543512aa5fb39df6a750f2 GIT binary patch literal 10442 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 literal 0 HcmV?d00001 diff --git a/android/Images/TileSets/FantasyHex/Crosshair.png b/android/Images/TileSets/FantasyHex/Crosshair.png new file mode 100644 index 0000000000000000000000000000000000000000..971dfaa8ddc5ee02ca06631dc96f2c866c247cb3 GIT binary patch literal 6133 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 Yhw<1Q>Ky<6m3Sv|uywX6Uhg0GALQ+%Jpcdz literal 0 HcmV?d00001 diff --git a/android/Images/TileSets/FantasyHex/Highlight.png b/android/Images/TileSets/FantasyHex/Highlight.png new file mode 100644 index 0000000000000000000000000000000000000000..25262fe1c0f5bd9f77543512aa5fb39df6a750f2 GIT binary patch literal 10442 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 literal 0 HcmV?d00001 diff --git a/core/src/com/unciv/ui/cityscreen/CityScreen.kt b/core/src/com/unciv/ui/cityscreen/CityScreen.kt index 47c68b3fa4..dfd3770ec7 100644 --- a/core/src/com/unciv/ui/cityscreen/CityScreen.kt +++ b/core/src/com/unciv/ui/cityscreen/CityScreen.kt @@ -158,16 +158,16 @@ class CityScreen( val nextTile = city.expansion.chooseNewTileToOwn() for (tileGroup in tileGroups) { tileGroup.update() - tileGroup.hideCircle() + tileGroup.hideHighlight() if (city.tiles.contains(tileGroup.tileInfo.position) && constructionsTable.improvementBuildingToConstruct != null) { val improvement = constructionsTable.improvementBuildingToConstruct!!.getImprovement(city.getRuleset())!! if (tileGroup.tileInfo.canBuildImprovement(improvement, city.civInfo)) - tileGroup.showCircle(Color.GREEN) - else tileGroup.showCircle(Color.RED) + tileGroup.showHighlight(Color.GREEN) + else tileGroup.showHighlight(Color.RED) } if (tileGroup.tileInfo == nextTile) { - tileGroup.showCircle(Color.PURPLE) + tileGroup.showHighlight(Color.PURPLE) tileGroup.setColor(0f, 0f, 0f, 0.7f) } } diff --git a/core/src/com/unciv/ui/map/TileGroupMap.kt b/core/src/com/unciv/ui/map/TileGroupMap.kt index 8ccec0cda5..ea3a8a77f3 100644 --- a/core/src/com/unciv/ui/map/TileGroupMap.kt +++ b/core/src/com/unciv/ui/map/TileGroupMap.kt @@ -95,7 +95,7 @@ class TileGroupMap( unitLayers.add(group.unitLayerGroup.apply { setPosition(group.x,group.y) }) unitImageLayers.add(group.unitImageLayerGroup.apply { setPosition(group.x,group.y) }) cityButtonLayers.add(group.cityButtonLayerGroup.apply { setPosition(group.x,group.y) }) - circleCrosshairFogLayers.add(group.circleCrosshairFogLayerGroup.apply { setPosition(group.x,group.y) }) + circleCrosshairFogLayers.add(group.highlightCrosshairFogLayerGroup.apply { setPosition(group.x,group.y) }) if (worldWrap) { for (mirrorTile in mirrorTileGroups[group.tileInfo]!!.toList()) { @@ -105,7 +105,7 @@ class TileGroupMap( unitLayers.add(mirrorTile.unitLayerGroup.apply { setPosition(mirrorTile.x,mirrorTile.y) }) unitImageLayers.add(mirrorTile.unitImageLayerGroup.apply { setPosition(mirrorTile.x,mirrorTile.y) }) cityButtonLayers.add(mirrorTile.cityButtonLayerGroup.apply { setPosition(mirrorTile.x,mirrorTile.y) }) - circleCrosshairFogLayers.add(mirrorTile.circleCrosshairFogLayerGroup.apply { setPosition(mirrorTile.x,mirrorTile.y) }) + circleCrosshairFogLayers.add(mirrorTile.highlightCrosshairFogLayerGroup.apply { setPosition(mirrorTile.x,mirrorTile.y) }) } } } diff --git a/core/src/com/unciv/ui/mapeditor/MapEditorScreen.kt b/core/src/com/unciv/ui/mapeditor/MapEditorScreen.kt index 182cae1a76..6b7a2438bc 100644 --- a/core/src/com/unciv/ui/mapeditor/MapEditorScreen.kt +++ b/core/src/com/unciv/ui/mapeditor/MapEditorScreen.kt @@ -106,7 +106,7 @@ class MapEditorScreen(): BaseScreen() { if (isPainting) { for (tileInfo in lastDrawnTiles) - mapHolder.tileGroups[tileInfo]!!.forEach { it.hideCircle() } + mapHolder.tileGroups[tileInfo]!!.forEach { it.hideHighlight() } lastDrawnTiles.clear() val stageCoords = mapHolder.actor.stageToLocalCoordinates(Vector2(event!!.stageX, event.stageY)) @@ -120,7 +120,7 @@ class MapEditorScreen(): BaseScreen() { tileInfo.setTerrainTransients() mapHolder.tileGroups[tileInfo]!!.forEach { it.update() - it.showCircle(Color.WHITE) + it.showHighlight(Color.WHITE) } lastDrawnTiles.add(tileInfo) diff --git a/core/src/com/unciv/ui/tilegroups/TileGroup.kt b/core/src/com/unciv/ui/tilegroups/TileGroup.kt index 9e94398786..2391e75e58 100644 --- a/core/src/com/unciv/ui/tilegroups/TileGroup.kt +++ b/core/src/com/unciv/ui/tilegroups/TileGroup.kt @@ -40,8 +40,8 @@ open class TileGroup(var tileInfo: TileInfo, val tileSetStrings:TileSetStrings, Layers: Base image (+ overlay) Feature overlay / city overlay - Misc: Units, improvements, resources, border - Circle, Crosshair, Fog layer + Misc: Units, improvements, resources, border, arrows + Highlight, Crosshair, Fog layer City name */ @@ -121,9 +121,9 @@ open class TileGroup(var tileInfo: TileInfo, val tileSetStrings:TileSetStrings, val cityButtonLayerGroup = Group().apply { isTransform = false; setSize(groupSize, groupSize) touchable = Touchable.childrenOnly; setOrigin(Align.center) } - val circleCrosshairFogLayerGroup = ActionlessGroup().apply { isTransform = false; setSize(groupSize, groupSize) } - val circleImage = ImageGetter.getCircle() // for blue and red circles on the tile - private val crosshairImage = ImageGetter.getImage("OtherIcons/Crosshair") // for when a unit is targeted + val highlightCrosshairFogLayerGroup = ActionlessGroup().apply { isTransform = false; setSize(groupSize, groupSize) } + val highlightImage = ImageGetter.getImage(tileSetStrings.orFallback { getString(tileSetLocation, "Highlight") }) // for blue and red circles/emphasis on the tile + private val crosshairImage = ImageGetter.getImage(tileSetStrings.orFallback { getString(tileSetLocation, "Crosshair") }) // for when a unit is targeted private val fogImage = ImageGetter.getImage(tileSetStrings.orFallback { crosshatchHexagon } ) /** @@ -161,14 +161,14 @@ open class TileGroup(var tileInfo: TileInfo, val tileSetStrings:TileSetStrings, this.addActor(miscLayerGroup) this.addActor(unitLayerGroup) this.addActor(cityButtonLayerGroup) - this.addActor(circleCrosshairFogLayerGroup) + this.addActor(highlightCrosshairFogLayerGroup) terrainFeatureLayerGroup.addActor(pixelMilitaryUnitGroup) terrainFeatureLayerGroup.addActor(pixelCivilianUnitGroup) updateTileImage(null) - addCircleImage() + addHighlightImage() addFogImage() addCrosshairImage() isTransform = false // performance helper - nothing here is rotated or scaled @@ -178,34 +178,27 @@ open class TileGroup(var tileInfo: TileInfo, val tileSetStrings:TileSetStrings, //region init functions - private fun addCircleImage() { - circleImage.width = 50f - circleImage.height = 50f - circleImage.center(this) - circleCrosshairFogLayerGroup.addActor(circleImage) - circleImage.isVisible = false + private fun addHighlightImage() { + highlightCrosshairFogLayerGroup.addActor(highlightImage) + setHexagonImageSize(highlightImage) + highlightImage.isVisible = false } private fun addFogImage() { - val imageScale = groupSize * 1.5f / fogImage.width - fogImage.setScale(imageScale) - fogImage.setOrigin(Align.center) - fogImage.center(this) fogImage.color = Color.WHITE.cpy().apply { a = 0.2f } - circleCrosshairFogLayerGroup.addActor(fogImage) + highlightCrosshairFogLayerGroup.addActor(fogImage) + setHexagonImageSize(fogImage) } private fun addCrosshairImage() { - crosshairImage.width = 70f - crosshairImage.height = 70f - crosshairImage.center(this) crosshairImage.isVisible = false - circleCrosshairFogLayerGroup.addActor(crosshairImage) + highlightCrosshairFogLayerGroup.addActor(crosshairImage) + setHexagonImageSize(crosshairImage) } //endregion - fun showCrosshair(color: Color) { - crosshairImage.color = color.cpy().apply { a = 0.5f } + fun showCrosshair(alpha: Float = 1f) { + crosshairImage.color.a = alpha crosshairImage.isVisible = true } @@ -254,7 +247,6 @@ open class TileGroup(var tileInfo: TileInfo, val tileSetStrings:TileSetStrings, Parent should already be set when calling. */ private fun setHexagonImageSize(hexagonImage: Image) { // Using "scale" can get really confusing when positioning, how about no - // TODO: Make as many images use this as possible— Standardized "Image on tile" placement for consistently moddable crosshairs, circles, etc. hexagonImage.setSize(hexagonImageWidth, hexagonImage.height * hexagonImageWidth / hexagonImage.width) hexagonImage.setOrigin(hexagonImageOrigin.first, hexagonImageOrigin.second) hexagonImage.x = hexagonImagePosition.first @@ -339,7 +331,7 @@ open class TileGroup(var tileInfo: TileInfo, val tileSetStrings:TileSetStrings, fogImage.isVisible = true } - hideCircle() + hideHighlight() if (viewingCiv != null && !isExplored(viewingCiv)) { clearUnexploredTiles() for(image in tileBaseImages) image.color = tileSetStrings.tileSetConfig.unexploredTileColor @@ -768,7 +760,7 @@ open class TileGroup(var tileInfo: TileInfo, val tileSetStrings:TileSetStrings, /** * Add an arrow to be drawn from this tile. - * Similar to [showCircle]. + * Similar to [showHighlight]. * * Zero-length arrows are ignored. * @@ -785,18 +777,18 @@ open class TileGroup(var tileInfo: TileInfo, val tileSetStrings:TileSetStrings, /** * Clear all arrows to be drawn from this tile. - * Similar to [hideCircle]. + * Similar to [hideHighlight]. */ fun resetArrows() { arrowsToDraw.clear() } - fun showCircle(color: Color, alpha: Float = 0.3f) { - circleImage.isVisible = true - circleImage.color = color.cpy().apply { a = alpha } + fun showHighlight(color: Color, alpha: Float = 0.3f) { + highlightImage.isVisible = true + highlightImage.color = color.cpy().apply { a = alpha } } - fun hideCircle() { circleImage.isVisible = false } + fun hideHighlight() { highlightImage.isVisible = false } /** This exists so we can easily find the TileGroup draw method in the android profiling, otherwise it's just a mass of Group.draw->drawChildren->Group.draw etc. */ override fun draw(batch: Batch?, parentAlpha: Float) { super.draw(batch, parentAlpha) } diff --git a/core/src/com/unciv/ui/worldscreen/WorldMapHolder.kt b/core/src/com/unciv/ui/worldscreen/WorldMapHolder.kt index c7c7ad8a02..497aefa8af 100644 --- a/core/src/com/unciv/ui/worldscreen/WorldMapHolder.kt +++ b/core/src/com/unciv/ui/worldscreen/WorldMapHolder.kt @@ -502,13 +502,13 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap if (tileGroup.tileInfo.getShownImprovement(viewingCiv) == Constants.barbarianEncampment && tileGroup.tileInfo.position in viewingCiv.exploredTiles) - tileGroup.showCircle(Color.RED) + tileGroup.showHighlight(Color.RED) val unitsInTile = tileGroup.tileInfo.getUnits() val canSeeEnemy = unitsInTile.any() && unitsInTile.first().civInfo.isAtWarWith(viewingCiv) && tileGroup.showMilitaryUnit(viewingCiv) if (tileGroup.isViewable(viewingCiv) && canSeeEnemy) - tileGroup.showCircle(Color.RED) // Display ALL viewable enemies with a red circle so that users don't need to go "hunting" for enemy units + tileGroup.showHighlight(Color.RED) // Display ALL viewable enemies with a red circle so that users don't need to go "hunting" for enemy units } val unitTable = worldScreen.bottomUnitTable @@ -531,7 +531,7 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap val worldTileGroupsForSelectedTile = tileGroups[selectedTile] if (worldTileGroupsForSelectedTile != null) for (group in worldTileGroupsForSelectedTile) - group.showCircle(Color.WHITE) + group.showHighlight(Color.WHITE) zoom(scaleX) // zoom to current scale, to set the size of the city buttons after "next turn" } @@ -563,7 +563,7 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap val swapUnitsTileOverlayColor = Color.PURPLE for (tile in unitSwappableTiles) { for (tileToColor in tileGroups[tile]!!) { - tileToColor.showCircle(swapUnitsTileOverlayColor, + tileToColor.showHighlight(swapUnitsTileOverlayColor, if (UncivGame.Current.settings.singleTapMove) 0.7f else 0.3f) } } @@ -579,14 +579,14 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap if (isAirUnit) if (tile.aerialDistanceTo(unit.getTile()) <= unit.getRange()) { // The tile is within attack range - tileToColor.showCircle(Color.RED, 0.3f) + tileToColor.showHighlight(Color.RED, 0.3f) } else { // The tile is within move range - tileToColor.showCircle(Color.BLUE, 0.3f) + tileToColor.showHighlight(Color.BLUE, 0.3f) } if (unit.movement.canMoveTo(tile) || unit.movement.isUnknownTileWeShouldAssumeToBePassable(tile) && !unit.baseUnit.movesLikeAirUnits()) - tileToColor.showCircle(moveTileOverlayColor, + tileToColor.showHighlight(moveTileOverlayColor, if (UncivGame.Current.settings.singleTapMove || isAirUnit) 0.7f else 0.3f) } } @@ -595,14 +595,14 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap if (unitMovementPaths.containsKey(unit)) { for (tile in unitMovementPaths[unit]!!) { for (tileToColor in tileGroups[tile]!!) - tileToColor.showCircle(Color.SKY, 0.8f) + tileToColor.showHighlight(Color.SKY, 0.8f) } } if (unit.isMoving()) { val destinationTileGroups = tileGroups[unit.getMovementDestination()]!! for (destinationTileGroup in destinationTileGroups) - destinationTileGroup.showCircle(Color.WHITE, 0.7f) + destinationTileGroup.showHighlight(Color.WHITE, 0.7f) } val attackableTiles: List = if (unit.isCivilian()) listOf() @@ -617,12 +617,12 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap for (attackableTile in attackableTiles) { for (tileGroupToAttack in tileGroups[attackableTile.tileToAttack]!!) { - tileGroupToAttack.showCircle(colorFromRGB(237, 41, 57)) + tileGroupToAttack.showHighlight(colorFromRGB(237, 41, 57)) tileGroupToAttack.showCrosshair( // the targets which cannot be attacked without movements shown as orange-ish if (attackableTile.tileToAttackFrom != unit.currentTile) - colorFromRGB(255, 75, 0) - else Color.RED + 0.5f + else 1f ) } } @@ -635,8 +635,8 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap .filter { (UncivGame.Current.viewEntireMapForDebug || playerViewableTilePositions.contains(it.position)) } for (attackableTile in attackableTiles) { for (group in tileGroups[attackableTile]!!) { - group.showCircle(colorFromRGB(237, 41, 57)) - group.showCrosshair(Color.RED) + group.showHighlight(colorFromRGB(237, 41, 57)) + group.showCrosshair() } } } @@ -685,9 +685,9 @@ class WorldMapHolder(internal val worldScreen: WorldScreen, internal val tileMap removeAction(blinkAction) // so we don't have multiple blinks at once blinkAction = Actions.repeat(3, Actions.sequence( - Actions.run { tileGroup.circleImage.isVisible = false }, + Actions.run { tileGroup.highlightImage.isVisible = false }, Actions.delay(.3f), - Actions.run { tileGroup.circleImage.isVisible = true }, + Actions.run { tileGroup.highlightImage.isVisible = true }, Actions.delay(.3f) )) addAction(blinkAction) // Don't set it on the group because it's an actionless group