mirror of
https://github.com/yairm210/Unciv.git
synced 2025-03-11 18:39:43 +07:00
Start preference Avoid shown with red X (#5253)
This commit is contained in:
parent
f02675c5b0
commit
8cff3fda49
@ -230,7 +230,8 @@ class Nation : INamed, ICivilopediaText, IHasUniques {
|
||||
textList += FormattedLine(
|
||||
(if (it.index == 0) "[Start bias:] " else "") + it.value.tr(), // extra tr because tr cannot nest {[]}
|
||||
link = "Terrain/$link",
|
||||
indent = if (it.index == 0) 0 else 1)
|
||||
indent = if (it.index == 0) 0 else 1,
|
||||
iconCrossed = it.value.startsWith("Avoid "))
|
||||
}
|
||||
textList += FormattedLine()
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package com.unciv.ui.civilopedia
|
||||
import com.badlogic.gdx.Gdx
|
||||
import com.badlogic.gdx.graphics.Color
|
||||
import com.badlogic.gdx.scenes.scene2d.Actor
|
||||
import com.badlogic.gdx.scenes.scene2d.Group
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Table
|
||||
import com.badlogic.gdx.utils.Align
|
||||
import com.unciv.UncivGame
|
||||
@ -64,7 +65,9 @@ class FormattedLine (
|
||||
/** Decorates text with a star icon - if set, it receives the [color] instead of the text. */
|
||||
val starred: Boolean = false,
|
||||
/** Centers the line (and turns off wrap) */
|
||||
val centered: Boolean = false
|
||||
val centered: Boolean = false,
|
||||
/** Paint a red X over the [icon] or [link] image */
|
||||
val iconCrossed: Boolean = false
|
||||
) {
|
||||
// Note: This gets directly deserialized by Json - please keep all attributes meant to be read
|
||||
// from json in the primary constructor parameters above. Everything else should be a fun(),
|
||||
@ -305,7 +308,20 @@ class FormattedLine (
|
||||
val category = CivilopediaCategories.fromLink(parts[0]) ?: return 0
|
||||
val image = category.getImage?.invoke(parts[1], iconSize) ?: return 0
|
||||
|
||||
table.add(image).size(iconSize).padRight(iconPad)
|
||||
if (iconCrossed) {
|
||||
val cross = ImageGetter.getRedCross(iconSize * 0.7f, 0.7f)
|
||||
val group = Group().apply {
|
||||
isTransform = false
|
||||
setSize(iconSize, iconSize)
|
||||
image.center(this)
|
||||
addActor(image)
|
||||
cross.center(this)
|
||||
addActor(cross)
|
||||
}
|
||||
table.add(group).size(iconSize).padRight(iconPad)
|
||||
} else {
|
||||
table.add(image).size(iconSize).padRight(iconPad)
|
||||
}
|
||||
return 1
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,6 @@ import com.badlogic.gdx.graphics.Color
|
||||
import com.badlogic.gdx.scenes.scene2d.Actor
|
||||
import com.badlogic.gdx.scenes.scene2d.Group
|
||||
import com.badlogic.gdx.scenes.scene2d.Touchable
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Slider
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Table
|
||||
import com.unciv.Constants
|
||||
import com.unciv.UncivGame
|
||||
@ -12,7 +11,6 @@ import com.unciv.logic.civilization.CivilizationInfo
|
||||
import com.unciv.logic.map.MapUnit
|
||||
import com.unciv.logic.map.RoadStatus
|
||||
import com.unciv.logic.map.TileInfo
|
||||
import com.unciv.logic.map.TileMap
|
||||
import com.unciv.models.metadata.Player
|
||||
import com.unciv.models.ruleset.Nation
|
||||
import com.unciv.models.ruleset.tile.TerrainType
|
||||
@ -82,7 +80,7 @@ class MapEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(CameraS
|
||||
val baseTerrainTable = Table().apply { defaults().pad(20f) }
|
||||
val terrainFeaturesTable = Table().apply { defaults().pad(20f) }
|
||||
|
||||
terrainFeaturesTable.add(getHex(getRedCross(50f, 0.6f)).apply {
|
||||
terrainFeaturesTable.add(getHex(ImageGetter.getRedCross(50f, 0.6f)).apply {
|
||||
onClick {
|
||||
tileAction = {
|
||||
it.terrainFeatures.clear()
|
||||
@ -91,7 +89,7 @@ class MapEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(CameraS
|
||||
it.hasBottomLeftRiver = false
|
||||
it.hasBottomRightRiver = false
|
||||
}
|
||||
setCurrentHex(getHex(getRedCross(40f, 0.6f)), "Clear terrain features")
|
||||
setCurrentHex(getHex(ImageGetter.getRedCross(40f, 0.6f)), "Clear terrain features")
|
||||
}
|
||||
}).row()
|
||||
|
||||
@ -125,10 +123,10 @@ class MapEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(CameraS
|
||||
editorPickTable.clear()
|
||||
|
||||
val improvementsTable = Table()
|
||||
improvementsTable.add(getHex(getRedCross(40f, 0.6f)).apply {
|
||||
improvementsTable.add(getHex(ImageGetter.getRedCross(40f, 0.6f)).apply {
|
||||
onClick {
|
||||
tileAction = { it.improvement = null; it.roadStatus = RoadStatus.None }
|
||||
setCurrentHex(getHex(getRedCross(40f, 0.6f)), "Clear improvements")
|
||||
setCurrentHex(getHex(ImageGetter.getRedCross(40f, 0.6f)), "Clear improvements")
|
||||
}
|
||||
}).row()
|
||||
|
||||
@ -269,20 +267,13 @@ class MapEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(CameraS
|
||||
}
|
||||
|
||||
private fun getCrossedIcon(): Actor {
|
||||
return getRedCross(20f, 0.6f)
|
||||
return ImageGetter.getRedCross(20f, 0.6f)
|
||||
.surroundWithCircle(40f, false)
|
||||
.apply { circle.color = Color.WHITE }
|
||||
}
|
||||
|
||||
private fun getRedCross(size: Float, alpha: Float): Actor {
|
||||
val redCross = ImageGetter.getImage("OtherIcons/Close")
|
||||
redCross.setSize(size, size)
|
||||
redCross.color = Color.RED.cpy().apply { a = alpha }
|
||||
return redCross
|
||||
}
|
||||
|
||||
private fun getCrossedResource(): Actor {
|
||||
val redCross = getRedCross(45f, 0.5f)
|
||||
val redCross = ImageGetter.getRedCross(45f, 0.5f)
|
||||
val group = IconCircleGroup(40f, redCross, false)
|
||||
group.circle.color = ImageGetter.foodCircleColor
|
||||
return group
|
||||
|
@ -151,9 +151,7 @@ class ImprovementPickerScreen(val tileInfo: TileInfo, unit: MapUnit, val onAccep
|
||||
// icon for removing the resource by replacing improvement
|
||||
if (removeImprovement && tileInfo.hasViewableResource(currentPlayerCiv) && tileInfo.getTileResource().improvement == tileInfo.improvement) {
|
||||
val crossedResource = Group()
|
||||
val cross = ImageGetter.getImage("OtherIcons/Close")
|
||||
cross.setSize(30f, 30f)
|
||||
cross.color = Color.RED
|
||||
val cross = ImageGetter.getRedCross(30f, 0.8f)
|
||||
val resourceIcon = ImageGetter.getResourceImage(tileInfo.resource.toString(), 30f)
|
||||
crossedResource.addActor(resourceIcon)
|
||||
crossedResource.addActor(cross)
|
||||
|
@ -59,9 +59,7 @@ class TechButton(techName:String, private val techManager: TechManager, isWorldS
|
||||
|
||||
for (building in tech.getObsoletedBuildings(techManager.civInfo))
|
||||
techEnabledIcons.add(ImageGetter.getConstructionImage(building.name).surroundWithCircle(techIconSize).apply {
|
||||
val closeImage = ImageGetter.getImage("OtherIcons/Close")
|
||||
closeImage.setSize(techIconSize / 2, techIconSize / 2)
|
||||
closeImage.color = Color.RED
|
||||
val closeImage = ImageGetter.getRedCross(techIconSize / 2, 1f)
|
||||
closeImage.center(this)
|
||||
addActor(closeImage)
|
||||
})
|
||||
|
@ -5,13 +5,17 @@ import com.badlogic.gdx.scenes.scene2d.Actor
|
||||
import com.badlogic.gdx.scenes.scene2d.Group
|
||||
|
||||
class IconCircleGroup(size: Float, val actor: Actor, resizeActor: Boolean = true, color: Color = Color.WHITE): Group(){
|
||||
val circle = ImageGetter.getCircle().apply { setSize(size, size); setColor(color) }
|
||||
val circle = ImageGetter.getCircle().apply {
|
||||
setSize(size, size)
|
||||
setColor(color)
|
||||
}
|
||||
|
||||
init {
|
||||
isTransform=false // performance helper - nothing here is rotated or scaled
|
||||
isTransform = false // performance helper - nothing here is rotated or scaled
|
||||
setSize(size, size)
|
||||
addActor(circle)
|
||||
if(resizeActor) actor.setSize(size * 0.75f, size * 0.75f)
|
||||
if (resizeActor) actor.setSize(size * 0.75f, size * 0.75f)
|
||||
actor.center(this)
|
||||
addActor(actor)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -227,7 +227,7 @@ object ImageGetter {
|
||||
} else getCircle().apply { color = nation.getOuterColor() }
|
||||
.surroundWithCircle(size).apply { circle.color = nation.getInnerColor() }
|
||||
}
|
||||
|
||||
|
||||
fun getRandomNationIndicator(size: Float): IconCircleGroup {
|
||||
return "?"
|
||||
.toLabel(Color.WHITE, (size * 5f/8f).toInt())
|
||||
@ -238,7 +238,7 @@ object ImageGetter {
|
||||
|
||||
private fun nationIconExists(nation: String) = imageExists("NationIcons/$nation")
|
||||
fun getNationIcon(nation: String) = getImage("NationIcons/$nation")
|
||||
|
||||
|
||||
fun wonderImageExists(wonderName: String) = imageExists("WonderImages/$wonderName")
|
||||
fun getWonderImage(wonderName: String) = getImage("WonderImages/$wonderName")
|
||||
|
||||
@ -301,7 +301,7 @@ object ImageGetter {
|
||||
}
|
||||
return circle
|
||||
}
|
||||
|
||||
|
||||
fun religionIconExists(iconName: String) = imageExists("ReligionIcons/$iconName")
|
||||
fun getReligionImage(iconName: String): Image {
|
||||
return getImage("ReligionIcons/$iconName")
|
||||
@ -322,6 +322,12 @@ object ImageGetter {
|
||||
return drawable.tint(color)
|
||||
}
|
||||
|
||||
fun getRedCross(size: Float, alpha: Float): Actor {
|
||||
val redCross = getImage("OtherIcons/Close")
|
||||
redCross.setSize(size, size)
|
||||
redCross.color = Color.RED.cpy().apply { a = alpha }
|
||||
return redCross
|
||||
}
|
||||
|
||||
fun getResourceImage(resourceName: String, size: Float): Actor {
|
||||
val iconGroup = getImage("ResourceIcons/$resourceName").surroundWithCircle(size)
|
||||
|
Loading…
Reference in New Issue
Block a user