aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Timer.java
diff options
context:
space:
mode:
authorShawn Buckley <shawntbuckley@gmail.com>2015-10-18 23:04:39 -0400
committerShawn Buckley <shawntbuckley@gmail.com>2015-10-18 23:04:39 -0400
commit85c804fa112fd1f19c91e45d150a787cfbf0f7a8 (patch)
treecb302d8e0f46e06be0b1d391317578b165aec245 /src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Timer.java
parentce25063b910bb3bdd2b0c234b185fc4077caebdb (diff)
downloadGT5-Unofficial-85c804fa112fd1f19c91e45d150a787cfbf0f7a8.tar.gz
GT5-Unofficial-85c804fa112fd1f19c91e45d150a787cfbf0f7a8.tar.bz2
GT5-Unofficial-85c804fa112fd1f19c91e45d150a787cfbf0f7a8.zip
Move source directory
Diffstat (limited to 'src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Timer.java')
-rw-r--r--src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Timer.java124
1 files changed, 124 insertions, 0 deletions
diff --git a/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Timer.java b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Timer.java
new file mode 100644
index 0000000000..ef450cc7c2
--- /dev/null
+++ b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Timer.java
@@ -0,0 +1,124 @@
+package gregtech.common.redstonecircuits;
+
+import gregtech.api.interfaces.IRedstoneCircuitBlock;
+import gregtech.api.util.GT_CircuitryBehavior;
+
+public class GT_Circuit_Timer
+ extends GT_CircuitryBehavior
+{
+ public GT_Circuit_Timer(int aIndex)
+ {
+ super(aIndex);
+ }
+
+ public void initParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ aCircuitData[0] = 2;
+ aCircuitData[1] = 1;
+ aCircuitData[2] = 2;
+ aCircuitData[4] = 0;
+ }
+
+ public void validateParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ if (aCircuitData[0] < 2) {
+ aCircuitData[0] = 2;
+ }
+ if (aCircuitData[1] < 1) {
+ aCircuitData[1] = 1;
+ }
+ if (aCircuitData[2] < 2) {
+ aCircuitData[2] = 2;
+ }
+ if (aCircuitData[3] < 0) {
+ aCircuitData[3] = 0;
+ }
+ if (aCircuitData[3] > 1) {
+ aCircuitData[3] = 1;
+ }
+ if (aCircuitData[4] < 0) {
+ aCircuitData[4] = 0;
+ }
+ }
+
+ public void onTick(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ if (aCircuitData[3] == 1)
+ {
+ if (getAnyRedstone(aRedstoneCircuitBlock)) {
+ aCircuitData[4] += 1;
+ } else {
+ aCircuitData[4] = 0;
+ }
+ }
+ else if (getAnyRedstone(aRedstoneCircuitBlock)) {
+ aCircuitData[4] = 0;
+ } else {
+ aCircuitData[4] += 1;
+ }
+ if (aCircuitData[4] >= aCircuitData[0])
+ {
+ if (aCircuitData[1] > 1)
+ {
+ if (aCircuitData[4] >= aCircuitData[0] + (aCircuitData[1] - 1) * aCircuitData[2])
+ {
+ aRedstoneCircuitBlock.setRedstone((byte)15, aRedstoneCircuitBlock.getOutputFacing());
+ aCircuitData[4] = 0;
+ }
+ else
+ {
+ aRedstoneCircuitBlock.setRedstone((byte)((aCircuitData[4] - aCircuitData[0]) % aCircuitData[2] == 0 ? 15 : 0), aRedstoneCircuitBlock.getOutputFacing());
+ }
+ }
+ else
+ {
+ aRedstoneCircuitBlock.setRedstone((byte)15, aRedstoneCircuitBlock.getOutputFacing());
+ aCircuitData[4] = 0;
+ }
+ }
+ else {
+ aRedstoneCircuitBlock.setRedstone((byte)0, aRedstoneCircuitBlock.getOutputFacing());
+ }
+ }
+
+ public String getName()
+ {
+ return "Timer";
+ }
+
+ public String getDescription()
+ {
+ return "Pulses Redstone";
+ }
+
+ public String getDataDescription(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ switch (aCircuitDataIndex)
+ {
+ case 0:
+ return "Delay";
+ case 1:
+ return "Pulses";
+ case 2:
+ return "Length";
+ case 3:
+ return aCircuitData[aCircuitDataIndex] == 1 ? "RS => ON" : "RS => OFF";
+ case 4:
+ return "Time";
+ }
+ return "";
+ }
+
+ public boolean displayItemStack(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock, int aIndex)
+ {
+ return false;
+ }
+
+ public String getDataDisplay(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ if (aCircuitDataIndex == 3) {
+ return "";
+ }
+ return null;
+ }
+}