HexCasting/Common/src/main/java/at/petrak/hexcasting/common/casting/actions/eval/OpEvalBreakable.kt
2023-06-02 22:35:30 +10:00

21 lines
956 B
Kotlin

package at.petrak.hexcasting.common.casting.actions.eval
import at.petrak.hexcasting.api.casting.castables.Action
import at.petrak.hexcasting.api.casting.eval.CastingEnvironment
import at.petrak.hexcasting.api.casting.eval.OperationResult
import at.petrak.hexcasting.api.casting.eval.vm.CastingImage
import at.petrak.hexcasting.api.casting.eval.vm.SpellContinuation
import at.petrak.hexcasting.api.casting.iota.ContinuationIota
import at.petrak.hexcasting.api.casting.mishaps.MishapNotEnoughArgs
object OpEvalBreakable : Action {
override fun operate(env: CastingEnvironment,
image: CastingImage,
continuation: SpellContinuation): OperationResult {
val stack = image.stack.toMutableList()
val iota = stack.removeLastOrNull() ?: throw MishapNotEnoughArgs(1, 0)
stack.add(ContinuationIota(continuation))
return OpEval.exec(env, image, continuation, stack, iota)
}
}