Browse Source

timer modifier

Kajetan Johannes Hammerle 2 years ago
parent
commit
9b2568ed3f

+ 1 - 0
src/me/hammerle/snuviscript/code/FunctionRegistry.java

@@ -61,6 +61,7 @@ public class FunctionRegistry {
     @SuppressWarnings({"unchecked", "rawtypes"})
     private static void register() {
         registerFunction("nothing", (sc, in) -> Void.TYPE);
+        registerConsumer("modtimer", (sc, in) -> sc.addTimer(in[0].getLong(sc)));
         registerConsumer("error", (sc, in) -> sc.setStackTrace(in[0].getBoolean(sc)));
         registerConsumer("event.load", (sc, in) -> {
             String event = in[0].getString(sc);

+ 8 - 2
src/me/hammerle/snuviscript/code/Script.java

@@ -51,6 +51,8 @@ public final class Script {
 
     private final ArrayList<AutoCloseable> closeables = new ArrayList<>();
 
+    private long endTime = 0;
+
     public Script(ScriptManager sm, Consumer<Script> onTerm, String name, String... path) {
         ifState.push(true);
         this.id = idCounter++;
@@ -97,7 +99,7 @@ public final class Script {
     public void run() {
         isWaiting = false;
         // System.out.println("_________________________");
-        long endTime = System.nanoTime() + 15_000_000;
+        endTime = System.nanoTime() + 15_000_000;
         while(lineIndex < code.length && !isWaiting && !isHolded) {
             Instruction instr = code[lineIndex];
             try {
@@ -142,7 +144,7 @@ public final class Script {
                         isHolded = false;
                         run();
                     }
-                }, 1);
+                }, 5);
                 scriptManager.getLogger().print("auto scheduler was activated", null,
                         instr.getName(), name, this,
                         new StackTrace(instr.getLine(), returnStack, code));
@@ -347,4 +349,8 @@ public final class Script {
     public boolean equals(Object o) {
         return o != null && o instanceof Script && ((Script) o).id == id;
     }
+
+    public void addTimer(long l) {
+        endTime -= l * 1000000;
+    }
 }