diff --git a/android/Images/EmojiIcons/Death.png b/android/Images/EmojiIcons/Death.png new file mode 100644 index 0000000000..a17212db6c Binary files /dev/null and b/android/Images/EmojiIcons/Death.png differ diff --git a/android/assets/game.atlas b/android/assets/game.atlas index 3003763050..6fe69b066e 100644 --- a/android/assets/game.atlas +++ b/android/assets/game.atlas @@ -46,86 +46,93 @@ EmojiIcons/Culture orig: 50, 50 offset: 0, 0 index: -1 -EmojiIcons/Faith +EmojiIcons/Death rotate: false xy: 436, 468 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -EmojiIcons/Food +EmojiIcons/Faith rotate: false xy: 436, 410 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -EmojiIcons/Gold +EmojiIcons/Food rotate: false xy: 436, 352 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -EmojiIcons/Great Artist +EmojiIcons/Gold rotate: false xy: 436, 294 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -EmojiIcons/Great Engineer +EmojiIcons/Great Artist rotate: false xy: 436, 236 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -EmojiIcons/Great General +EmojiIcons/Great Engineer rotate: false xy: 436, 178 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -EmojiIcons/Great Merchant +EmojiIcons/Great General rotate: false xy: 436, 120 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -EmojiIcons/Great Scientist +EmojiIcons/Great Merchant rotate: false xy: 436, 62 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 -EmojiIcons/Happiness +EmojiIcons/Great Scientist rotate: false xy: 436, 4 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 +EmojiIcons/Happiness + rotate: false + xy: 494, 642 + size: 50, 50 + orig: 50, 50 + offset: 0, 0 + index: -1 EmojiIcons/Production rotate: false - xy: 494, 352 + xy: 494, 294 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 EmojiIcons/Science rotate: false - xy: 494, 178 + xy: 494, 120 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 EmojiIcons/Turn rotate: false - xy: 494, 62 + xy: 494, 4 size: 50, 50 orig: 50, 50 offset: 0, 0 @@ -636,14 +643,14 @@ OtherIcons/HexagonOutline index: -1 OtherIcons/Improvements rotate: false - xy: 494, 642 + xy: 494, 584 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 OtherIcons/Link rotate: false - xy: 494, 526 + xy: 494, 468 size: 50, 50 orig: 50, 50 offset: 0, 0 @@ -678,7 +685,7 @@ NotificationIcons/Working index: -1 OtherIcons/LockSmall rotate: false - xy: 494, 468 + xy: 494, 410 size: 50, 50 orig: 50, 50 offset: 0, 0 @@ -720,7 +727,7 @@ OtherIcons/NationSwap index: -1 OtherIcons/Nations rotate: false - xy: 494, 410 + xy: 494, 352 size: 50, 50 orig: 50, 50 offset: 0, 0 @@ -1252,7 +1259,7 @@ StatIcons/Happiness index: -1 StatIcons/InterceptRange rotate: false - xy: 494, 584 + xy: 494, 526 size: 50, 50 orig: 50, 50 offset: 0, 0 @@ -1280,14 +1287,14 @@ TileIcons/Worked index: -1 StatIcons/Range rotate: false - xy: 494, 294 + xy: 494, 236 size: 50, 50 orig: 50, 50 offset: 0, 0 index: -1 StatIcons/RangedStrength rotate: false - xy: 494, 236 + xy: 494, 178 size: 50, 50 orig: 50, 50 offset: 0, 0 @@ -1315,7 +1322,7 @@ StatIcons/Specialist index: -1 StatIcons/Strength rotate: false - xy: 494, 120 + xy: 494, 62 size: 50, 50 orig: 50, 50 offset: 0, 0 diff --git a/android/assets/game.png b/android/assets/game.png index 7fd8314973..47021a877a 100644 Binary files a/android/assets/game.png and b/android/assets/game.png differ diff --git a/core/src/com/unciv/ui/components/Fonts.kt b/core/src/com/unciv/ui/components/Fonts.kt index 2090ce6b04..f5ee5a8812 100644 --- a/core/src/com/unciv/ui/components/Fonts.kt +++ b/core/src/com/unciv/ui/components/Fonts.kt @@ -126,30 +126,34 @@ class NativeBitmapFontData( return glyph } + private fun getPixmap(fileName:String) = Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable(fileName).region) + private fun getPixmapFromChar(ch: Char): Pixmap { // Images must be 50*50px so they're rendered at the same height as the text - see Fonts.ORIGINAL_FONT_SIZE return when (ch) { - Fonts.strength -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable("StatIcons/Strength").region) - Fonts.rangedStrength -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable("StatIcons/RangedStrength").region) - Fonts.range -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable("StatIcons/Range").region) - Fonts.movement -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable("StatIcons/Movement").region) - Fonts.turn -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable("EmojiIcons/Turn").region) - Fonts.production -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable("EmojiIcons/Production").region) - Fonts.gold -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable("EmojiIcons/Gold").region) - Fonts.food -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable("EmojiIcons/Food").region) - Fonts.science -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable("EmojiIcons/Science").region) - Fonts.culture -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable("EmojiIcons/Culture").region) - Fonts.faith -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable("EmojiIcons/Faith").region) - Fonts.happiness -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable("EmojiIcons/Happiness").region) - Fonts.greatArtist -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable("EmojiIcons/Great Artist").region) - Fonts.greatEngineer -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable("EmojiIcons/Great Engineer").region) - Fonts.greatGeneral -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable("EmojiIcons/Great General").region) - Fonts.greatMerchant -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable("EmojiIcons/Great Merchant").region) - Fonts.greatScientist -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable("EmojiIcons/Great Scientist").region) - MayaCalendar.tun -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable(MayaCalendar.tunIcon).region) - MayaCalendar.katun -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable(MayaCalendar.katunIcon).region) - MayaCalendar.baktun -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable(MayaCalendar.baktunIcon).region) - in MayaCalendar.digits -> Fonts.extractPixmapFromTextureRegion(ImageGetter.getDrawable(MayaCalendar.digitIcon(ch)).region) + Fonts.strength -> getPixmap("StatIcons/Strength") + Fonts.rangedStrength -> getPixmap("StatIcons/RangedStrength") + Fonts.range -> getPixmap("StatIcons/Range") + Fonts.movement -> getPixmap("StatIcons/Movement") + Fonts.turn -> getPixmap("EmojiIcons/Turn") + Fonts.production -> getPixmap("EmojiIcons/Production") + Fonts.gold -> getPixmap("EmojiIcons/Gold") + Fonts.food -> getPixmap("EmojiIcons/Food") + Fonts.science -> getPixmap("EmojiIcons/Science") + Fonts.culture -> getPixmap("EmojiIcons/Culture") + Fonts.faith -> getPixmap("EmojiIcons/Faith") + Fonts.happiness -> getPixmap("EmojiIcons/Happiness") + Fonts.greatArtist -> getPixmap("EmojiIcons/Great Artist") + Fonts.greatEngineer -> getPixmap("EmojiIcons/Great Engineer") + Fonts.greatGeneral -> getPixmap("EmojiIcons/Great General") + Fonts.greatMerchant -> getPixmap("EmojiIcons/Great Merchant") + Fonts.greatScientist -> getPixmap("EmojiIcons/Great Scientist") + Fonts.death -> getPixmap("EmojiIcons/Death") + + MayaCalendar.tun -> getPixmap(MayaCalendar.tunIcon) + MayaCalendar.katun -> getPixmap(MayaCalendar.katunIcon) + MayaCalendar.baktun -> getPixmap(MayaCalendar.baktunIcon) + in MayaCalendar.digits -> getPixmap(MayaCalendar.digitIcon(ch)) else -> fontImplementation.getCharPixmap(ch) } } @@ -244,4 +248,5 @@ object Fonts { const val greatGeneral = '⛤' // U+26E4 'pentagram' const val greatMerchant = '⚖' // U+2696 'scale' const val greatScientist = '⚛' // U+269B 'atom' + const val death = '☠' // U+2620 'skull and crossbones' } diff --git a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt index 3209e4e587..6db6651c58 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt @@ -470,8 +470,12 @@ object UnitActions { (civResources[unique.params[1]] ?: 0) < unique.params[0].toInt() } + val sideEffectsString = getSideEffectString(unique) + val title = if (sideEffectsString.isEmpty()) "Create [$improvementName]" + else "{Create [$improvementName]} {$sideEffectsString}" + finalActions += UnitAction(UnitActionType.Create, - title = "Create [$improvementName]", + title = title, action = { val unitTile = unit.getTile() unitTile.improvementFunctions.removeCreatesOneImprovementMarker() @@ -642,8 +646,10 @@ object UnitActions { } private fun addTriggerUniqueActions(unit: MapUnit, actionList: ArrayList){ + val triggerableTypes = setOf(UniqueTarget.Triggerable, UniqueTarget.UnitTriggerable) for (unique in unit.getUniques()) { if (unique.conditionals.none { it.type?.targetTypes?.contains(UniqueTarget.UnitActionModifier) == true }) continue + if (unique.type?.targetTypes?.any { it in triggerableTypes }!=true) continue val unitAction = UnitAction(type = UnitActionType.TriggerUnique, unique.text.removeConditionals()){ UniqueTriggerActivation.triggerUnitwideUnique(unique, unit) @@ -685,4 +691,11 @@ object UnitActions { if (conditionalsWithNoSideEffect == actionUnique.conditionals.size) unit.useMovementPoints(1f) } + + fun getSideEffectString(actionUnique: Unique): String { + val effects = ArrayList() + if (actionUnique.conditionals.any { it.type == UniqueType.UnitActionConsumeUnit }) effects += Fonts.death.toString() + return if (effects.isEmpty()) "" + else "(${effects.joinToString { it.tr() }})" + } }