completed basic test, for #1486

This commit is contained in:
SpaceToad 2014-05-25 12:11:56 +02:00
parent 5a40c529cd
commit ce757bc37f
5 changed files with 37 additions and 8 deletions

View file

@ -39,6 +39,8 @@ import buildcraft.core.Version;
import buildcraft.core.proxy.CoreProxy;
import buildcraft.tests.testcase.BlockTestCase;
import buildcraft.tests.testcase.Sequence;
import buildcraft.tests.testcase.SequenceActionCheckBlockMeta;
import buildcraft.tests.testcase.SequenceActionUseItem;
import buildcraft.tests.testcase.TileTestCase;
@Mod(name = "BuildCraft Tests", version = Version.VERSION, useMetadata = false, modid = "BuildCraft|Tests", dependencies = DefaultProps.DEPENDENCY_CORE)
@ -72,6 +74,9 @@ public class BuildCraftTests extends BuildCraftMod {
tester = new ItemTester();
tester.setUnlocalizedName("tester");
CoreProxy.proxy.registerItem(tester);
Sequence.registerSequenceAction("useItem", SequenceActionUseItem.class);
Sequence.registerSequenceAction("checkBlockMeta", SequenceActionCheckBlockMeta.class);
}
@Mod.EventHandler

View file

@ -35,6 +35,7 @@ public class GuiTestCase extends GuiContainer {
private TileTestCase testCase;
private GuiButton compress;
private GuiButton save;
public GuiTestCase(EntityPlayer player, int x, int y, int z) {
super(new ContainerTestCase(player, x, y, z));
@ -61,6 +62,10 @@ public class GuiTestCase extends GuiContainer {
compress = new GuiButton(0, x + 5, y + 50, 120, 20, "");
compress.displayString = "Compress";
buttonList.add(compress);
save = new GuiButton(0, x + 5, y + 75, 120, 20, "");
save.displayString = "Save";
buttonList.add(save);
}
@Override
@ -72,6 +77,8 @@ public class GuiTestCase extends GuiContainer {
protected void actionPerformed(GuiButton button) {
if (button == compress) {
RPCHandler.rpcServer(testCase, "compress");
} else if (button == save) {
RPCHandler.rpcServer(testCase, "save");
}
}

View file

@ -8,6 +8,7 @@
*/
package buildcraft.tests.testcase;
import java.util.HashMap;
import java.util.LinkedList;
import net.minecraft.nbt.NBTTagCompound;
@ -21,6 +22,9 @@ import buildcraft.api.blueprints.MappingRegistry;
public class Sequence {
private static HashMap<String, Class> strToClass = new HashMap<String, Class>();
private static HashMap<Class, String> classToStr = new HashMap<Class, String>();
public LinkedList<SequenceAction> actions = new LinkedList<SequenceAction>();
public World world;
@ -31,6 +35,11 @@ public class Sequence {
initialDate = iWorld.getTotalWorldTime();
}
public static void registerSequenceAction(String name, Class clas) {
strToClass.put(name, clas);
classToStr.put(clas, name);
}
public void writeToNBT(NBTTagCompound nbt) {
nbt.setLong("initialDate", initialDate);
@ -41,7 +50,7 @@ public class Sequence {
for (SequenceAction action : actions) {
NBTTagCompound cpt = new NBTTagCompound();
action.writeToNBT(cpt);
cpt.setString("class", action.getClass().getCanonicalName());
cpt.setString("class", classToStr.get(action.getClass()));
registry.scanAndTranslateStacksToRegistry(cpt);
list.appendTag(cpt);
}
@ -66,7 +75,7 @@ public class Sequence {
try {
registry.scanAndTranslateStacksToWorld(cpt);
SequenceAction action = (SequenceAction) Class.forName(cpt.getString("class")).newInstance();
SequenceAction action = (SequenceAction) strToClass.get(cpt.getString("class")).newInstance();
action.world = world;
action.readFromNBT(cpt);
@ -79,8 +88,6 @@ public class Sequence {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}

View file

@ -41,7 +41,7 @@ public class TileTestCase extends TileEntity {
Sequence sequence;
String testName = "test";
String information = "";
String information = "test clear";
public TileTestCase() {
MinecraftForge.EVENT_BUS.register(this);
@ -80,8 +80,13 @@ public class TileTestCase extends TileEntity {
}
private void updateInformation() {
long time = sequence.actions.getLast().date - sequence.initialDate;
information = sequence.actions.size() + " actions in " + time + " cycles, starting " + sequence.initialDate;
if (sequence.actions.size() > 0) {
long time = sequence.actions.getLast().date - sequence.initialDate;
information = sequence.actions.size() + " actions in " + time + " cycles, starting " + sequence.initialDate;
} else {
information = "test clear";
}
RPCHandler.rpcBroadcastPlayers(this, "setInformation", information);
}
@ -113,7 +118,11 @@ public class TileTestCase extends TileEntity {
public void invalidate() {
super.invalidate();
MinecraftForge.EVENT_BUS.unregister(this);
currentTestCase = null;
}
@RPC(RPCSide.SERVER)
private void save() {
if (sequence != null) {
File sequenceFile = new File(testName + ".seq");
@ -138,7 +147,8 @@ public class TileTestCase extends TileEntity {
}
}
currentTestCase = null;
sequence.actions.clear();
updateInformation();
}
@RPC(RPCSide.SERVER)

Binary file not shown.