From 0b17a0b26e735da3ebcc682441d911fb0addd9a6 Mon Sep 17 00:00:00 2001 From: Seefo Date: Sun, 22 Jun 2014 03:25:53 -0400 Subject: [PATCH] Fixed container limits and added wearable coloring for admins --- scripts/radial/item/recolorable.py | 15 ++++++++ .../objects/tangible/TangibleObject.java | 3 +- src/services/sui/SUIService.java | 37 +++++++++++++++++++ 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 scripts/radial/item/recolorable.py diff --git a/scripts/radial/item/recolorable.py b/scripts/radial/item/recolorable.py new file mode 100644 index 00000000..bd13e64b --- /dev/null +++ b/scripts/radial/item/recolorable.py @@ -0,0 +1,15 @@ +from resources.common import RadialOptions +import sys + +def createRadial(core, owner, target, radials): + radials.add(RadialOptions(0, 98, 0, 'Modify primary color')) + radials.add(RadialOptions(0, 99, 0, 'Modify secondary color')) + return + +def handleSelection(core, owner, target, option): + if option == 98 and target: + core.suiService.sendColorPicker(owner, target, '/private/index_color_1') + if option == 99 and target: + core.suiService.sendColorPicker(owner, target, '/private/index_color_2') + return + \ No newline at end of file diff --git a/src/resources/objects/tangible/TangibleObject.java b/src/resources/objects/tangible/TangibleObject.java index 70c5957e..407ea38e 100644 --- a/src/resources/objects/tangible/TangibleObject.java +++ b/src/resources/objects/tangible/TangibleObject.java @@ -570,10 +570,11 @@ public class TangibleObject extends SWGObject implements Serializable { } public boolean isFull() { + if (getTemplateData().getAttribute("containerVolumeLimit") == null) return false; - int containerVolumeLimit = (int) getTemplateData().getAttribute("containerVolumeLimit") >> 8; // Shifting because it seems to be returning an extra byte before it should + int containerVolumeLimit = (int) getTemplateData().getAttribute("containerVolumeLimit"); if (containerVolumeLimit == 0 || getTemplate() == "object/tangible/inventory/shared_appearance_inventory.iff") // appearance inventory - issue #755 return false; diff --git a/src/services/sui/SUIService.java b/src/services/sui/SUIService.java index e031040a..ab354051 100644 --- a/src/services/sui/SUIService.java +++ b/src/services/sui/SUIService.java @@ -49,6 +49,7 @@ import resources.common.RadialOptions; import resources.loot.LootRollSession; import resources.objects.creature.CreatureObject; import resources.objects.harvester.HarvesterObject; +import resources.objects.tangible.TangibleObject; import services.sui.SUIWindow.SUICallback; import services.sui.SUIWindow.Trigger; import engine.clients.Client; @@ -144,6 +145,12 @@ public class SUIService implements INetworkDispatch { sendRadial(owner, target, request.getRadialOptions(), request.getRadialCount()); return; } + + if(target.getTemplate().contains("object/tangible/wearables") && ((CreatureObject)owner).hasAbility("admin")) + { + core.scriptService.callScript("scripts/radial/", "item/recolorable", "createRadial", core, owner, target, request.getRadialOptions()); + if(getRadialFilename(target).equals("default")) sendRadial(owner, target, request.getRadialOptions(), request.getRadialCount()); + } core.scriptService.callScript("scripts/radial/", getRadialFilename(target), "createRadial", core, owner, target, request.getRadialOptions()); if(getRadialFilename(target).equals("default")) @@ -185,6 +192,12 @@ public class SUIService implements INetworkDispatch { core.scriptService.callScript("scripts/radial/", "structure/moveable", "handleSelection", core, owner, target, objMenuSelect.getSelection()); return; } + + + if(target.getTemplate().contains("object/tangible/wearables") && ((CreatureObject)owner).hasAbility("admin")) + { + core.scriptService.callScript("scripts/radial/", "item/recolorable", "handleSelection", core, owner, target, objMenuSelect.getSelection()); + } core.scriptService.callScript("scripts/radial/", getRadialFilename(target), "handleSelection", core, owner, target, objMenuSelect.getSelection()); @@ -422,6 +435,30 @@ public class SUIService implements INetworkDispatch { return window; } + public void sendColorPicker(CreatureObject creature, TangibleObject target, String customizationType) + { + final SUIWindow suiWindow = core.suiService.createSUIWindow("Script.ColorPicker", creature, creature, 0); + + suiWindow.setProperty("bg.caption.lblTitle:Text", "@base_player:swg"); + suiWindow.setProperty("ColorPicker:TargetRangeMax", "500"); + suiWindow.setProperty("ColorPicker:TargetNetworkId", Long.toString(target.getObjectID())); + suiWindow.setProperty("ColorPicker:TargetVariable", customizationType); + + Vector returnList = new Vector(); + returnList.add("ColorPicker:SelectedIndex"); + + suiWindow.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() + { + public void process(SWGObject owner, int eventType, Vector returnList) + { + int index = Integer.parseInt(returnList.get(0)); + target.setCustomizationVariable(customizationType, (byte) index); + } + }); + + core.suiService.openSUIWindow(suiWindow); + } + public void closeSUIWindow(SWGObject owner, int id) { if(owner.getClient() == null || owner.getClient().getSession() == null)