diff --git a/android/Images/UnitActionIcons/AddInCapital.png b/android/Images/UnitActionIcons/AddInCapital.png new file mode 100644 index 0000000000..05b3390bab Binary files /dev/null and b/android/Images/UnitActionIcons/AddInCapital.png differ diff --git a/android/Images/UnitActionIcons/AirSweep.png b/android/Images/UnitActionIcons/AirSweep.png new file mode 100644 index 0000000000..348f7d386c Binary files /dev/null and b/android/Images/UnitActionIcons/AirSweep.png differ diff --git a/android/Images/UnitActionIcons/Automate.png b/android/Images/UnitActionIcons/Automate.png new file mode 100644 index 0000000000..a476095851 Binary files /dev/null and b/android/Images/UnitActionIcons/Automate.png differ diff --git a/android/Images/UnitActionIcons/ConstructImprovement.png b/android/Images/UnitActionIcons/ConstructImprovement.png new file mode 100644 index 0000000000..5913f3a612 Binary files /dev/null and b/android/Images/UnitActionIcons/ConstructImprovement.png differ diff --git a/android/Images/UnitActionIcons/DisbandUnit.png b/android/Images/UnitActionIcons/DisbandUnit.png new file mode 100644 index 0000000000..f7df7d9c79 Binary files /dev/null and b/android/Images/UnitActionIcons/DisbandUnit.png differ diff --git a/android/Images/UnitActionIcons/EnhanceReligion.png b/android/Images/UnitActionIcons/EnhanceReligion.png new file mode 100644 index 0000000000..acc0df5b7f Binary files /dev/null and b/android/Images/UnitActionIcons/EnhanceReligion.png differ diff --git a/android/Images/UnitActionIcons/Explore.png b/android/Images/UnitActionIcons/Explore.png new file mode 100644 index 0000000000..0ec204b8eb Binary files /dev/null and b/android/Images/UnitActionIcons/Explore.png differ diff --git a/android/Images/UnitActionIcons/Fortify.png b/android/Images/UnitActionIcons/Fortify.png new file mode 100644 index 0000000000..552c1df903 Binary files /dev/null and b/android/Images/UnitActionIcons/Fortify.png differ diff --git a/android/Images/UnitActionIcons/FortifyUntilHealed.png b/android/Images/UnitActionIcons/FortifyUntilHealed.png new file mode 100644 index 0000000000..d6240e8adb Binary files /dev/null and b/android/Images/UnitActionIcons/FortifyUntilHealed.png differ diff --git a/android/Images/UnitActionIcons/FoundCity.png b/android/Images/UnitActionIcons/FoundCity.png new file mode 100644 index 0000000000..dd3931f838 Binary files /dev/null and b/android/Images/UnitActionIcons/FoundCity.png differ diff --git a/android/Images/UnitActionIcons/FoundReligion.png b/android/Images/UnitActionIcons/FoundReligion.png new file mode 100644 index 0000000000..88eccd4792 Binary files /dev/null and b/android/Images/UnitActionIcons/FoundReligion.png differ diff --git a/android/Images/UnitActionIcons/HideMore.png b/android/Images/UnitActionIcons/HideMore.png new file mode 100644 index 0000000000..05045379e8 Binary files /dev/null and b/android/Images/UnitActionIcons/HideMore.png differ diff --git a/android/Images/UnitActionIcons/HurryConstruction.png b/android/Images/UnitActionIcons/HurryConstruction.png new file mode 100644 index 0000000000..a5bbb5a555 Binary files /dev/null and b/android/Images/UnitActionIcons/HurryConstruction.png differ diff --git a/android/Images/UnitActionIcons/HurryResearch.png b/android/Images/UnitActionIcons/HurryResearch.png new file mode 100644 index 0000000000..9beef264d4 Binary files /dev/null and b/android/Images/UnitActionIcons/HurryResearch.png differ diff --git a/android/Images/UnitActionIcons/Paradrop.png b/android/Images/UnitActionIcons/Paradrop.png new file mode 100644 index 0000000000..8b04e3f303 Binary files /dev/null and b/android/Images/UnitActionIcons/Paradrop.png differ diff --git a/android/Images/UnitActionIcons/Pillage.png b/android/Images/UnitActionIcons/Pillage.png new file mode 100644 index 0000000000..490aaa13a5 Binary files /dev/null and b/android/Images/UnitActionIcons/Pillage.png differ diff --git a/android/Images/UnitActionIcons/Present.png b/android/Images/UnitActionIcons/Present.png new file mode 100644 index 0000000000..2a121d8b13 Binary files /dev/null and b/android/Images/UnitActionIcons/Present.png differ diff --git a/android/Images/UnitActionIcons/Promote.png b/android/Images/UnitActionIcons/Promote.png new file mode 100644 index 0000000000..f480a5652f Binary files /dev/null and b/android/Images/UnitActionIcons/Promote.png differ diff --git a/android/Images/UnitActionIcons/RemoveHeresy.png b/android/Images/UnitActionIcons/RemoveHeresy.png new file mode 100644 index 0000000000..ec78bf5677 Binary files /dev/null and b/android/Images/UnitActionIcons/RemoveHeresy.png differ diff --git a/android/Images/UnitActionIcons/Repair.png b/android/Images/UnitActionIcons/Repair.png new file mode 100644 index 0000000000..501a2ab61d Binary files /dev/null and b/android/Images/UnitActionIcons/Repair.png differ diff --git a/android/Images/UnitActionIcons/SetUp.png b/android/Images/UnitActionIcons/SetUp.png new file mode 100644 index 0000000000..f3621c05d8 Binary files /dev/null and b/android/Images/UnitActionIcons/SetUp.png differ diff --git a/android/Images/UnitActionIcons/ShowMore.png b/android/Images/UnitActionIcons/ShowMore.png new file mode 100644 index 0000000000..631bcdc729 Binary files /dev/null and b/android/Images/UnitActionIcons/ShowMore.png differ diff --git a/android/Images/UnitActionIcons/Sleep.png b/android/Images/UnitActionIcons/Sleep.png new file mode 100644 index 0000000000..d78b7d3ab5 Binary files /dev/null and b/android/Images/UnitActionIcons/Sleep.png differ diff --git a/android/Images/UnitActionIcons/Star.png b/android/Images/UnitActionIcons/Star.png new file mode 100644 index 0000000000..37d96139b2 Binary files /dev/null and b/android/Images/UnitActionIcons/Star.png differ diff --git a/android/Images/UnitActionIcons/StartGoldenAge.png b/android/Images/UnitActionIcons/StartGoldenAge.png new file mode 100644 index 0000000000..1b092787f2 Binary files /dev/null and b/android/Images/UnitActionIcons/StartGoldenAge.png differ diff --git a/android/Images/UnitActionIcons/Stop.png b/android/Images/UnitActionIcons/Stop.png new file mode 100644 index 0000000000..0fe42953fb Binary files /dev/null and b/android/Images/UnitActionIcons/Stop.png differ diff --git a/android/Images/UnitActionIcons/StopMove.png b/android/Images/UnitActionIcons/StopMove.png new file mode 100644 index 0000000000..47804b26a5 Binary files /dev/null and b/android/Images/UnitActionIcons/StopMove.png differ diff --git a/android/Images/UnitActionIcons/Swap.png b/android/Images/UnitActionIcons/Swap.png new file mode 100644 index 0000000000..443719e23f Binary files /dev/null and b/android/Images/UnitActionIcons/Swap.png differ diff --git a/android/Images/UnitActionIcons/Upgrade.png b/android/Images/UnitActionIcons/Upgrade.png new file mode 100644 index 0000000000..824735777f Binary files /dev/null and b/android/Images/UnitActionIcons/Upgrade.png differ diff --git a/android/Images/UnitActionIcons/Wait.png b/android/Images/UnitActionIcons/Wait.png new file mode 100644 index 0000000000..00c6476862 Binary files /dev/null and b/android/Images/UnitActionIcons/Wait.png differ diff --git a/android/assets/Atlases.json b/android/assets/Atlases.json index bb27e1f64d..5cd27e37f5 100644 --- a/android/assets/Atlases.json +++ b/android/assets/Atlases.json @@ -1 +1 @@ -[AbsoluteUnits,Construction,EasterEggs,Flags,NationIcons,PolicyIcons,ReligionIcons,Skin,Tech,Tilesets,UnitPromotionIcons] \ No newline at end of file +[AbsoluteUnits,Construction,EasterEggs,Flags,NationIcons,PolicyIcons,ReligionIcons,Skin,Tech,Tilesets,UnitPromotionIcons,UnitActionIcons] \ No newline at end of file diff --git a/android/assets/UnitActionIcons.atlas b/android/assets/UnitActionIcons.atlas new file mode 100644 index 0000000000..f39ebd4130 --- /dev/null +++ b/android/assets/UnitActionIcons.atlas @@ -0,0 +1,216 @@ + +UnitActionIcons.png +size: 2048, 1024 +format: RGBA8888 +filter: MipMapLinearLinear, MipMapLinearLinear +repeat: none +UnitActionIcons/AirSweep + rotate: false + xy: 0, 0 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/DisbandUnit + rotate: false + xy: 100, 0 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/Fortify + rotate: false + xy: 200, 0 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/Pillage + rotate: false + xy: 300, 0 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/Present + rotate: false + xy: 400, 0 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/RemoveHeresy + rotate: false + xy: 500, 0 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/Sleep + rotate: false + xy: 600, 0 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/Star + rotate: false + xy: 700, 0 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/Stop + rotate: false + xy: 800, 0 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/Swap + rotate: false + xy: 900, 0 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/Wait + rotate: false + xy: 1000, 0 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/Automate + rotate: false + xy: 1100, 0 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/Explore + rotate: false + xy: 1200, 0 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/Promote + rotate: false + xy: 1300, 0 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/Paradrop + rotate: false + xy: 1400, 0 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/SetUp + rotate: false + xy: 1500, 0 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/FoundCity + rotate: false + xy: 1600, 0 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/ConstructImprovement + rotate: false + xy: 1700, 0 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/Repair + rotate: false + xy: 1800, 0 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/HurryResearch + rotate: false + xy: 0, 100 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/StartGoldenAge + rotate: false + xy: 100, 100 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/HurryConstruction + rotate: false + xy: 200, 100 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/FoundReligion + rotate: false + xy: 300, 100 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/EnhanceReligion + rotate: false + xy: 400, 100 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/AddInCapital + rotate: false + xy: 500, 100 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/ShowMore + rotate: false + xy: 725, 125 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitActionIcons/HideMore + rotate: false + xy: 825, 125 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitActionIcons/StopMove + rotate: false + xy: 925, 125 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 +UnitActionIcons/FortifyUntilHealed + rotate: false + xy: 1000, 100 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 +UnitActionIcons/Upgrade + rotate: false + xy: 1100, 100 + size: 100, 100 + orig: 100, 100 + offset: 0, 0 + index: -1 \ No newline at end of file diff --git a/android/assets/UnitActionIcons.png b/android/assets/UnitActionIcons.png new file mode 100644 index 0000000000..eda9ac5f4a Binary files /dev/null and b/android/assets/UnitActionIcons.png differ diff --git a/core/src/com/unciv/models/UnitAction.kt b/core/src/com/unciv/models/UnitAction.kt index 54068491da..4e3da84a9e 100644 --- a/core/src/com/unciv/models/UnitAction.kt +++ b/core/src/com/unciv/models/UnitAction.kt @@ -16,18 +16,15 @@ import com.unciv.ui.utils.extensions.darken * Note this is for the buttons offering actions, not the ongoing action stored with a [MapUnit][com.unciv.logic.map.MapUnit] */ data class UnitAction( - val type: UnitActionType, - val title: String = type.value, - val isCurrentAction: Boolean = false, - val uncivSound: UncivSound = type.uncivSound, - val action: (() -> Unit)? = null + val type: UnitActionType, + val title: String = type.value, + val isCurrentAction: Boolean = false, + val uncivSound: UncivSound = type.uncivSound, + val action: (() -> Unit)? = null ) { fun getIcon(): Actor { if (type.imageGetter != null) return type.imageGetter.invoke() return when (type) { - UnitActionType.Upgrade -> { - ImageGetter.getUnitIcon(title.getPlaceholderParameters()[0]) - } UnitActionType.Create -> { ImageGetter.getImprovementIcon(title.getPlaceholderParameters()[0]) } @@ -38,19 +35,9 @@ data class UnitAction( else "Pantheon" ).apply { color = Color.BLACK } } - UnitActionType.Fortify, UnitActionType.FortifyUntilHealed -> { - val match = fortificationRegex.matchEntire(title) - val percentFortified = match?.groups?.get(1)?.value?.toInt() ?: 0 - ImageGetter.getImage("OtherIcons/Shield").apply { - color = Color.GREEN.darken(1f - percentFortified / 80f) - } - } - else -> ImageGetter.getImage("OtherIcons/Star").apply { color = Color.BLACK } + else -> ImageGetter.getImage("UnitActionIcons/Star").apply { color = Color.BLACK } } } - companion object { - private val fortificationRegex = Regex(""".* (\d+)%""") - } } /** Unit Actions - generic enum with static properties @@ -71,80 +58,77 @@ enum class UnitActionType( val uncivSound: UncivSound = UncivSound.Click ) { SwapUnits("Swap units", - { ImageGetter.getImage("OtherIcons/Swap") }, 'y'), + { ImageGetter.getImage("UnitActionIcons/Swap") }, 'y'), Automate("Automate", - { ImageGetter.getUnitIcon("Great Engineer") }, 'm'), + { ImageGetter.getImage("UnitActionIcons/Automate") }, 'm'), StopAutomation("Stop automation", - { ImageGetter.getImage("OtherIcons/Stop") }, 'm'), + { ImageGetter.getImage("UnitActionIcons/Stop") }, 'm'), StopMovement("Stop movement", - { imageGetStopMove() }, '.'), + { ImageGetter.getImage("UnitActionIcons/StopMove") }, '.'), Sleep("Sleep", - { ImageGetter.getImage("OtherIcons/Sleep") }, 'f'), + { ImageGetter.getImage("UnitActionIcons/Sleep") }, 'f'), SleepUntilHealed("Sleep until healed", - { ImageGetter.getImage("OtherIcons/Sleep") }, 'h'), - // Note: Both Fortify actions are a special case. The button starting fortification uses the `value` here, - // the button label as shown when the unit is already fortifying is "Fortification".tr() + " nn%". - // For now we keep it simple, and the unit test `allUnitActionsHaveTranslation` does not know about the latter. + { ImageGetter.getImage("UnitActionIcons/Sleep") }, 'h'), Fortify("Fortify", - null, 'f', UncivSound.Fortify), + { ImageGetter.getImage("UnitActionIcons/Fortify") }, 'f', UncivSound.Fortify), FortifyUntilHealed("Fortify until healed", - null, 'h', UncivSound.Fortify), + { ImageGetter.getImage("UnitActionIcons/FortifyUntilHealed") }, 'h', UncivSound.Fortify), Explore("Explore", - { ImageGetter.getUnitIcon("Scout") }, 'x'), + { ImageGetter.getImage("UnitActionIcons/Explore") }, 'x'), StopExploration("Stop exploration", - { ImageGetter.getImage("OtherIcons/Stop") }, 'x'), + { ImageGetter.getImage("UnitActionIcons/Stop") }, 'x'), Promote("Promote", - { imageGetPromote() }, 'o', UncivSound.Promote), + { ImageGetter.getImage("UnitActionIcons/Promote") }, 'o', UncivSound.Promote), Upgrade("Upgrade", - null, 'u', UncivSound.Upgrade), + { ImageGetter.getImage("UnitActionIcons/Upgrade") }, 'u', UncivSound.Upgrade), Pillage("Pillage", - { ImageGetter.getImage("OtherIcons/Pillage") }, 'p'), + { ImageGetter.getImage("UnitActionIcons/Pillage") }, 'p'), Paradrop("Paradrop", - { ImageGetter.getUnitIcon("Paratrooper") }, 'p'), + { ImageGetter.getImage("UnitActionIcons/Paradrop") }, 'p'), AirSweep("Air Sweep", - { ImageGetter.getImage("OtherIcons/AirSweep") }, 'a'), + { ImageGetter.getImage("UnitActionIcons/AirSweep") }, 'a'), SetUp("Set up", - { ImageGetter.getUnitIcon("Catapult") }, 't', UncivSound.Setup), + { ImageGetter.getImage("UnitActionIcons/SetUp") }, 't', UncivSound.Setup), FoundCity("Found city", - { ImageGetter.getUnitIcon(Constants.settler) }, 'c', UncivSound.Silent), + { ImageGetter.getImage("UnitActionIcons/FoundCity") }, 'c', UncivSound.Silent), ConstructImprovement("Construct improvement", - { ImageGetter.getUnitIcon(Constants.worker) }, 'i'), + { ImageGetter.getImage("UnitActionIcons/ConstructImprovement") }, 'i'), Repair(Constants.repair, - { ImageGetter.getUnitIcon(Constants.worker) }, 'r', UncivSound.Construction), + { ImageGetter.getImage("UnitActionIcons/Repair") }, 'r', UncivSound.Construction), Create("Create", null, 'i', UncivSound.Chimes), HurryResearch("Hurry Research", - { ImageGetter.getUnitIcon("Great Scientist") }, 'g', UncivSound.Chimes), + { ImageGetter.getImage("UnitActionIcons/HurryResearch") }, 'g', UncivSound.Chimes), StartGoldenAge("Start Golden Age", - { ImageGetter.getUnitIcon("Great Artist") }, 'g', UncivSound.Chimes), + { ImageGetter.getImage("UnitActionIcons/StartGoldenAge") }, 'g', UncivSound.Chimes), HurryWonder("Hurry Wonder", - { ImageGetter.getUnitIcon("Great Engineer") }, 'g', UncivSound.Chimes), + { ImageGetter.getImage("UnitActionIcons/HurryConstruction") }, 'g', UncivSound.Chimes), HurryBuilding("Hurry Construction", - { ImageGetter.getUnitIcon("Great Engineer") }, 'g', UncivSound.Chimes), + { ImageGetter.getImage("UnitActionIcons/HurryConstruction") }, 'g', UncivSound.Chimes), ConductTradeMission("Conduct Trade Mission", - { ImageGetter.getUnitIcon("Great Merchant") }, 'g', UncivSound.Chimes), + { ImageGetter.getImage("UnitActionIcons/ConductTradeMission") }, 'g', UncivSound.Chimes), FoundReligion("Found a Religion", - { ImageGetter.getUnitIcon("Great Prophet") }, 'g', UncivSound.Choir), + { ImageGetter.getImage("UnitActionIcons/FoundReligion") }, 'g', UncivSound.Choir), TriggerUnique("Trigger unique", - { ImageGetter.getImage("OtherIcons/Star") }, 'g', UncivSound.Chimes), + { ImageGetter.getImage("UnitActionIcons/Star") }, 'g', UncivSound.Chimes), SpreadReligion("Spread Religion", null, 'g', UncivSound.Choir), RemoveHeresy("Remove Heresy", - { ImageGetter.getImage("OtherIcons/Remove Heresy") }, 'h', UncivSound.Fire), + { ImageGetter.getImage("UnitActionIcons/RemoveHeresy") }, 'h', UncivSound.Fire), EnhanceReligion("Enhance a Religion", - { ImageGetter.getUnitIcon("Great Prophet") }, 'g', UncivSound.Choir), + { ImageGetter.getImage("UnitActionIcons/EnhanceReligion") }, 'g', UncivSound.Choir), DisbandUnit("Disband unit", - { ImageGetter.getImage("OtherIcons/DisbandUnit") }, KeyCharAndCode.DEL), + { ImageGetter.getImage("UnitActionIcons/DisbandUnit") }, KeyCharAndCode.DEL), GiftUnit("Gift unit", - { ImageGetter.getImage("OtherIcons/Present") }, UncivSound.Silent), + { ImageGetter.getImage("UnitActionIcons/Present") }, UncivSound.Silent), Wait("Wait", - { ImageGetter.getImage("OtherIcons/Wait") }, 'z', UncivSound.Silent), + { ImageGetter.getImage("UnitActionIcons/Wait") }, 'z', UncivSound.Silent), ShowAdditionalActions("Show more", - { imageGetShowMore() }, KeyCharAndCode(Input.Keys.PAGE_DOWN)), + { ImageGetter.getImage("UnitActionIcons/ShowMore") }, KeyCharAndCode(Input.Keys.PAGE_DOWN)), HideAdditionalActions("Back", - { imageGetHideMore() }, KeyCharAndCode(Input.Keys.PAGE_UP)), + { ImageGetter.getImage("UnitActionIcons/HideMore") }, KeyCharAndCode(Input.Keys.PAGE_UP)), AddInCapital( "Add in capital", - { ImageGetter.getUnitIcon("SS Cockpit")}, 'g', UncivSound.Chimes), + { ImageGetter.getImage("UnitActionIcons/AddInCapital")}, 'g', UncivSound.Chimes), ; // Allow shorter initializations @@ -153,11 +137,4 @@ enum class UnitActionType( constructor(value: String, imageGetter: (() -> Actor)?, uncivSound: UncivSound = UncivSound.Click) : this(value, imageGetter, KeyCharAndCode.UNKNOWN, uncivSound) - companion object { - // readability factories - private fun imageGetStopMove() = ImageGetter.getStatIcon("Movement").apply { color = Color.RED } - private fun imageGetPromote() = ImageGetter.getImage("OtherIcons/Star").apply { color = Color.GOLD } - private fun imageGetShowMore() = ImageGetter.getArrowImage(Align.right).apply { color = Color.BLACK } - private fun imageGetHideMore() = ImageGetter.getArrowImage(Align.left).apply { color = Color.BLACK } - } }