HexCasting/Common/src/main/java/at/petrak/hexcasting/common/casting/operators/stack/OpStackSize.kt
2023-04-24 21:45:36 -05:00

19 lines
899 B
Kotlin

package at.petrak.hexcasting.common.casting.operators.stack
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.DoubleIota
import at.petrak.hexcasting.common.lib.hex.HexEvalSounds
object OpStackSize : Action {
override fun operate(env: CastingEnvironment, image: CastingImage, continuation: SpellContinuation): OperationResult {
val stack = image.stack.toMutableList()
stack.add(DoubleIota(stack.size.toDouble()))
val image2 = image.withUsedOp().copy(stack = stack)
return OperationResult(image2, listOf(), continuation, HexEvalSounds.NORMAL_EXECUTE)
}
}