diff --git a/HeatUp/src/de/heatup/testing/GameLoopD.java b/HeatUp/src/de/heatup/testing/GameLoopD.java index d6fee24..d9c460b 100644 --- a/HeatUp/src/de/heatup/testing/GameLoopD.java +++ b/HeatUp/src/de/heatup/testing/GameLoopD.java @@ -15,6 +15,7 @@ import de.heatup.mapengine.MapEngine; import de.heatup.mapengine.MapGrid; import de.heatup.mapengine.SpawnAssistant; import de.heatup.objects.StaticObject; +import de.heatup.timers.HardwareResetTimers; import de.heatup.ui.KeyBindings; import de.heatup.ui.StatusPanelAdder; import de.heatup.ui.actionPanel.ActionControl; @@ -257,6 +258,7 @@ public class GameLoopD extends JFrame implements Runnable { kb.checkKeyActivity(); ActionWatcher.tick(); ActionControl.actionControl(); + HardwareResetTimers.tick(); player01.tick(); opponent01.tick(); opponent02.tick(); diff --git a/HeatUp/src/de/heatup/timers/HardwareResetTimers.java b/HeatUp/src/de/heatup/timers/HardwareResetTimers.java new file mode 100644 index 0000000..6605dd6 --- /dev/null +++ b/HeatUp/src/de/heatup/timers/HardwareResetTimers.java @@ -0,0 +1,36 @@ +package de.heatup.timers; + +import java.util.HashMap; +import java.util.Map; + +import de.heatup.cfg.Config; +import de.heatup.logging.Logger; +import de.heatup.ui.actionPanel.HardewareManipulate; + +public class HardwareResetTimers { + private static int tickCount = 0; + private static int tickRoundMax = 10000; + private static int nrOfTicksUntilReset = 900; // entspricht 15 sekunden ingame zeit (nicht unbedingt echtzeit!); berechnet durch 15*targetTickRate im Gameloop. + private static Map HardwareResetTickstamps = new HashMap(); + public static void tick() { + tickCount++; + if (tickCount>=tickRoundMax) { + tickCount = 0; + } + for (char i = Config.firstHardwareChar; i<=Config.lastHardwareChar; i++) { + if (HardwareResetTickstamps.containsKey(i)) { + if (HardwareResetTickstamps.get(i).equals(tickCount)) { + Logger.write("Hardware "+i+" reset"); + HardewareManipulate.resetHardware(i); + } + } + } + } + public static void setManipulated(char c) { + int resetTimestamp = tickCount+nrOfTicksUntilReset; + if (resetTimestamp > tickRoundMax) { + resetTimestamp = resetTimestamp % tickRoundMax; + } + HardwareResetTickstamps.put(c, resetTimestamp); + } +} diff --git a/HeatUp/src/de/heatup/ui/actionPanel/HardewareManipulate.java b/HeatUp/src/de/heatup/ui/actionPanel/HardewareManipulate.java index e7b6e78..616fa32 100644 --- a/HeatUp/src/de/heatup/ui/actionPanel/HardewareManipulate.java +++ b/HeatUp/src/de/heatup/ui/actionPanel/HardewareManipulate.java @@ -1,5 +1,7 @@ package de.heatup.ui.actionPanel; +import de.heatup.timers.HardwareResetTimers; + public class HardewareManipulate { private static boolean h00=false; private static boolean h01=false; @@ -15,33 +17,77 @@ public class HardewareManipulate { switch(c){ case '0': h00=true; + HardwareResetTimers.setManipulated(c); break; case '1': h01=true; + HardwareResetTimers.setManipulated(c); break; case '2': h02=true; + HardwareResetTimers.setManipulated(c); break; case '3': h03=true; + HardwareResetTimers.setManipulated(c); break; case '4': h04=true; + HardwareResetTimers.setManipulated(c); break; case '5': h05=true; + HardwareResetTimers.setManipulated(c); break; case '6': h06=true; + HardwareResetTimers.setManipulated(c); break; case '7': h07=true; + HardwareResetTimers.setManipulated(c); break; case '8': h08=true; + HardwareResetTimers.setManipulated(c); break; case '9': h09=true; + HardwareResetTimers.setManipulated(c); + break; + } + } + public static void resetHardware(char c){ + switch(c){ + case '0': + h00=false; + break; + case '1': + h01=false; + break; + case '2': + h02=false; + break; + case '3': + h03=false; + break; + case '4': + h04=false; + break; + case '5': + h05=false; + break; + case '6': + h06=false; + break; + case '7': + h07=false; + break; + case '8': + h08=false; + break; + case '9': + h09=false; break; } }