From 8ccc2cb40a9c86f768dcea93d2ccbb85e10103bb Mon Sep 17 00:00:00 2001 From: Waverunner Date: Tue, 6 Jan 2015 12:08:57 -0500 Subject: [PATCH] Added Java Callbacks for commands --- src/resources/commands/Command.java | 5 ++++- src/resources/commands/ICmdCallback.java | 9 +++++++++ src/services/commands/CommandService.java | 14 +++++++++++++- 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 src/resources/commands/ICmdCallback.java diff --git a/src/resources/commands/Command.java b/src/resources/commands/Command.java index 8adbb03fc..030da8c29 100644 --- a/src/resources/commands/Command.java +++ b/src/resources/commands/Command.java @@ -8,7 +8,7 @@ public class Command { // defaultPriority private String scriptCallback; // fail - //private ICommandCallback javaCallback; + private ICmdCallback javaCallback; // fail private float defaultTime; private String characterAbility; @@ -47,6 +47,9 @@ public class Command { public void setName(String name) { this.name = name; } public String getScriptCallback() { return scriptCallback; } public void setScriptCallback(String scriptCallback) { this.scriptCallback = scriptCallback; } + public ICmdCallback getJavaCallback() { return javaCallback; } + public void setJavaCallback(ICmdCallback javaCallback) { this.javaCallback = javaCallback; } + public boolean hasJavaCallback() { return javaCallback != null; } public float getDefaultTime() { return defaultTime; } public void setDefaultTime(float defaultTime) { this.defaultTime = defaultTime; } public String getCharacterAbility() { return characterAbility; } diff --git a/src/resources/commands/ICmdCallback.java b/src/resources/commands/ICmdCallback.java new file mode 100644 index 000000000..f236af4c6 --- /dev/null +++ b/src/resources/commands/ICmdCallback.java @@ -0,0 +1,9 @@ +package resources.commands; + +import resources.objects.SWGObject; +import resources.player.Player; +import services.objects.ObjectManager; + +public interface ICmdCallback { + public void execute(ObjectManager objManager, Player player, SWGObject target, String args); +} diff --git a/src/services/commands/CommandService.java b/src/services/commands/CommandService.java index e341683a1..c3bc2e5d2 100644 --- a/src/services/commands/CommandService.java +++ b/src/services/commands/CommandService.java @@ -10,6 +10,7 @@ import intents.GalacticPacketIntent; import resources.client_info.ClientFactory; import resources.client_info.visitors.DatatableData; import resources.commands.Command; +import resources.commands.ICmdCallback; import resources.common.CRC; import resources.control.Intent; import resources.control.Service; @@ -32,6 +33,7 @@ public class CommandService extends Service { commandCrcLookup = new ConcurrentHashMap(); registerForIntent(GalacticPacketIntent.TYPE); loadBaseCommands(); + registerCallbacks(); return super.initialize(); } @@ -78,7 +80,10 @@ public class CommandService extends Service { // TODO: Handle for different targetType - Scripts.execute("commands/generic/" + command.getScriptCallback(), "execute", objManager, player, target, args); + if (command.hasJavaCallback()) + command.getJavaCallback().execute(objManager, player, target, args); + else + Scripts.execute("commands/generic/" + command.getScriptCallback(), "execute", objManager, player, target, args); } private void loadBaseCommands() { @@ -98,4 +103,11 @@ public class CommandService extends Service { commandCrcLookup.put(command.getName(), command.getCrc()); } } + + @SuppressWarnings("unused") + private void registerCallback(String command, ICmdCallback callback) { commands.get(commandCrcLookup.get(command)).setJavaCallback(callback); } + + private void registerCallbacks() { + // Example: registerCallback("spatialChatInternal", new SpatialChatCallback()); + } }