From eec36e94ecaa19098aa9ad907430d10d7ce9f0b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Mon, 9 Feb 2015 16:19:46 +0100 Subject: [PATCH] Testing method for value conversion and userdata. --- .../cil/oc/server/component/DebugCard.scala | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/main/scala/li/cil/oc/server/component/DebugCard.scala b/src/main/scala/li/cil/oc/server/component/DebugCard.scala index d40158dd8..b5191017e 100644 --- a/src/main/scala/li/cil/oc/server/component/DebugCard.scala +++ b/src/main/scala/li/cil/oc/server/component/DebugCard.scala @@ -1,6 +1,7 @@ package li.cil.oc.server.component import com.google.common.base.Strings +import li.cil.oc.OpenComputers import li.cil.oc.Settings import li.cil.oc.api.Network import li.cil.oc.api.driver.EnvironmentHost @@ -12,6 +13,7 @@ import li.cil.oc.api.network.Node import li.cil.oc.api.network.SidedEnvironment import li.cil.oc.api.network.Visibility import li.cil.oc.api.prefab +import li.cil.oc.api.prefab.AbstractValue import li.cil.oc.server.component.DebugCard.CommandSender import li.cil.oc.util.BlockPosition import li.cil.oc.util.ExtendedArguments._ @@ -37,6 +39,8 @@ import net.minecraftforge.fluids.FluidRegistry import net.minecraftforge.fluids.FluidStack import net.minecraftforge.fluids.IFluidHandler +import scala.collection.mutable + class DebugCard(host: EnvironmentHost) extends prefab.ManagedEnvironment { override val node = Network.newNode(this, Visibility.Neighbors). withComponent("debug"). @@ -129,6 +133,17 @@ class DebugCard(host: EnvironmentHost) extends prefab.ManagedEnvironment { } else None + @Callback(doc = """function():userdata -- Test method for user-data and general value conversion.""") + def test(context: Context, args: Arguments): Array[AnyRef] = { + checkEnabled() + + val v1 = mutable.Map("a" -> true, "b" -> "test") + val v2 = Map(10 -> "zxc", false -> v1) + v1 += "c" -> v2 + + result(v2, new DebugCard.TestValue()) + } + // ----------------------------------------------------------------------- // override def onConnect(node: Node): Unit = { @@ -518,4 +533,37 @@ object DebugCard { override def func_145748_c_() = fakePlayer.func_145748_c_() } + class TestValue extends AbstractValue { + var value = "hello" + + override def apply(context: Context, arguments: Arguments): AnyRef = { + OpenComputers.log.info("TestValue.apply(" + arguments.toArray.mkString(", ") + ")") + value + } + + override def unapply(context: Context, arguments: Arguments): Unit = { + OpenComputers.log.info("TestValue.unapply(" + arguments.toArray.mkString(", ") + ")") + value = arguments.checkString(1) + } + + override def call(context: Context, arguments: Arguments): Array[AnyRef] = { + OpenComputers.log.info("TestValue.call(" + arguments.toArray.mkString(", ") + ")") + result(arguments.toArray: _*) + } + + override def dispose(context: Context): Unit = { + super.dispose(context) + OpenComputers.log.info("TestValue.dispose()") + } + + override def load(nbt: NBTTagCompound): Unit = { + super.load(nbt) + value = nbt.getString("value") + } + + override def save(nbt: NBTTagCompound): Unit = { + super.save(nbt) + nbt.setString("value", value) + } + } }