Console: Added set/remove tile improvement

This commit is contained in:
Yair Morgenstern
2023-11-24 16:13:38 +02:00
parent df8f7c6bdd
commit e9d3c153dc

View File

@ -1,5 +1,7 @@
package com.unciv.ui.screens.devconsole
import com.unciv.logic.civilization.Civilization
fun String.toCliInput() = this.lowercase().replace(" ","-")
interface ConsoleCommand {
@ -43,7 +45,8 @@ interface ConsoleCommandNode:ConsoleCommand{
class ConsoleCommandRoot:ConsoleCommandNode {
override val subcommands = hashMapOf<String, ConsoleCommand>(
"unit" to ConsoleUnitCommands(),
"city" to ConsoleCityCommands()
"city" to ConsoleCityCommands(),
"tile" to ConsoleTileCommands()
)
}
@ -145,3 +148,28 @@ class ConsoleCityCommands:ConsoleCommandNode {
return@ConsoleAction null
})
}
class ConsoleTileCommands: ConsoleCommandNode {
override val subcommands = hashMapOf<String, ConsoleCommand>(
"setimprovement" to ConsoleAction { console, params ->
if (params.size != 1 && params.size != 2) return@ConsoleAction "Format: tile setimprovement <improvementName> [<civName>]"
val selectedTile = console.screen.mapHolder.selectedTile
?: return@ConsoleAction "No tile selected"
val improvement = console.gameInfo.ruleset.tileImprovements.values.firstOrNull {
it.name.toCliInput() == params[0]
} ?: return@ConsoleAction "Unknown improvement"
var civ:Civilization? = null
if (params.size == 2){
civ = console.getCivByName(params[1]) ?: return@ConsoleAction "Unknown civ"
}
selectedTile.improvementFunctions.changeImprovement(improvement.name, civ)
return@ConsoleAction null
},
"removeimprovement" to ConsoleAction { console, params ->
val selectedTile = console.screen.mapHolder.selectedTile
?: return@ConsoleAction "No tile selected"
selectedTile.improvementFunctions.changeImprovement(null)
return@ConsoleAction null
}
)
}