invokeUnitAction will take the first *actionable* action, instead of the first one that exists, which may not be actionable

This commit is contained in:
Yair Morgenstern 2023-12-08 12:16:49 +02:00
parent 40283078d4
commit 2ffec93ae8
2 changed files with 7 additions and 6 deletions

View File

@ -23,9 +23,10 @@ object UnitActions {
/** Returns whether the action was invoked */
fun invokeUnitAction(unit: MapUnit, unitActionType: UnitActionType): Boolean {
val unitAction = actionTypeToFunctions[unitActionType]?.invoke(unit, unit.getTile())?.firstOrNull()
?: getNormalActions(unit).firstOrNull { it.type == unitActionType }
?: getAdditionalActions(unit).firstOrNull { it.type == unitActionType }
val unitAction = if (unitActionType in actionTypeToFunctions) actionTypeToFunctions[unitActionType]!!.invoke(unit, unit.getTile())
.firstOrNull{ it.action != null }
else getNormalActions(unit).firstOrNull { it.type == unitActionType && it.action != null }
?: getAdditionalActions(unit).firstOrNull { it.type == unitActionType && it.action != null }
val internalAction = unitAction?.action ?: return false
internalAction.invoke()
return true

View File

@ -1158,14 +1158,14 @@ Simple unique parameters are explained by mouseover. Complex parameters are expl
Uniques that can be added to units, unit types, or promotions
??? example "May create improvements on water resources"
Applicable to: Unit
??? example "Can build [improvementFilter/terrainFilter] improvements on tiles"
Example: "Can build [All Road] improvements on tiles"
Applicable to: Unit
??? example "May create improvements on water resources"
Applicable to: Unit
??? example "Can be added to [comment] in the Capital"
Example: "Can be added to [comment] in the Capital"