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