Show death symbol next to actions that expend the unit

This commit is contained in:
Yair Morgenstern
2023-03-01 20:55:02 +02:00
parent 5e85c3ca72
commit e1c5953389
5 changed files with 67 additions and 42 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 509 KiB

After

Width:  |  Height:  |  Size: 509 KiB

View File

@ -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'
}

View File

@ -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<UnitAction>){
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<String>()
if (actionUnique.conditionals.any { it.type == UniqueType.UnitActionConsumeUnit }) effects += Fonts.death.toString()
return if (effects.isEmpty()) ""
else "(${effects.joinToString { it.tr() }})"
}
}