From 1aa3453cb3b5a76da7a6bfa19ea252265ffda016 Mon Sep 17 00:00:00 2001 From: Waverunner Date: Sun, 18 Jan 2015 23:40:07 -0500 Subject: [PATCH] Added handling of radial menu requests and responses --- src/services/sui/SuiService.java | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/services/sui/SuiService.java b/src/services/sui/SuiService.java index 6cce55b31..28a10d172 100644 --- a/src/services/sui/SuiService.java +++ b/src/services/sui/SuiService.java @@ -7,6 +7,10 @@ import java.util.concurrent.ConcurrentHashMap; import org.python.core.Py; import org.python.core.PyObject; +import network.packets.Packet; +import network.packets.swg.zone.object_controller.ObjectController; +import network.packets.swg.zone.object_controller.ObjectMenuRequest; +import network.packets.swg.zone.object_controller.ObjectMenuResponse; import network.packets.swg.zone.server_ui.SuiCreatePageMessage; import network.packets.swg.zone.server_ui.SuiEventNotification; import intents.GalacticPacketIntent; @@ -38,14 +42,30 @@ public class SuiService extends Service { if (i instanceof SuiWindowIntent) handleSuiWindowIntent((SuiWindowIntent) i); else if (i instanceof GalacticPacketIntent) { - if (((GalacticPacketIntent) i).getPacket() instanceof SuiEventNotification) { - long netId = ((GalacticPacketIntent) i).getNetworkId(); - Player player = ((GalacticPacketIntent) i).getPlayerManager().getPlayerFromNetworkId(netId); + Packet packet = ((GalacticPacketIntent) i).getPacket(); + long netId = ((GalacticPacketIntent) i).getNetworkId(); + Player player = ((GalacticPacketIntent) i).getPlayerManager().getPlayerFromNetworkId(netId); + + if (packet instanceof ObjectController) { + ObjectController controller = (ObjectController) packet; + if (controller instanceof ObjectMenuRequest) + handleRadialMenuRequest(player, (ObjectMenuRequest) controller); + + } else if (packet instanceof SuiEventNotification) { handleSuiEventNotification(player, (SuiEventNotification) (((GalacticPacketIntent) i).getPacket())); } } } + private void handleRadialMenuRequest(Player player, ObjectMenuRequest request) { + // TODO: Modify when object scripts are in to accept a createRadial definition for radials + System.out.println("handling radial menu : " + request.getTargetId()); + ObjectMenuResponse response = new ObjectMenuResponse(request.getTargetId(), request.getRequesterId(), request.getOptions(), request.getCounter()); + ObjectController controller = new ObjectController(244, player.getCreatureObject().getObjectId(), response); + + player.sendPacket(controller); + } + private void handleSuiWindowIntent(SuiWindowIntent i) { if (i.getEvent() == SuiWindowEvent.NEW) displayWindow(i.getPlayer(), i.getWindow());