From 9b67a2d66d6525c3340196e50b57f145fbd4f585 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 24 May 2014 14:28:03 -0400 Subject: [PATCH] Moved some stuff around, and started on new gear network code --- .../gearshaft/GearShaftNode.java | 6 +- .../gearshaft/ItemGearShaft.java | 4 +- .../gearshaft/RenderGearShaft.java | 4 +- .../gearshaft/ShaftGrid.java | 2 +- .../gearshaft/ShaftSubNode.java | 4 +- .../mechanical/ClientProxy.java | 4 +- .../mechanical/Mechanical.java | 4 +- .../mechanical/MultipartMechanical.java | 4 +- .../energy/grid/MechanicalNode.java | 1 + .../{energy => }/gear/ConnectionLogic.java | 2 +- .../gear/GearMultiBlockHandler.java | 2 +- .../{energy => }/gear/ItemGear.java | 2 +- .../{energy => }/gear/PartGear.java | 2 +- .../{energy => }/gear/PartGearShaft.java | 6 +- .../{energy => }/gear/RenderGear.java | 2 +- .../mechanical/gear/dev/GearNetwork.java | 72 +++++++++++++++++++ .../mechanical/gear/dev/NodeGear.java | 51 +++++++++++++ .../mechanical/gear/dev/NodeGenerator.java | 19 +++++ 18 files changed, 167 insertions(+), 24 deletions(-) rename mechanical/src/main/scala/resonantinduction/{mechanical/energy => mechanica}/gearshaft/GearShaftNode.java (96%) rename mechanical/src/main/scala/resonantinduction/{mechanical/energy => mechanica}/gearshaft/ItemGearShaft.java (91%) rename mechanical/src/main/scala/resonantinduction/{mechanical/energy => mechanica}/gearshaft/RenderGearShaft.java (94%) rename mechanical/src/main/scala/resonantinduction/{mechanical/energy => mechanica}/gearshaft/ShaftGrid.java (78%) rename mechanical/src/main/scala/resonantinduction/{mechanical/energy => mechanica}/gearshaft/ShaftSubNode.java (73%) rename mechanical/src/main/scala/resonantinduction/mechanical/{energy => }/gear/ConnectionLogic.java (97%) rename mechanical/src/main/scala/resonantinduction/mechanical/{energy => }/gear/GearMultiBlockHandler.java (94%) rename mechanical/src/main/scala/resonantinduction/mechanical/{energy => }/gear/ItemGear.java (97%) rename mechanical/src/main/scala/resonantinduction/mechanical/{energy => }/gear/PartGear.java (99%) rename mechanical/src/main/scala/resonantinduction/mechanical/{energy => }/gear/PartGearShaft.java (94%) rename mechanical/src/main/scala/resonantinduction/mechanical/{energy => }/gear/RenderGear.java (97%) create mode 100644 mechanical/src/main/scala/resonantinduction/mechanical/gear/dev/GearNetwork.java create mode 100644 mechanical/src/main/scala/resonantinduction/mechanical/gear/dev/NodeGear.java create mode 100644 mechanical/src/main/scala/resonantinduction/mechanical/gear/dev/NodeGenerator.java diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/GearShaftNode.java b/mechanical/src/main/scala/resonantinduction/mechanica/gearshaft/GearShaftNode.java similarity index 96% rename from mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/GearShaftNode.java rename to mechanical/src/main/scala/resonantinduction/mechanica/gearshaft/GearShaftNode.java index 6f08bd05d..95ca38fc1 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/GearShaftNode.java +++ b/mechanical/src/main/scala/resonantinduction/mechanica/gearshaft/GearShaftNode.java @@ -1,4 +1,4 @@ -package resonantinduction.mechanical.energy.gearshaft; +package resonantinduction.mechanica.gearshaft; import java.util.ArrayList; import java.util.Iterator; @@ -8,9 +8,9 @@ import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import resonant.api.IMechanicalNode; import resonant.api.grid.INodeProvider; -import resonantinduction.mechanical.energy.gear.PartGear; -import resonantinduction.mechanical.energy.gear.PartGearShaft; import resonantinduction.mechanical.energy.grid.MechanicalNode; +import resonantinduction.mechanical.gear.PartGear; +import resonantinduction.mechanical.gear.PartGearShaft; public class GearShaftNode extends MechanicalNode { diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ItemGearShaft.java b/mechanical/src/main/scala/resonantinduction/mechanica/gearshaft/ItemGearShaft.java similarity index 91% rename from mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ItemGearShaft.java rename to mechanical/src/main/scala/resonantinduction/mechanica/gearshaft/ItemGearShaft.java index adb1f4dae..6bff56daf 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ItemGearShaft.java +++ b/mechanical/src/main/scala/resonantinduction/mechanica/gearshaft/ItemGearShaft.java @@ -1,4 +1,4 @@ -package resonantinduction.mechanical.energy.gearshaft; +package resonantinduction.mechanica.gearshaft; import java.util.List; @@ -7,7 +7,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import resonantinduction.core.prefab.part.IHighlight; -import resonantinduction.mechanical.energy.gear.PartGearShaft; +import resonantinduction.mechanical.gear.PartGearShaft; import codechicken.lib.vec.BlockCoord; import codechicken.lib.vec.Vector3; import codechicken.multipart.JItemMultiPart; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/RenderGearShaft.java b/mechanical/src/main/scala/resonantinduction/mechanica/gearshaft/RenderGearShaft.java similarity index 94% rename from mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/RenderGearShaft.java rename to mechanical/src/main/scala/resonantinduction/mechanica/gearshaft/RenderGearShaft.java index 8129720c0..99b43490c 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/RenderGearShaft.java +++ b/mechanical/src/main/scala/resonantinduction/mechanica/gearshaft/RenderGearShaft.java @@ -1,4 +1,4 @@ -package resonantinduction.mechanical.energy.gearshaft; +package resonantinduction.mechanica.gearshaft; import static org.lwjgl.opengl.GL11.glRotatef; import net.minecraft.item.ItemStack; @@ -11,7 +11,7 @@ import org.lwjgl.opengl.GL11; import resonant.api.items.ISimpleItemRenderer; import resonant.lib.render.RenderUtility; import resonantinduction.core.Reference; -import resonantinduction.mechanical.energy.gear.PartGearShaft; +import resonantinduction.mechanical.gear.PartGearShaft; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftGrid.java b/mechanical/src/main/scala/resonantinduction/mechanica/gearshaft/ShaftGrid.java similarity index 78% rename from mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftGrid.java rename to mechanical/src/main/scala/resonantinduction/mechanica/gearshaft/ShaftGrid.java index 048cc5462..6aff0639c 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftGrid.java +++ b/mechanical/src/main/scala/resonantinduction/mechanica/gearshaft/ShaftGrid.java @@ -1,4 +1,4 @@ -package resonantinduction.mechanical.energy.gearshaft; +package resonantinduction.mechanica.gearshaft; import resonant.lib.grid.NodeGrid; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftSubNode.java b/mechanical/src/main/scala/resonantinduction/mechanica/gearshaft/ShaftSubNode.java similarity index 73% rename from mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftSubNode.java rename to mechanical/src/main/scala/resonantinduction/mechanica/gearshaft/ShaftSubNode.java index aa62d4da2..51e3e957b 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftSubNode.java +++ b/mechanical/src/main/scala/resonantinduction/mechanica/gearshaft/ShaftSubNode.java @@ -1,8 +1,8 @@ -package resonantinduction.mechanical.energy.gearshaft; +package resonantinduction.mechanica.gearshaft; import resonant.api.grid.INodeProvider; import resonant.lib.grid.Node; -import resonantinduction.mechanical.energy.gear.PartGearShaft; +import resonantinduction.mechanical.gear.PartGearShaft; public class ShaftSubNode extends Node { diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/ClientProxy.java b/mechanical/src/main/scala/resonantinduction/mechanical/ClientProxy.java index 75d90e2e2..3a33d0856 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/ClientProxy.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/ClientProxy.java @@ -1,9 +1,9 @@ package resonantinduction.mechanical; import resonant.lib.render.item.GlobalItemRenderer; -import resonantinduction.mechanical.energy.gear.RenderGear; -import resonantinduction.mechanical.energy.gearshaft.RenderGearShaft; +import resonantinduction.mechanica.gearshaft.RenderGearShaft; import resonantinduction.mechanical.fluid.pipe.RenderPipe; +import resonantinduction.mechanical.gear.RenderGear; public class ClientProxy extends CommonProxy { diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/Mechanical.java b/mechanical/src/main/scala/resonantinduction/mechanical/Mechanical.java index 71a944bd6..d7abce816 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/Mechanical.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/Mechanical.java @@ -18,10 +18,9 @@ import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; import resonantinduction.core.Settings; import resonantinduction.core.TabRI; +import resonantinduction.mechanica.gearshaft.ItemGearShaft; import resonantinduction.mechanical.belt.BlockConveyorBelt; import resonantinduction.mechanical.belt.TileConveyorBelt; -import resonantinduction.mechanical.energy.gear.ItemGear; -import resonantinduction.mechanical.energy.gearshaft.ItemGearShaft; import resonantinduction.mechanical.energy.grid.MechanicalNode; import resonantinduction.mechanical.energy.turbine.BlockWaterTurbine; import resonantinduction.mechanical.energy.turbine.BlockWindTurbine; @@ -32,6 +31,7 @@ import resonantinduction.mechanical.energy.turbine.TileWindTurbine; import resonantinduction.mechanical.fluid.pipe.EnumPipeMaterial; import resonantinduction.mechanical.fluid.pipe.ItemPipe; import resonantinduction.mechanical.fluid.transport.TilePump; +import resonantinduction.mechanical.gear.ItemGear; import resonantinduction.mechanical.logistic.belt.BlockDetector; import resonantinduction.mechanical.logistic.belt.BlockManipulator; import resonantinduction.mechanical.logistic.belt.TileDetector; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/MultipartMechanical.java b/mechanical/src/main/scala/resonantinduction/mechanical/MultipartMechanical.java index 5045c74f1..c5666a316 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/MultipartMechanical.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/MultipartMechanical.java @@ -1,8 +1,8 @@ package resonantinduction.mechanical; -import resonantinduction.mechanical.energy.gear.PartGear; -import resonantinduction.mechanical.energy.gear.PartGearShaft; import resonantinduction.mechanical.fluid.pipe.PartPipe; +import resonantinduction.mechanical.gear.PartGear; +import resonantinduction.mechanical.gear.PartGearShaft; import codechicken.multipart.MultiPartRegistry; import codechicken.multipart.MultiPartRegistry.IPartFactory; import codechicken.multipart.MultipartGenerator; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java index c6c0c643e..491bf1215 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java @@ -28,6 +28,7 @@ import codechicken.multipart.TMultiPart; * * @author Calclavia */ +@SuppressWarnings("rawtypes") public class MechanicalNode extends Node implements IMechanicalNode { diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/ConnectionLogic.java b/mechanical/src/main/scala/resonantinduction/mechanical/gear/ConnectionLogic.java similarity index 97% rename from mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/ConnectionLogic.java rename to mechanical/src/main/scala/resonantinduction/mechanical/gear/ConnectionLogic.java index bae471ed3..b49d829c9 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/ConnectionLogic.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/gear/ConnectionLogic.java @@ -1,4 +1,4 @@ -package resonantinduction.mechanical.energy.gear; +package resonantinduction.mechanical.gear; import java.util.HashMap; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/GearMultiBlockHandler.java b/mechanical/src/main/scala/resonantinduction/mechanical/gear/GearMultiBlockHandler.java similarity index 94% rename from mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/GearMultiBlockHandler.java rename to mechanical/src/main/scala/resonantinduction/mechanical/gear/GearMultiBlockHandler.java index 1ec1db368..5730b859a 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/GearMultiBlockHandler.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/gear/GearMultiBlockHandler.java @@ -1,4 +1,4 @@ -package resonantinduction.mechanical.energy.gear; +package resonantinduction.mechanical.gear; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/ItemGear.java b/mechanical/src/main/scala/resonantinduction/mechanical/gear/ItemGear.java similarity index 97% rename from mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/ItemGear.java rename to mechanical/src/main/scala/resonantinduction/mechanical/gear/ItemGear.java index 1f38e96eb..ad4dcade0 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/ItemGear.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/gear/ItemGear.java @@ -1,4 +1,4 @@ -package resonantinduction.mechanical.energy.gear; +package resonantinduction.mechanical.gear; import java.util.List; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java b/mechanical/src/main/scala/resonantinduction/mechanical/gear/PartGear.java similarity index 99% rename from mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java rename to mechanical/src/main/scala/resonantinduction/mechanical/gear/PartGear.java index 1edd4095d..5219482a2 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/gear/PartGear.java @@ -1,4 +1,4 @@ -package resonantinduction.mechanical.energy.gear; +package resonantinduction.mechanical.gear; import java.util.Arrays; import java.util.HashSet; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGearShaft.java b/mechanical/src/main/scala/resonantinduction/mechanical/gear/PartGearShaft.java similarity index 94% rename from mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGearShaft.java rename to mechanical/src/main/scala/resonantinduction/mechanical/gear/PartGearShaft.java index 71f3fb270..eb3c773c3 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGearShaft.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/gear/PartGearShaft.java @@ -1,4 +1,4 @@ -package resonantinduction.mechanical.energy.gear; +package resonantinduction.mechanical.gear; import java.util.Collection; import java.util.HashSet; @@ -6,9 +6,9 @@ import java.util.Set; import net.minecraft.item.ItemStack; import net.minecraftforge.common.ForgeDirection; +import resonantinduction.mechanica.gearshaft.GearShaftNode; +import resonantinduction.mechanica.gearshaft.RenderGearShaft; import resonantinduction.mechanical.Mechanical; -import resonantinduction.mechanical.energy.gearshaft.GearShaftNode; -import resonantinduction.mechanical.energy.gearshaft.RenderGearShaft; import resonantinduction.mechanical.energy.grid.PartMechanical; import codechicken.lib.raytracer.IndexedCuboid6; import codechicken.lib.vec.Cuboid6; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/RenderGear.java b/mechanical/src/main/scala/resonantinduction/mechanical/gear/RenderGear.java similarity index 97% rename from mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/RenderGear.java rename to mechanical/src/main/scala/resonantinduction/mechanical/gear/RenderGear.java index 96606180b..8675ae72d 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/RenderGear.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/gear/RenderGear.java @@ -1,4 +1,4 @@ -package resonantinduction.mechanical.energy.gear; +package resonantinduction.mechanical.gear; import net.minecraft.item.ItemStack; import net.minecraftforge.client.model.AdvancedModelLoader; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/gear/dev/GearNetwork.java b/mechanical/src/main/scala/resonantinduction/mechanical/gear/dev/GearNetwork.java new file mode 100644 index 000000000..aa16be6bc --- /dev/null +++ b/mechanical/src/main/scala/resonantinduction/mechanical/gear/dev/GearNetwork.java @@ -0,0 +1,72 @@ +package resonantinduction.mechanical.gear.dev; + +import java.util.Collections; +import java.util.Set; +import java.util.WeakHashMap; + +import universalelectricity.api.net.IUpdate; + +/** Network type only used by gear related mechanical machines + * + * @author Darkguardsman */ +public class GearNetwork implements IUpdate +{ + /** Map of gears and how they related to each generator */ + private final Set nodes = Collections.newSetFromMap(new WeakHashMap()); + private final Set generators = Collections.newSetFromMap(new WeakHashMap()); + private boolean doRemap = false; + + /** Called by a gear when its added to the world */ + public void onAdded(NodeGear gear) + { + if (gear instanceof NodeGenerator) + { + if (!generators.contains(gear)) + { + generators.add((NodeGenerator) gear); + doRemap = true; + } + } + else + { + if (!nodes.contains(gear)) + { + nodes.add(gear); + doRemap = true; + } + } + } + + /** Called by a gear when its removed from the world */ + public void onRemoved(NodeGear gear) + { + if (generators.remove(gear) || nodes.remove(gear)) + { + doRemap = true; + } + } + + @Override + public void update() + { + //If remap flag was set make sure to remap before doing anything else + if (doRemap) + { + doRemap = false; + } + + } + + @Override + public boolean canUpdate() + { + return true; + } + + @Override + public boolean continueUpdate() + { + return true; + } + +} diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/gear/dev/NodeGear.java b/mechanical/src/main/scala/resonantinduction/mechanical/gear/dev/NodeGear.java new file mode 100644 index 000000000..11f55df0e --- /dev/null +++ b/mechanical/src/main/scala/resonantinduction/mechanical/gear/dev/NodeGear.java @@ -0,0 +1,51 @@ +package resonantinduction.mechanical.gear.dev; + +import java.util.HashMap; + +import resonant.api.grid.INode; +import resonant.lib.type.Pair; + +/** Applied to any device that acts as part of a gear network using or supplying rotational force + * + * @author Darkguardsman */ +public class NodeGear implements INode +{ + /** Used by the gear network to track the rotation effect each generator has on this gear */ + public HashMap> rotationEffectMap = new HashMap>(); + + /** Speed by which this gear rotates */ + protected float rotationSpeed = 0; + /** Force carried by this gear */ + protected float force = 0; + /** Flag if the gear is rotating clockwise */ + protected boolean clockwise = false; + + @Override + public void update(float deltaTime) + { + // TODO Auto-generated method stub + + } + + @Override + public void reconstruct() + { + // TODO Auto-generated method stub + + } + + @Override + public void deconstruct() + { + this.rotationEffectMap.clear(); + + } + + @Override + public void recache() + { + // TODO Auto-generated method stub + + } + +} diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/gear/dev/NodeGenerator.java b/mechanical/src/main/scala/resonantinduction/mechanical/gear/dev/NodeGenerator.java new file mode 100644 index 000000000..1747bda99 --- /dev/null +++ b/mechanical/src/main/scala/resonantinduction/mechanical/gear/dev/NodeGenerator.java @@ -0,0 +1,19 @@ +package resonantinduction.mechanical.gear.dev; + +import net.minecraftforge.common.ForgeDirection; + +/** Added to any device that generates a mechanical rotational force as part of the network + * + * @author Darkguardsman */ +public class NodeGenerator extends NodeGear +{ + /** Should the generator supply a force to the network. Checked each tick before calling any + * force related methods. + * + * @param side - side the force is outputting to + * @return true if this node can */ + public boolean shouldSupplyForce(ForgeDirection side) + { + return false; + } +}