TurnCompareConditionInterpreter.kt
package io.github.lishangbu.avalon.game.battle.engine.core.runtime.condition
import io.github.lishangbu.avalon.game.battle.engine.core.dsl.ConditionNode
import io.github.lishangbu.avalon.game.battle.engine.core.dsl.condition.TurnCompareConditionNode
import io.github.lishangbu.avalon.game.battle.engine.core.event.EventContext
import io.github.lishangbu.avalon.game.battle.engine.core.runtime.ConditionInterpreter
import io.github.lishangbu.avalon.game.battle.engine.core.runtime.support.ComparisonSupport
import io.github.lishangbu.avalon.game.battle.engine.core.type.ConditionTypeId
import io.github.lishangbu.avalon.game.battle.engine.core.type.StandardConditionTypeIds
/**
* `turn_compare` 条件解释器。
*/
class TurnCompareConditionInterpreter : ConditionInterpreter {
override val type: ConditionTypeId = StandardConditionTypeIds.TURN_COMPARE
override fun evaluate(
condition: ConditionNode,
context: EventContext,
): Boolean {
require(condition is TurnCompareConditionNode) { "Condition must be TurnCompareConditionNode." }
return ComparisonSupport.compare(context.battle.turn.toDouble(), condition.operator, condition.value.toDouble())
}
}