diff --git a/src/api b/src/api index 8ad0c21ef..50f30f367 160000 --- a/src/api +++ b/src/api @@ -1 +1 @@ -Subproject commit 8ad0c21ef4a368755208f7341ce130ace9586877 +Subproject commit 50f30f3678970011fcc7d4bdd8928fabc2f84ea0 diff --git a/src/main/java/noppes/npcs/controllers/data/action/Action.java b/src/main/java/noppes/npcs/controllers/data/action/Action.java index 20244d56a..9a28ed23e 100644 --- a/src/main/java/noppes/npcs/controllers/data/action/Action.java +++ b/src/main/java/noppes/npcs/controllers/data/action/Action.java @@ -129,6 +129,10 @@ public class Action implements IAction { return done; } + public void kill() { + + } + @Override public Object getData(String key) { return dataStore.get(key); diff --git a/src/main/java/noppes/npcs/scripted/ScriptedActionManager.java b/src/main/java/noppes/npcs/scripted/ScriptedActionManager.java index 9d17e3b30..dea0797b4 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptedActionManager.java +++ b/src/main/java/noppes/npcs/scripted/ScriptedActionManager.java @@ -106,7 +106,7 @@ public class ScriptedActionManager implements IActionManager { } @Override - public IAction scheduleAction(String name, Consumer task) { + public IAction scheduleAction(String name, Consumer task) { return scheduleAction(create(name, task)); } @Override @@ -175,6 +175,26 @@ public class ScriptedActionManager implements IActionManager { return actionQueue; } + @Override + public boolean hasAction(String name) { + for (IAction act : actionQueue) + if (act.getName().equals(name)) + return true; + + return false; + } + @Override + public boolean hasAny(String name) { + if (hasAction(name)) + return true; + else if (hasParallel(name)) + return true; + else if (hasConditional(name)) + return true; + + return false; + } + @Override public void clear() { actionQueue.clear(); @@ -242,6 +262,15 @@ public class ScriptedActionManager implements IActionManager { return new ArrayList<>(conditionalActions); } + @Override + public boolean hasConditional(String name) { + for (IAction act : conditionalActions) + if (act.getName().equals(name)) + return true; + + return false; + } + @Override public IAction scheduleParallelAction(IAction action) { parallelActions.add(action); @@ -262,7 +291,10 @@ public class ScriptedActionManager implements IActionManager { if (current instanceof Action) { Action cab = (Action) current; cab.tick(ticksExisted); - if (cab.isDone()) actionQueue.pollFirst(); + if (cab.isDone()) { + cab.kill(); + actionQueue.pollFirst(); + } } // ─── Parallel (all) ─────────────────────────────────────── @@ -270,7 +302,10 @@ public class ScriptedActionManager implements IActionManager { while (pit.hasNext()) { Action a = (Action) pit.next(); a.tick(ticksExisted); - if (a.isDone()) pit.remove(); + if (a.isDone()) { + a.kill(); + pit.remove(); + } } // ─── Conditionals ───────────────────────────────────────── @@ -278,7 +313,10 @@ public class ScriptedActionManager implements IActionManager { while (cit.hasNext()) { ConditionalAction con = (ConditionalAction) cit.next(); con.tick(ticksExisted); - if (con.isDone()) cit.remove(); + if (con.isDone()) { + con.kill(); + cit.remove(); + } } } @@ -291,4 +329,18 @@ public class ScriptedActionManager implements IActionManager { public IActionChain parallelChain() { return new ParallelActionChain(this); } + + @Override + public Queue getParallelActions() { + return parallelActions; + } + + @Override + public boolean hasParallel(String name) { + for (IAction act : parallelActions) + if (act.getName().equals(name)) + return true; + + return false; + } }