BattleFieldConditionSupport.kt
package io.github.lishangbu.avalon.game.battle.engine.core.runtime.support
import io.github.lishangbu.avalon.game.battle.engine.core.constant.BattleFieldConditionIds
import io.github.lishangbu.avalon.game.battle.engine.core.model.FieldState
import io.github.lishangbu.avalon.game.battle.engine.core.runtime.flow.BattleRuntimeSnapshot
/**
* field condition 读取辅助。
*
* 设计意图:
* - 把 room / gravity 这类场地条件的存在判定从各个 phase step 中抽出来;
* - 让 session、flow、condition interpreter 都能共用同一套 field 真值读取逻辑;
* - 为后续继续扩展更多 field condition 行为保留统一入口。
*/
object BattleFieldConditionSupport {
fun hasCondition(
snapshot: BattleRuntimeSnapshot,
effectId: String,
): Boolean = hasCondition(snapshot.field, effectId)
fun hasCondition(
field: FieldState,
effectId: String,
): Boolean = effectId in field.conditionStates
fun hasTrickRoom(snapshot: BattleRuntimeSnapshot): Boolean = hasCondition(snapshot, BattleFieldConditionIds.TRICK_ROOM)
fun hasGravity(snapshot: BattleRuntimeSnapshot): Boolean = hasCondition(snapshot, BattleFieldConditionIds.GRAVITY)
fun hasMagicRoom(snapshot: BattleRuntimeSnapshot): Boolean = hasCondition(snapshot, BattleFieldConditionIds.MAGIC_ROOM)
fun hasMagicRoom(field: FieldState): Boolean = hasCondition(field, BattleFieldConditionIds.MAGIC_ROOM)
fun hasWonderRoom(snapshot: BattleRuntimeSnapshot): Boolean = hasCondition(snapshot, BattleFieldConditionIds.WONDER_ROOM)
}