Resolved #12521 - Added 'tile setpillaged' to dev console commands

This commit is contained in:
yairm210 2025-02-24 09:58:55 +02:00
parent a14c78f28d
commit 86b6fbf7bc
3 changed files with 16 additions and 3 deletions

View File

@ -137,6 +137,10 @@ internal class CliInput(
/** Parses `this` parameter as a Float number.
* @throws ConsoleErrorException if the string is not a valid representation of a number. */
fun toFloat(): Float = content.toFloatOrNull() ?: throw ConsoleErrorException("'$this' is not a valid number.")
/** Parses `this` parameter as a Boolean.
* @throws ConsoleErrorException if the string is not 'true' or 'false'. */
fun toBoolean(): Boolean = content.toBooleanStrictOrNull() ?: throw ConsoleErrorException("'$this' is not a valid boolean value.")
/** Parses `this` parameter as the name of a [Stat].
* @throws ConsoleErrorException if the string is not a Stat name. */

View File

@ -34,14 +34,15 @@ internal enum class ConsoleParameterType(
policyName( { ruleset.policyBranches.keys + ruleset.policies.keys } ),
techName( { ruleset.technologies.keys } ),
cityName( { civilizations.flatMap { civ -> civ.cities.map { it.name } } } ),
triggeredUniqueTemplate( { UniqueType.values().filter { it.canAcceptUniqueTarget(UniqueTarget.Triggerable) }.map { it.text } }, preferquoted = true ),
difficulty( { ruleset.difficulties.keys } )
triggeredUniqueTemplate( { UniqueType.entries.filter { it.canAcceptUniqueTarget(UniqueTarget.Triggerable) }.map { it.text } }, preferquoted = true ),
difficulty( { ruleset.difficulties.keys } ),
boolean( { listOf("true", "false") }),
;
private fun getOptions(console: DevConsolePopup) = console.gameInfo.getOptions()
companion object {
fun safeValueOf(name: String): ConsoleParameterType = values().firstOrNull { it.name == name } ?: none
fun safeValueOf(name: String): ConsoleParameterType = entries.firstOrNull { it.name == name } ?: none
fun getOptions(name: String, console: DevConsolePopup) = safeValueOf(name).let { type ->
if (type.preferquoted) type.getOptions(console).map { CliInput(it, CliInput.Method.Quoted) }
else type.getOptions(console).map { CliInput(it) }

View File

@ -38,6 +38,14 @@ internal class ConsoleTileCommands: ConsoleCommandNode {
selectedTile.getCity()?.reassignPopulation()
DevConsoleResponse.OK
},
"setpillaged" to ConsoleAction("tile setpillaged <boolean>"){ console, params ->
val selectedTile = console.getSelectedTile()
val setPillaged = params[0].toBoolean()
if (setPillaged) selectedTile.setPillaged()
else selectedTile.setRepaired()
DevConsoleResponse.OK
},
"removeroad" to ConsoleAction("tile removeroad") { console, _ ->
val selectedTile = console.getSelectedTile()