diff --git a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerUnitFlag.kt b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerUnitFlag.kt index 826a25f5f3..ecb03d5a4f 100644 --- a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerUnitFlag.kt +++ b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerUnitFlag.kt @@ -7,7 +7,7 @@ import com.unciv.UncivGame import com.unciv.logic.civilization.Civilization import com.unciv.logic.map.mapunit.MapUnit import com.unciv.models.ruleset.unique.LocalUniqueCache -import com.unciv.ui.components.widgets.UnitGroup +import com.unciv.ui.components.widgets.UnitIconGroup import com.unciv.ui.components.extensions.center import com.unciv.ui.components.extensions.toLabel import com.unciv.ui.components.tilegroups.TileGroup @@ -17,8 +17,8 @@ import com.unciv.ui.screens.basescreen.BaseScreen /** The unit flag is the synbol that appears behind the map unit - circle regularly, shield when defending, etc */ class TileLayerUnitFlag(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, size) { - private var slot1Icon: UnitGroup? = null - private var slot2Icon: UnitGroup? = null + private var civilianUnitIcon: UnitIconGroup? = null + private var militaryUnitIcon: UnitIconGroup? = null init { touchable = Touchable.disabled @@ -30,15 +30,15 @@ class TileLayerUnitFlag(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup } private fun clearSlots() { - slot1Icon?.remove() - slot2Icon?.remove() + civilianUnitIcon?.remove() + militaryUnitIcon?.remove() } private fun showMilitaryUnit(viewingCiv: Civilization) = tileGroup.isForceVisible || viewingCiv.viewableInvisibleUnitsTiles.contains(tileGroup.tile) || !tileGroup.tile.hasEnemyInvisibleUnit(viewingCiv) - private fun setIconPosition(slot: Int, icon: UnitGroup) { + private fun setIconPosition(slot: Int, icon: UnitIconGroup) { if (slot == 0) { icon.center(this) icon.y += -20f @@ -48,12 +48,12 @@ class TileLayerUnitFlag(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup } } - private fun newUnitIcon(slot: Int, unit: MapUnit?, isViewable: Boolean, viewingCiv: Civilization?): UnitGroup? { + private fun newUnitIcon(slot: Int, unit: MapUnit?, isViewable: Boolean, viewingCiv: Civilization?): UnitIconGroup? { - var newIcon: UnitGroup? = null + var newIcon: UnitIconGroup? = null if (unit != null && isViewable) { - newIcon = UnitGroup(unit, 30f) + newIcon = UnitIconGroup(unit, 30f) addActor(newIcon) setIconPosition(slot, newIcon) @@ -105,20 +105,20 @@ class TileLayerUnitFlag(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup } fun selectFlag(unit: MapUnit) { - getFlag(unit)?.selectUnit() + getIcon(unit)?.selectUnit() } - fun getFlag(unit: MapUnit) : UnitGroup? { - if (slot1Icon?.unit == unit) - return slot1Icon - else if (slot2Icon?.unit == unit) - return slot2Icon + fun getIcon(unit: MapUnit) : UnitIconGroup? { + if (civilianUnitIcon?.unit == unit) + return civilianUnitIcon + else if (militaryUnitIcon?.unit == unit) + return militaryUnitIcon return null } private fun highlightRed() { - slot1Icon?.highlightRed() - slot2Icon?.highlightRed() + civilianUnitIcon?.highlightRed() + militaryUnitIcon?.highlightRed() } private fun fillSlots(viewingCiv: Civilization?) { @@ -127,12 +127,11 @@ class TileLayerUnitFlag(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup val isViewable = isForceVisible || isViewable(viewingCiv!!) val isVisibleMilitary = isForceVisible || showMilitaryUnit(viewingCiv!!) - val isSlot1Shown = isViewable - val isSlot2Shown = isViewable && isVisibleMilitary - - slot1Icon = newUnitIcon(0, tileGroup.tile.civilianUnit, isSlot1Shown, viewingCiv) - slot2Icon = newUnitIcon(1, tileGroup.tile.militaryUnit, isSlot2Shown, viewingCiv) + val isCivilianShown = isViewable + val isMilitaryShown = isViewable && isVisibleMilitary + civilianUnitIcon = newUnitIcon(0, tileGroup.tile.civilianUnit, isCivilianShown, viewingCiv) + militaryUnitIcon = newUnitIcon(1, tileGroup.tile.militaryUnit, isMilitaryShown, viewingCiv) } override fun doUpdate(viewingCiv: Civilization?, localUniqueCache: LocalUniqueCache) { diff --git a/core/src/com/unciv/ui/components/widgets/UnitGroup.kt b/core/src/com/unciv/ui/components/widgets/UnitIconGroup.kt similarity index 98% rename from core/src/com/unciv/ui/components/widgets/UnitGroup.kt rename to core/src/com/unciv/ui/components/widgets/UnitIconGroup.kt index f9cb21f5b6..1060ac53f1 100644 --- a/core/src/com/unciv/ui/components/widgets/UnitGroup.kt +++ b/core/src/com/unciv/ui/components/widgets/UnitIconGroup.kt @@ -77,7 +77,8 @@ private class FlagBackground(drawable: TextureRegionDrawable, size: Float) : Ima } -class UnitGroup(val unit: MapUnit, val size: Float) : Group() { +/** Displays the unit's icon and action */ +class UnitIconGroup(val unit: MapUnit, val size: Float) : Group() { var actionGroup: Group? = null private val flagIcon = ImageGetter.getUnitIcon(unit.name, unit.civ.nation.getInnerColor()) diff --git a/core/src/com/unciv/ui/screens/cityscreen/CityScreenCityPickerTable.kt b/core/src/com/unciv/ui/screens/cityscreen/CityScreenCityPickerTable.kt index e84d6567de..afbd79d10f 100644 --- a/core/src/com/unciv/ui/screens/cityscreen/CityScreenCityPickerTable.kt +++ b/core/src/com/unciv/ui/screens/cityscreen/CityScreenCityPickerTable.kt @@ -4,7 +4,7 @@ import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.scenes.scene2d.Touchable import com.badlogic.gdx.scenes.scene2d.ui.Table import com.badlogic.gdx.utils.Align -import com.unciv.ui.components.widgets.UnitGroup +import com.unciv.ui.components.widgets.UnitIconGroup import com.unciv.ui.components.input.onClick import com.unciv.ui.components.extensions.toLabel import com.unciv.ui.images.ImageGetter @@ -69,7 +69,7 @@ class CityScreenCityPickerTable(private val cityScreen: CityScreen) : Table() { val garrison = city.getGarrison() if (garrison != null) { - cityNameTable.add(UnitGroup(garrison, 30f)).padLeft(5f) + cityNameTable.add(UnitIconGroup(garrison, 30f)).padLeft(5f) } add(cityNameTable).width(stage.width / 4) diff --git a/core/src/com/unciv/ui/screens/overviewscreen/UnitOverviewTabColumn.kt b/core/src/com/unciv/ui/screens/overviewscreen/UnitOverviewTabColumn.kt index cbadf12ca1..5df09ec86a 100644 --- a/core/src/com/unciv/ui/screens/overviewscreen/UnitOverviewTabColumn.kt +++ b/core/src/com/unciv/ui/screens/overviewscreen/UnitOverviewTabColumn.kt @@ -13,7 +13,7 @@ import com.unciv.ui.components.extensions.toLabel import com.unciv.ui.components.fonts.Fonts import com.unciv.ui.components.input.onClick import com.unciv.ui.components.widgets.SortableGrid -import com.unciv.ui.components.widgets.UnitGroup +import com.unciv.ui.components.widgets.UnitIconGroup import com.unciv.ui.images.IconTextButton import com.unciv.ui.images.ImageGetter import com.unciv.ui.screens.pickerscreens.UnitRenamePopup @@ -33,7 +33,7 @@ enum class UnitOverviewTabColumn( // Unit button column - name, health, fortified, sleeping, embarked are visible here val button = IconTextButton( item.displayName(), - UnitGroup(item, 20f).apply { if (!unit.isIdle()) color.a = 0.5f }, + UnitIconGroup(item, 20f).apply { if (!unit.isIdle()) color.a = 0.5f }, fontColor = if (item.isIdle()) Color.WHITE else Color.LIGHT_GRAY ) button.name = getUnitIdentifier(item) // Marker to find a unit in select() diff --git a/core/src/com/unciv/ui/screens/worldscreen/bottombar/BattleTable.kt b/core/src/com/unciv/ui/screens/worldscreen/bottombar/BattleTable.kt index 3c05285ea5..823155aaa5 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/bottombar/BattleTable.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/bottombar/BattleTable.kt @@ -25,7 +25,7 @@ import com.unciv.ui.components.extensions.toLabel import com.unciv.ui.components.extensions.toTextButton import com.unciv.ui.components.fonts.Fonts import com.unciv.ui.components.input.onClick -import com.unciv.ui.components.widgets.UnitGroup +import com.unciv.ui.components.widgets.UnitIconGroup import com.unciv.ui.images.ImageGetter import com.unciv.ui.screens.basescreen.BaseScreen import com.unciv.ui.screens.worldscreen.UndoHandler.Companion.clearUndoCheckpoints @@ -123,7 +123,7 @@ class BattleTable(val worldScreen: WorldScreen) : Table() { } private fun getIcon(combatant: ICombatant) = - if (combatant is MapUnitCombatant) UnitGroup(combatant.unit,25f) + if (combatant is MapUnitCombatant) UnitIconGroup(combatant.unit,25f) else ImageGetter.getNationPortrait(combatant.getCivInfo().nation, 25f) private val quarterScreen = worldScreen.stage.width / 4 diff --git a/core/src/com/unciv/ui/screens/worldscreen/unit/UnitTable.kt b/core/src/com/unciv/ui/screens/worldscreen/unit/UnitTable.kt index c0339e3d3e..559fe2df7d 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/unit/UnitTable.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/unit/UnitTable.kt @@ -20,7 +20,7 @@ import com.unciv.ui.components.extensions.isShiftKeyPressed import com.unciv.ui.components.extensions.toLabel import com.unciv.ui.components.input.keyShortcuts import com.unciv.ui.components.input.onClick -import com.unciv.ui.components.widgets.UnitGroup +import com.unciv.ui.components.widgets.UnitIconGroup import com.unciv.ui.images.ImageGetter import com.unciv.ui.screens.basescreen.BaseScreen import com.unciv.ui.screens.pickerscreens.CityRenamePopup @@ -283,7 +283,7 @@ class UnitTable(val worldScreen: WorldScreen) : Table() { if (selectedUnit != null) { if (selectedUnits.size == 1) { // single selected unit - unitIconHolder.add(UnitGroup(selectedUnit!!, 30f)).pad(5f) + unitIconHolder.add(UnitIconGroup(selectedUnit!!, 30f)).pad(5f) for (promotion in selectedUnit!!.promotions.getPromotions(true)) promotionsTable.add(ImageGetter.getPromotionPortrait(promotion.name)).padBottom(2f) @@ -299,7 +299,7 @@ class UnitTable(val worldScreen: WorldScreen) : Table() { } } else { // multiple selected units for (unit in selectedUnits) - unitIconHolder.add(UnitGroup(unit, 30f)).pad(5f) + unitIconHolder.add(UnitIconGroup(unit, 30f)).pad(5f) } }