BattleRelayReader.kt
package io.github.lishangbu.avalon.game.battle.engine.core.runtime.support
/**
* battle runtime relay 的轻量 typed reader。
*
* 设计意图:
* - 收口 action executor、flow phase、mutation interceptor 对 relay 的数值读取;
* - 避免 `relay as? Number` 与字符串数值解析在执行链各处重复出现;
* - 让 hook 改写后的 relay 在进入主链时有一致的宽松读取语义。
*/
object BattleRelayReader {
fun readInt(relay: Any?): Int? =
when (relay) {
null -> null
is Int -> relay
is Number -> relay.toInt()
is String -> relay.toIntOrNull()
else -> null
}
fun readDouble(relay: Any?): Double? =
when (relay) {
null -> null
is Double -> relay
is Number -> relay.toDouble()
is String -> relay.toDoubleOrNull()
else -> null
}
}