Kajetan Johannes Hammerle 7 лет назад
Родитель
Сommit
7cd22a4fe3

+ 1 - 1
src/me/hammerle/code/Script.java

@@ -77,7 +77,7 @@ public class Script
         valueStack.clear();
         returnStack.clear();
         this.code = Code.generate(parser, name, code, gotos);
-        position = 0;
+        position = -1;
         halt = false;
         valid = true;
         tryJumpLine = -1;

+ 14 - 2
src/me/hammerle/code/SnuviParser.java

@@ -393,6 +393,7 @@ public class SnuviParser
             return false;
         }
         sc.setInvalid();
+        sc.onTerm();
         return scripts.remove(sc.getId()) != null;
     }
     
@@ -410,14 +411,25 @@ public class SnuviParser
     {
         if(!termQueue.isEmpty())
         {
-            termQueue.forEach(i -> scripts.remove(i));
+            termQueue.forEach(i -> 
+            {
+                Script sc = scripts.remove(i);
+                if(sc != null)
+                {
+                    sc.onTerm();
+                }
+            });
             termQueue.clear();
         }
     }
     
     public void termAllUnsafe()
     {
-        scripts.values().forEach(sc -> sc.setInvalid());
+        scripts.values().forEach(sc -> 
+        {
+            sc.onTerm();
+            sc.setInvalid();
+        });
         scripts.clear();
     }
     

+ 19 - 10
src/me/hammerle/snuviscript/SnuviScript.java

@@ -1,12 +1,18 @@
 package me.hammerle.snuviscript;
 
+import me.hammerle.code.ISnuviLogger;
+import me.hammerle.code.ISnuviScheduler;
+import me.hammerle.code.Script;
+import me.hammerle.code.SnuviParser;
+import me.hammerle.exceptions.PreScriptException;
+import me.hammerle.exceptions.SnuviException;
 import me.hammerle.math.Fraction;
 
 public class SnuviScript 
 {
     public static void main(String[] args) 
     {
-        /*ISnuviLogger logger = new ISnuviLogger() 
+        ISnuviLogger logger = new ISnuviLogger() 
         {
             @Override
             public void printException(SnuviException ex, Script s) 
@@ -66,8 +72,8 @@ public class SnuviScript
             }
         });
         parser.registerConsumer("debug", (o, sc) -> System.out.println(o[0]));
-        parser.registerFunction("ggv", (o, sc) -> o[0]);
-        parser.registerFunction("read.item", (o, sc) -> o[0]);*/
+        //parser.registerFunction("ggv", (o, sc) -> o[0]);
+        //parser.registerFunction("read.item", (o, sc) -> o[0]);
         
         /*StringBuilder sb = new StringBuilder("wusi = 1;\n");
         int counter = 0;
@@ -89,22 +95,25 @@ public class SnuviScript
         }
         sb.append("debug(wusi);");*/
         
-        /*String s = "setVar(\"kürbis\",read.item(\"{id:'minecraft:pumpki"
-                + "n_pie',Count:64b,tag:{display:{Lore:[0:'Ein fast ganze"
-                + "r Kürbiskuchen,',1:'bestehend aus sieben Achteln.'],Nam"
-                + "e:'KürbisMinusEinAchtelKuchen'}},Damage:0s}\")); debug(kürbis);";*/
+        String s = "debug(\"dev\", 3);\n" +
+"if(false) {\n" +
+"    debug($player, \"§cFehler\", \"§rDer Block unter dem Gildenblock muss ein solider Block sein\");\n" +
+"  setVar(\"cancel\", true);\n" +
+"  goto(\"wait\");\n" +
+"}\n" +
+"debug(\"dev\", 4);";
         //System.out.println(s);
         //System.out.println("___________");
         //parser.startScript(Script.class, "test", sb.toString(), true);
-        //parser.startScript(Script.class, "test", s, true);
+        parser.startScript(Script.class, "test", s, true);
         //parser.getScript(0).runCode();
 
-        Fraction f = new Fraction(1, 3);
+        /*Fraction f = new Fraction(1, 3);
         Fraction f2 = new Fraction(2, 3);
         System.out.println(
                 f.power(new Fraction(2))
                         .add(f2.power(new Fraction(2)))
                         .add(f2.power(new Fraction(2)))
-                        .power(new Fraction(1, 2)));
+                        .power(new Fraction(1, 2)));*/
     }   
 }