From 54cc7c3bcc79ea32ff1a9345fb7ca8aa9bc9111f Mon Sep 17 00:00:00 2001 From: Treeku Date: Fri, 21 Mar 2014 16:41:00 +0000 Subject: [PATCH] radialFilename comes from script func if possible This means any changes to the radial filename are retroactive. It'll check server templates for getRadialFilename(), if not found, it'll check the radial_filename attachment variable. --- src/services/sui/SUIService.java | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/services/sui/SUIService.java b/src/services/sui/SUIService.java index 95498f9b..e898c576 100644 --- a/src/services/sui/SUIService.java +++ b/src/services/sui/SUIService.java @@ -44,6 +44,7 @@ import protocol.swg.SUIUpdatePageMessage; import protocol.swg.objectControllerObjects.ObjectMenuRequest; import protocol.swg.objectControllerObjects.ObjectMenuResponse; +import resources.common.FileUtilities; import resources.common.ObjControllerOpcodes; import resources.common.Opcodes; import resources.common.RadialOptions; @@ -169,12 +170,26 @@ public class SUIService implements INetworkDispatch { } public String getRadialFilename(SWGObject object) { + String serverTemplate = ("scripts/" + object.getTemplate().split("shared_" , 2)[0].replace("shared_", "") + object.getTemplate().split("shared_" , 2)[1] + ".py"); + String radialFilename = "default"; - if(object.getAttachment("radial_filename") != null) - return (String) object.getAttachment("radial_filename"); - else - return "default"; + if (FileUtilities.doesFileExist(serverTemplate)) { + PyObject method = core.scriptService.getMethod("scripts/" + object.getTemplate().split("shared_" , 2)[0].replace("shared_", ""), object.getTemplate().split("shared_" , 2)[1].replace(".iff", ""), "getRadialFilename"); + + if (method != null && method.isCallable()) { + radialFilename = method.__call__().asString(); + + if (radialFilename == null || radialFilename.equals("")) { + radialFilename = "default"; + } + } + } + if (radialFilename.equals("default") && object.getAttachment("radial_filename") != null) { + radialFilename = (String) object.getAttachment("radial_filename"); + } + + return radialFilename; } public void sendRadial(SWGObject owner, SWGObject target, Vector radialOptions, byte radialCount) {