package net.ciklum.icfpc11.domain.greenspoon10 import net.ciklum.icfpc11.domain.GameError import net.ciklum.icfpc11.domain.Slot import net.ciklum.icfpc11.domain.Game import net.ciklum.icfpc11.domain.Card /** * blabla * @author vic */ @Typed class Get extends Function { @Override Function apply(Function arg) { super.apply(arg) if (!(arg instanceof ConstantFunction)) { throw new GameError("Can't get() with a non-constant arg: $arg!") } ConstantFunction constArg = arg as ConstantFunction if (!constArg.isValidSlotNumber()) { throw new GameError("Can't get() invalid slot number: $arg!") } Slot slot = Game.instance.currentProponent.slots[constArg.value] if (!slot.alive) { throw new GameError("Cant get() a dead slot ${constArg.value}!") } // TODO: Maybe we need to make a clone??? return slot.value } @Override String toString() { Card.get.name() } }