diff --git a/core/src/com/unciv/ui/screens/devconsole/DevConsoleCommand.kt b/core/src/com/unciv/ui/screens/devconsole/DevConsoleCommand.kt index 3ecd61df45..730af89502 100644 --- a/core/src/com/unciv/ui/screens/devconsole/DevConsoleCommand.kt +++ b/core/src/com/unciv/ui/screens/devconsole/DevConsoleCommand.kt @@ -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( "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( + "setimprovement" to ConsoleAction { console, params -> + if (params.size != 1 && params.size != 2) return@ConsoleAction "Format: tile setimprovement []" + 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 + } + ) +}