Browse Source

logic change in waitfor

Kajetan Johannes Hammerle 5 years ago
parent
commit
2886b17983

+ 8 - 7
src/me/hammerle/snuviscript/code/FunctionRegistry.java

@@ -763,14 +763,15 @@ public class FunctionRegistry
             sc.setWaiting();
             sc.getScriptManager().getScheduler().scheduleTask(() -> 
             {           
-                if(!sc.shouldTerm())
+                if(sc.shouldTerm())
                 {
-                    sc.setHolded(false);
-                    sc.run();
-                    if(sc.shouldTerm())
-                    {
-                        sc.getScriptManager().removeScriptSafe(sc);
-                    }
+                    return;
+                }
+                sc.setHolded(false);
+                sc.run();
+                if(sc.shouldTerm())
+                {
+                    sc.getScriptManager().removeScriptSafe(sc);
                 }
             }, l); 
             return Void.TYPE;

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

@@ -129,7 +129,6 @@ public final class Script
         isWaiting = false;
         //System.out.println("_________________________");
         long endTime = System.nanoTime() + 15_000_000;
-        int count = 0;
         while(lineIndex < code.length && !isWaiting && !isHolded)
         {  
             try
@@ -175,7 +174,6 @@ public final class Script
                 break;
             }
             
-            count++;
             if(System.nanoTime() > endTime)
             {
                 isHolded = true;

+ 6 - 3
src/me/hammerle/snuviscript/test/TestScheduler.java

@@ -1,11 +1,11 @@
 package me.hammerle.snuviscript.test;
 
-import java.util.ArrayList;
+import java.util.LinkedList;
 import me.hammerle.snuviscript.code.ISnuviScheduler;
 
 public class TestScheduler implements ISnuviScheduler
 {
-    private final ArrayList<Runnable> list = new ArrayList<>();
+    private final LinkedList<Runnable> list = new LinkedList<>();
     
     @Override
     public int scheduleTask(Runnable r, long delay)
@@ -16,6 +16,9 @@ public class TestScheduler implements ISnuviScheduler
     
     public void execute()
     {
-        list.forEach(r -> r.run());
+        while(!list.isEmpty())
+        {
+            list.removeFirst().run();
+        }
     }
 }

+ 4 - 1
test/test.test

@@ -1 +1,4 @@
-print("WUSI");
+for(time = 3600000; time <=86400000; time + 3600000) {
+    print(time);
+  waitfor(20);
+}