From 376714a07de56c4d4ab84e39f8f5de1e1a3e121e Mon Sep 17 00:00:00 2001 From: Clisprail Date: Tue, 18 Feb 2014 23:47:54 +0100 Subject: [PATCH] Proper RandomHandler implementation --- parabotv2/src/org/parabot/core/Context.java | 53 +++++++++++-------- .../parabot/environment/randoms/Handler.java | 49 ----------------- .../environment/randoms/RandomHandler.java | 38 +++++++++++++ .../parabot/environment/scripts/Script.java | 20 ++++--- 4 files changed, 82 insertions(+), 78 deletions(-) delete mode 100644 parabotv2/src/org/parabot/environment/randoms/Handler.java create mode 100644 parabotv2/src/org/parabot/environment/randoms/RandomHandler.java diff --git a/parabotv2/src/org/parabot/core/Context.java b/parabotv2/src/org/parabot/core/Context.java index 5f4808f..653cf05 100644 --- a/parabotv2/src/org/parabot/core/Context.java +++ b/parabotv2/src/org/parabot/core/Context.java @@ -9,6 +9,7 @@ import org.parabot.core.ui.components.GamePanel; import org.parabot.environment.api.interfaces.Paintable; import org.parabot.environment.input.Keyboard; import org.parabot.environment.input.Mouse; +import org.parabot.environment.randoms.RandomHandler; import org.parabot.environment.scripts.Script; import org.parabot.environment.servers.ServerProvider; @@ -23,35 +24,35 @@ import java.util.TimerTask; * @author Everel */ public class Context { - public static HashMap threadGroups = new HashMap(); + public static final HashMap threadGroups = new HashMap(); + private static ArrayList paintables = new ArrayList(); private static int id = 1; - private ASMClassLoader classLoader = null; - private ClassPath classPath = null; - private ServerProvider serverProvider = null; - private int tab = 0; - private Applet gameApplet = null; - private HookParser hookParser = null; - private Script runningScript = null; - - private Object clientInstance = null; - - private static ArrayList paintables = new ArrayList(); - - private PaintDebugger paintDebugger = new PaintDebugger(); - - public boolean added = false; - - private Mouse mouse = null; - private Keyboard keyboard = null; + public boolean added; + private ASMClassLoader classLoader; + private ClassPath classPath; + private ServerProvider serverProvider; + private int tab; + private Applet gameApplet; + private HookParser hookParser; + private Script runningScript; + private RandomHandler randomHandler; + private Object clientInstance; + private PaintDebugger paintDebugger; + private Mouse mouse; + private Keyboard keyboard; public Context(final ServerProvider serverProvider) { threadGroups.put(Thread.currentThread().getThreadGroup(), this); - tab = id; + this.serverProvider = serverProvider; - id++; + this.paintDebugger = new PaintDebugger(); this.classPath = new ClassPath(); - classLoader = new ASMClassLoader(classPath); + this.classLoader = new ASMClassLoader(classPath); + this.randomHandler = new RandomHandler(); + this.tab = id; + + id++; } /** @@ -297,5 +298,13 @@ public class Context { public Script getRunningScript() { return this.runningScript; } + + /** + * Gets the random handler + * @return random handler + */ + public RandomHandler getRandomHandler() { + return this.randomHandler; + } } diff --git a/parabotv2/src/org/parabot/environment/randoms/Handler.java b/parabotv2/src/org/parabot/environment/randoms/Handler.java deleted file mode 100644 index 5b11963..0000000 --- a/parabotv2/src/org/parabot/environment/randoms/Handler.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.parabot.environment.randoms; - -import org.parabot.environment.scripts.Script; - -import java.util.ArrayList; - -/** - * User: Jeroen - * Date: 18/02/14 - * Time: 19:37 - */ -public class Handler { - - - public static class RandomChecker { - private ArrayList randoms; - - public void addRandom(Random random) { - randoms.add(random); - } - - public void checkAndRun() { - Script s = new Script(); - for(Random r : randoms) { - if(r.shouldRun()) { - s.setState(1); - r.run(); - } - } - } - } - - public interface Random { - public boolean shouldRun(); - public void run(); - } - - public abstract class RandomScript { - //private RandomChecker randomChecker = ServerProvider.getRandomChecker(); - - public void scriptLoop() { - while(true) { - // randomChecker.checkAndRun(); - // framework.loop(); - } - } - } - -} diff --git a/parabotv2/src/org/parabot/environment/randoms/RandomHandler.java b/parabotv2/src/org/parabot/environment/randoms/RandomHandler.java new file mode 100644 index 0000000..98c6567 --- /dev/null +++ b/parabotv2/src/org/parabot/environment/randoms/RandomHandler.java @@ -0,0 +1,38 @@ +package org.parabot.environment.randoms; + +import java.util.ArrayList; + +/** + * + * @author Everel + * + */ +public class RandomHandler { + private ArrayList randoms; + + public RandomHandler() { + randoms = new ArrayList(); + } + + /** + * Adds a random to the random list + * @param random + */ + public void addRandom(Random random) { + randoms.add(random); + } + + /** + * Checks if random occures and runs it + * @return returns true if a random has been executed, otherwise false + */ + public boolean checkAndRun() { + for(Random r : randoms) { + if(r.activate()) { + r.execute(); + return true; + } + } + return false; + } +} \ No newline at end of file diff --git a/parabotv2/src/org/parabot/environment/scripts/Script.java b/parabotv2/src/org/parabot/environment/scripts/Script.java index 59b7c08..7d6bb2f 100644 --- a/parabotv2/src/org/parabot/environment/scripts/Script.java +++ b/parabotv2/src/org/parabot/environment/scripts/Script.java @@ -20,19 +20,19 @@ import java.util.Collection; * */ public class Script implements Runnable { - private Collection strategies = null; - private int frameWorkType = 0; - private AbstractFramework frameWork = null; - public static final int TYPE_STRATEGY = 0; public static final int TYPE_LOOP = 1; public static final int TYPE_OTHER = 2; - private int state = 0; public static final int STATE_RUNNING = 0; public static final int STATE_PAUSE = 1; public static final int STATE_STOPPED = 2; + private Collection strategies; + private AbstractFramework frameWork; + private int state; + private int frameWorkType; + public boolean onExecute() { return true; } @@ -62,8 +62,10 @@ public class Script implements Runnable { @Override public final void run() { + Context context = Context.resolve(); + Core.verbose("Initializing script..."); - Context.resolve().getServerProvider().initScript(this); + context.getServerProvider().initScript(this); Core.verbose("Done."); if(!onExecute()) { @@ -75,7 +77,7 @@ public class Script implements Runnable { } Core.verbose("Detecting script framework..."); - Context.resolve().setRunningScript(this); + context.setRunningScript(this); BotToolbar.getInstance().toggleRun(); if(this instanceof LoopTask) { Core.verbose("Script framework detected: LoopTask"); @@ -93,6 +95,10 @@ public class Script implements Runnable { LogArea.log("Script started."); try { while(this.state != STATE_STOPPED) { + if(context.getRandomHandler().checkAndRun()) { + continue; + } + if(this.state == STATE_PAUSE) { sleep(500); continue;