mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-26 13:27:22 -04:00
Map editor now works with functions on the selected tiles - much cleaner!
This commit is contained in:
parent
081f8cb4a6
commit
6bfe7ea9c7
@ -117,7 +117,6 @@ class MapEditorScreen(): CameraStageBaseScreen() {
|
|||||||
val distance = tileEditorOptions.brushSize - 1
|
val distance = tileEditorOptions.brushSize - 1
|
||||||
|
|
||||||
for (tileInfo in tileMap.getTilesInDistance(centerTileInfo.position, distance)) {
|
for (tileInfo in tileMap.getTilesInDistance(centerTileInfo.position, distance)) {
|
||||||
|
|
||||||
tileEditorOptions.updateTileWhenClicked(tileInfo)
|
tileEditorOptions.updateTileWhenClicked(tileInfo)
|
||||||
|
|
||||||
tileInfo.setTransients()
|
tileInfo.setTransients()
|
||||||
|
@ -21,18 +21,7 @@ import com.unciv.ui.utils.*
|
|||||||
class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(CameraStageBaseScreen.skin){
|
class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(CameraStageBaseScreen.skin){
|
||||||
private val tileSetLocation = "TileSets/"+ UncivGame.Current.settings.tileSet +"/"
|
private val tileSetLocation = "TileSets/"+ UncivGame.Current.settings.tileSet +"/"
|
||||||
|
|
||||||
var clearTerrainFeature=false
|
var tileAction:(TileInfo)->Unit = {}
|
||||||
var selectedTerrain : Terrain?=null
|
|
||||||
|
|
||||||
var clearResource=false
|
|
||||||
var selectedResource: TileResource?=null
|
|
||||||
|
|
||||||
var clearImprovement=false
|
|
||||||
var selectedImprovement: TileImprovement?=null
|
|
||||||
|
|
||||||
var toggleBottomRightRiver=false
|
|
||||||
var toggleBottomRiver=false
|
|
||||||
var toggleBottomLeftRiver=false
|
|
||||||
|
|
||||||
private val editorPickTable = Table()
|
private val editorPickTable = Table()
|
||||||
|
|
||||||
@ -86,8 +75,7 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
|||||||
val improvementsTable = Table()
|
val improvementsTable = Table()
|
||||||
improvementsTable.add(getHex(Color.WHITE).apply {
|
improvementsTable.add(getHex(Color.WHITE).apply {
|
||||||
onClick {
|
onClick {
|
||||||
clearSelection()
|
tileAction = {it.improvement=null}
|
||||||
clearImprovement = true
|
|
||||||
setCurrentHex(getHex(Color.WHITE), "Clear improvements")
|
setCurrentHex(getHex(Color.WHITE), "Clear improvements")
|
||||||
}
|
}
|
||||||
}).row()
|
}).row()
|
||||||
@ -96,8 +84,14 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
|||||||
if(improvement.name.startsWith("Remove")) continue
|
if(improvement.name.startsWith("Remove")) continue
|
||||||
val improvementImage = getHex(Color.WHITE, ImageGetter.getImprovementIcon(improvement.name, 40f))
|
val improvementImage = getHex(Color.WHITE, ImageGetter.getImprovementIcon(improvement.name, 40f))
|
||||||
improvementImage.onClick {
|
improvementImage.onClick {
|
||||||
clearSelection()
|
tileAction = {
|
||||||
selectedImprovement=improvement
|
when (improvement.name) {
|
||||||
|
"Road" -> it.roadStatus = RoadStatus.Road
|
||||||
|
"Railroad" -> it.roadStatus = RoadStatus.Railroad
|
||||||
|
else -> it.improvement = improvement.name
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
val improvementIcon = getHex(Color.WHITE, ImageGetter.getImprovementIcon(improvement.name, 40f))
|
val improvementIcon = getHex(Color.WHITE, ImageGetter.getImprovementIcon(improvement.name, 40f))
|
||||||
setCurrentHex(improvementIcon, improvement.name.tr()+"\n"+improvement.clone().toString())
|
setCurrentHex(improvementIcon, improvement.name.tr()+"\n"+improvement.clone().toString())
|
||||||
}
|
}
|
||||||
@ -109,8 +103,19 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
|||||||
for(nation in ruleset.nations.values){
|
for(nation in ruleset.nations.values){
|
||||||
val nationImage = getHex(Color.WHITE, ImageGetter.getNationIndicator(nation, 40f))
|
val nationImage = getHex(Color.WHITE, ImageGetter.getNationIndicator(nation, 40f))
|
||||||
nationImage.onClick {
|
nationImage.onClick {
|
||||||
clearSelection()
|
val improvementName = "StartingLocation "+nation.name
|
||||||
selectedImprovement= TileImprovement().apply { name="StartingLocation "+nation.name }
|
|
||||||
|
tileAction = {
|
||||||
|
it.improvement = improvementName
|
||||||
|
for (tileGroup in mapEditorScreen.mapHolder.tileGroups.values) {
|
||||||
|
val tile = tileGroup.tileInfo
|
||||||
|
if (tile.improvement == improvementName && tile != it)
|
||||||
|
tile.improvement = null
|
||||||
|
tile.setTransients()
|
||||||
|
tileGroup.update()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val nationIcon = getHex(Color.WHITE, ImageGetter.getNationIndicator(nation, 40f))
|
val nationIcon = getHex(Color.WHITE, ImageGetter.getNationIndicator(nation, 40f))
|
||||||
setCurrentHex(nationIcon, "[${nation.name}] starting location")
|
setCurrentHex(nationIcon, "[${nation.name}] starting location")
|
||||||
}
|
}
|
||||||
@ -134,8 +139,7 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
|||||||
|
|
||||||
terrainFeaturesTable.add(getHex(Color.WHITE, getRedCross(50f, 0.6f)).apply {
|
terrainFeaturesTable.add(getHex(Color.WHITE, getRedCross(50f, 0.6f)).apply {
|
||||||
onClick {
|
onClick {
|
||||||
clearSelection()
|
tileAction = { it.terrainFeature=null; it.naturalWonder = null }
|
||||||
clearTerrainFeature = true
|
|
||||||
setCurrentHex(getHex(Color.WHITE, getRedCross(40f, 0.6f)), "Clear terrain features")
|
setCurrentHex(getHex(Color.WHITE, getRedCross(40f, 0.6f)), "Clear terrain features")
|
||||||
}
|
}
|
||||||
}).row()
|
}).row()
|
||||||
@ -177,8 +181,7 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
|||||||
val resources = ArrayList<Actor>()
|
val resources = ArrayList<Actor>()
|
||||||
resources.add(getHex(Color.WHITE, getCrossedResource()).apply {
|
resources.add(getHex(Color.WHITE, getCrossedResource()).apply {
|
||||||
onClick {
|
onClick {
|
||||||
clearSelection()
|
tileAction = {it.resource=null}
|
||||||
clearResource = true
|
|
||||||
setCurrentHex(getHex(Color.WHITE, getCrossedResource()), "Clear resource")
|
setCurrentHex(getHex(Color.WHITE, getCrossedResource()), "Clear resource")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -186,11 +189,11 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
|||||||
for (resource in ruleset.tileResources.values) {
|
for (resource in ruleset.tileResources.values) {
|
||||||
val resourceHex = getHex(Color.WHITE, ImageGetter.getResourceImage(resource.name, 40f))
|
val resourceHex = getHex(Color.WHITE, ImageGetter.getResourceImage(resource.name, 40f))
|
||||||
resourceHex.onClick {
|
resourceHex.onClick {
|
||||||
clearSelection()
|
tileAction = {it.resource = resource.name}
|
||||||
selectedResource = resource
|
|
||||||
|
// for the tile image
|
||||||
val tileInfo = TileInfo()
|
val tileInfo = TileInfo()
|
||||||
tileInfo.ruleset = mapEditorScreen.ruleset
|
tileInfo.ruleset = mapEditorScreen.ruleset
|
||||||
|
|
||||||
val terrain = resource.terrainsCanBeFoundOn.first()
|
val terrain = resource.terrainsCanBeFoundOn.first()
|
||||||
val terrainObject = ruleset.terrains[terrain]!!
|
val terrainObject = ruleset.terrains[terrain]!!
|
||||||
if (terrainObject.type == TerrainType.TerrainFeature) {
|
if (terrainObject.type == TerrainType.TerrainFeature) {
|
||||||
@ -202,6 +205,7 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
|||||||
|
|
||||||
tileInfo.resource = resource.name
|
tileInfo.resource = resource.name
|
||||||
tileInfo.setTransients()
|
tileInfo.setTransients()
|
||||||
|
|
||||||
setCurrentHex(tileInfo, resource.name.tr() + "\n" + resource.clone().toString())
|
setCurrentHex(tileInfo, resource.name.tr() + "\n" + resource.clone().toString())
|
||||||
}
|
}
|
||||||
resources.add(resourceHex)
|
resources.add(resourceHex)
|
||||||
@ -220,12 +224,16 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
|||||||
}
|
}
|
||||||
tileInfo.terrainFeature = terrain.name
|
tileInfo.terrainFeature = terrain.name
|
||||||
} else tileInfo.baseTerrain = terrain.name
|
} else tileInfo.baseTerrain = terrain.name
|
||||||
|
|
||||||
val group = makeTileGroup(tileInfo)
|
val group = makeTileGroup(tileInfo)
|
||||||
|
|
||||||
group.onClick {
|
group.onClick {
|
||||||
clearSelection()
|
tileAction = {
|
||||||
selectedTerrain = terrain
|
when (terrain.type) {
|
||||||
|
TerrainType.TerrainFeature -> it.terrainFeature = terrain.name
|
||||||
|
TerrainType.NaturalWonder -> it.naturalWonder = terrain.name
|
||||||
|
else -> it.baseTerrain = terrain.name
|
||||||
|
}
|
||||||
|
}
|
||||||
setCurrentHex(tileInfo, terrain.name.tr() + "\n" + terrain.clone().toString())
|
setCurrentHex(tileInfo, terrain.name.tr() + "\n" + terrain.clone().toString())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -242,14 +250,13 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
|||||||
private fun addRiverToggleOptions(baseTerrainTable: Table) {
|
private fun addRiverToggleOptions(baseTerrainTable: Table) {
|
||||||
baseTerrainTable.addSeparator()
|
baseTerrainTable.addSeparator()
|
||||||
|
|
||||||
|
|
||||||
val tileInfoBottomRightRiver = TileInfo()
|
val tileInfoBottomRightRiver = TileInfo()
|
||||||
tileInfoBottomRightRiver.baseTerrain = Constants.plains
|
tileInfoBottomRightRiver.baseTerrain = Constants.plains
|
||||||
tileInfoBottomRightRiver.hasBottomRightRiver = true
|
tileInfoBottomRightRiver.hasBottomRightRiver = true
|
||||||
val tileGroupBottomRightRiver = makeTileGroup(tileInfoBottomRightRiver)
|
val tileGroupBottomRightRiver = makeTileGroup(tileInfoBottomRightRiver)
|
||||||
tileGroupBottomRightRiver.onClick {
|
tileGroupBottomRightRiver.onClick {
|
||||||
clearSelection()
|
tileAction = {it.hasBottomRightRiver = !it.hasBottomRightRiver}
|
||||||
toggleBottomRightRiver = true
|
|
||||||
setCurrentHex(tileInfoBottomRightRiver, "Bottom right river")
|
setCurrentHex(tileInfoBottomRightRiver, "Bottom right river")
|
||||||
}
|
}
|
||||||
baseTerrainTable.add(tileGroupBottomRightRiver).row()
|
baseTerrainTable.add(tileGroupBottomRightRiver).row()
|
||||||
@ -260,8 +267,7 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
|||||||
tileInfoBottomRiver.hasBottomRiver = true
|
tileInfoBottomRiver.hasBottomRiver = true
|
||||||
val tileGroupBottomRiver = makeTileGroup(tileInfoBottomRiver)
|
val tileGroupBottomRiver = makeTileGroup(tileInfoBottomRiver)
|
||||||
tileGroupBottomRiver.onClick {
|
tileGroupBottomRiver.onClick {
|
||||||
clearSelection()
|
tileAction = {it.hasBottomRiver = !it.hasBottomRiver}
|
||||||
toggleBottomRiver = true
|
|
||||||
setCurrentHex(tileInfoBottomRiver, "Bottom river")
|
setCurrentHex(tileInfoBottomRiver, "Bottom river")
|
||||||
}
|
}
|
||||||
baseTerrainTable.add(tileGroupBottomRiver).row()
|
baseTerrainTable.add(tileGroupBottomRiver).row()
|
||||||
@ -272,8 +278,7 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
|||||||
tileInfoBottomLeftRiver.baseTerrain = Constants.plains
|
tileInfoBottomLeftRiver.baseTerrain = Constants.plains
|
||||||
val tileGroupBottomLeftRiver = makeTileGroup(tileInfoBottomLeftRiver)
|
val tileGroupBottomLeftRiver = makeTileGroup(tileInfoBottomLeftRiver)
|
||||||
tileGroupBottomLeftRiver.onClick {
|
tileGroupBottomLeftRiver.onClick {
|
||||||
clearSelection()
|
tileAction = {it.hasBottomLeftRiver = !it.hasBottomLeftRiver}
|
||||||
toggleBottomLeftRiver = true
|
|
||||||
setCurrentHex(tileInfoBottomLeftRiver, "Bottom left river")
|
setCurrentHex(tileInfoBottomLeftRiver, "Bottom left river")
|
||||||
}
|
}
|
||||||
baseTerrainTable.add(tileGroupBottomLeftRiver).row()
|
baseTerrainTable.add(tileGroupBottomLeftRiver).row()
|
||||||
@ -310,58 +315,8 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun clearSelection(){
|
|
||||||
clearTerrainFeature=false
|
|
||||||
selectedTerrain=null
|
|
||||||
clearResource=false
|
|
||||||
selectedResource=null
|
|
||||||
clearImprovement=false
|
|
||||||
selectedImprovement=null
|
|
||||||
toggleBottomLeftRiver = false
|
|
||||||
toggleBottomRightRiver = false
|
|
||||||
toggleBottomRiver = false
|
|
||||||
}
|
|
||||||
|
|
||||||
fun updateTileWhenClicked(tileInfo: TileInfo) {
|
fun updateTileWhenClicked(tileInfo: TileInfo) {
|
||||||
when {
|
tileAction(tileInfo)
|
||||||
clearTerrainFeature -> {
|
|
||||||
tileInfo.terrainFeature = null
|
|
||||||
tileInfo.naturalWonder = null
|
|
||||||
}
|
|
||||||
clearResource -> tileInfo.resource = null
|
|
||||||
selectedResource != null -> tileInfo.resource = selectedResource!!.name
|
|
||||||
selectedTerrain != null -> {
|
|
||||||
if (selectedTerrain!!.type == TerrainType.TerrainFeature)
|
|
||||||
tileInfo.terrainFeature = selectedTerrain!!.name
|
|
||||||
else if (selectedTerrain!!.type == TerrainType.NaturalWonder)
|
|
||||||
tileInfo.naturalWonder = selectedTerrain!!.name
|
|
||||||
else
|
|
||||||
tileInfo.baseTerrain = selectedTerrain!!.name
|
|
||||||
}
|
|
||||||
clearImprovement -> {
|
|
||||||
tileInfo.improvement = null
|
|
||||||
tileInfo.roadStatus = RoadStatus.None
|
|
||||||
}
|
|
||||||
selectedImprovement != null -> {
|
|
||||||
val improvement = selectedImprovement!!
|
|
||||||
if (improvement.name == "Road") tileInfo.roadStatus = RoadStatus.Road
|
|
||||||
else if (improvement.name == "Railroad") tileInfo.roadStatus = RoadStatus.Railroad
|
|
||||||
else tileInfo.improvement = improvement.name
|
|
||||||
|
|
||||||
if(improvement.name.startsWith("StartingLocation"))
|
|
||||||
for(tileGroup in mapEditorScreen.mapHolder.tileGroups.values){
|
|
||||||
val tile = tileGroup.tileInfo
|
|
||||||
if(tile.improvement==improvement.name && tile!=tileInfo)
|
|
||||||
tile.improvement=null
|
|
||||||
tile.setTransients()
|
|
||||||
tileGroup.update()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
toggleBottomLeftRiver -> tileInfo.hasBottomLeftRiver = !tileInfo.hasBottomLeftRiver
|
|
||||||
toggleBottomRiver -> tileInfo.hasBottomRiver = !tileInfo.hasBottomRiver
|
|
||||||
toggleBottomRightRiver -> tileInfo.hasBottomRightRiver = !tileInfo.hasBottomRightRiver
|
|
||||||
}
|
|
||||||
|
|
||||||
normalizeTile(tileInfo)
|
normalizeTile(tileInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user