diff --git a/scripts/object/tangible/furniture/technical/guild_registry_initial.py b/scripts/object/tangible/furniture/technical/guild_registry_initial.py index ccad8904..25ce3c98 100644 --- a/scripts/object/tangible/furniture/technical/guild_registry_initial.py +++ b/scripts/object/tangible/furniture/technical/guild_registry_initial.py @@ -1,4 +1,5 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'object/guild_registry') return \ No newline at end of file diff --git a/scripts/radial/object/guild_registry.py b/scripts/radial/object/guild_registry.py new file mode 100644 index 00000000..d3fd23ae --- /dev/null +++ b/scripts/radial/object/guild_registry.py @@ -0,0 +1,57 @@ +from resources.common import RadialOptions +from services.sui.SUIService import InputBoxType +from java.util import Vector +from main import NGECore +import sys + +def createRadial(core, owner, target, radials): + + #radials.clear() + + if owner.getGuildId() == 0: + radials.add(RadialOptions(0, RadialOptions.serverGuildCreate, 3, '@guild:menu_create')) + return + + else: + radials.add(RadialOptions(0, RadialOptions.serverGuildGuildManagement, 3, '@guild:menu_guild_management')) + radials.add(RadialOptions(0, RadialOptions.serverGuildMemberManagement, 3, '@guild:menu_member_management')) + + #Guild Management + + radials.add(RadialOptions(3, RadialOptions.serverGuildDisband, 3, '@guild:menu_disband')) + + #Member Management + radials.add(RadialOptions(4, RadialOptions.serverGuildSponsor, 3, '@guild:menu_sponsor')) + return + + return + +def handleSelection(core, owner, target, option): + + # Create Guild + if option == 185 and target: + wndGuildCreate = core.suiService.createInputBox(InputBoxType.INPUT_BOX_OK_CANCEL, '@guild:create_name_title', '@guild:create_name_prompt', owner, owner, 0, handleGuildCreateName) + wndGuildCreate.setProperty("txtInput:MaxLength", "25"); + suiSvc.openSUIWindow(wndGuildCreate) + return + + return + +def handleGuildCreateName(owner, window, eventType, returnList): + + if eventType == 0: + guildName = str(returnList.get(0)) + if guildName is not None: + owner.setAttachment('guildName', guildName) + wndGuildInitials = NGECore().getInstance().suiService.createInputBox(InputBoxType.INPUT_BOX_OK, '@guild:create_abbrev_title', '@guild:create_abbrev_prompt', owner, owner, 0, doGuildCreate) + wndGuildInitials.setProperty("txtInput:MaxLength", "5"); + suiSvc.openSUIWindow(wndGuildInitials) + return + return + +def doGuildCreate(owner, window, eventType, returnList): + if eventType == 0: + guild = NGECore().getInstance().guildService.createGuild(str(returnList.get(0)), str(owner.getAttachment('guildName')), owner) + owner.setGuildId(guild.getId()) + return + return \ No newline at end of file diff --git a/src/main/NGECore.java b/src/main/NGECore.java index 5e6e0ceb..b6f5b8b7 100644 --- a/src/main/NGECore.java +++ b/src/main/NGECore.java @@ -86,7 +86,7 @@ import services.command.CombatCommand; import services.command.CommandService; import services.gcw.FactionService; import services.gcw.GCWService; -import services.guild.GuildService; +import services.GuildService; import services.LoginService; import services.map.MapService; import services.mission.MissionService; diff --git a/src/resources/guild/Guild.java b/src/resources/guild/Guild.java index b45d8dca..dca39876 100644 --- a/src/resources/guild/Guild.java +++ b/src/resources/guild/Guild.java @@ -22,6 +22,7 @@ package resources.guild; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; import org.apache.mina.core.buffer.IoBuffer; @@ -35,15 +36,17 @@ public class Guild extends Delta implements Serializable { private int id; private String abbreviation; private String name; - private SWGObject leader; - private List members; + private long leader; + private String leaderName; + private List members = new ArrayList(); public Guild(int id, String abbreviation, String name, SWGObject leader) { this.id = id; this.abbreviation = abbreviation; this.name = name; - this.leader = leader; - this.members.add(leader); + this.leader = leader.getObjectID(); + this.leaderName = leader.getCustomName(); + this.members.add(leader.getObjectID()); } public Guild() { @@ -90,22 +93,34 @@ public class Guild extends Delta implements Serializable { return (Integer.toString(getId()) + ":" + getAbbreviation()); } - public SWGObject getLeader() { + public long getLeader() { synchronized(objectMutex) { return leader; } } - public void setLeader(SWGObject leader) { + public void setLeader(long leader) { synchronized(objectMutex) { this.leader = leader; } } - public List getMembers() { + public List getMembers() { return members; } + public String getLeaderName() { + synchronized(objectMutex) { + return leaderName; + } + } + + public void setLeaderName(String leaderName) { + synchronized(objectMutex) { + this.leaderName = leaderName; + } + } + public byte[] getBytes() { synchronized(objectMutex) { IoBuffer buffer = createBuffer((getString().length() + 2)); diff --git a/src/services/DevService.java b/src/services/DevService.java index 7b79dcfe..68c616a7 100644 --- a/src/services/DevService.java +++ b/src/services/DevService.java @@ -88,10 +88,14 @@ public class DevService implements INetworkDispatch { suiOptions.put((long) 26, "Installations"); suiOptions.put((long) 110, "Survey Devices"); if(creature.getPlayerObject().getProfession().equals("bounty_hunter_1a")) suiOptions.put((long) 123, "Tracking Droids"); - if(creature.getClient().isGM()) suiOptions.put((long) 120, "House Deeds"); - if(creature.getClient().isGM()) suiOptions.put((long) 125, "Crafting Tools"); - if(creature.getClient().isGM()) suiOptions.put((long) 130, "Vehicle Deeds"); - if(creature.getClient().isGM()) suiOptions.put((long) 121, "Sandbox City"); + if (creature.getClient().isGM()) { + suiOptions.put((long) 120, "House Deeds"); + suiOptions.put((long) 125, "Crafting Tools"); + suiOptions.put((long) 130, "Vehicle Deeds"); + suiOptions.put((long) 121, "Sandbox City"); + suiOptions.put((long) 140, "Guild Registry Device (PDA)"); + } + break; case 3: // [Items] Weapons suiOptions.put((long) 30, "Jedi Weapons"); @@ -1263,6 +1267,11 @@ public class DevService implements INetworkDispatch { inventory.add(swoopDeed); inventory.add(av21deed); return; + + case 140: + TangibleObject guildRegistry = (TangibleObject) core.objectService.createObject("object/tangible/furniture/technical/shared_guild_registry_initial.iff", planet); + inventory.add(guildRegistry); + return; } } }); diff --git a/src/services/guild/GuildService.java b/src/services/GuildService.java similarity index 93% rename from src/services/guild/GuildService.java rename to src/services/GuildService.java index 3197e9e1..3aabe151 100644 --- a/src/services/guild/GuildService.java +++ b/src/services/GuildService.java @@ -19,7 +19,7 @@ * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. ******************************************************************************/ -package services.guild; +package services; import java.util.Map; @@ -55,15 +55,9 @@ public class GuildService implements INetworkDispatch { if (leader == null) return null; - - int id = 0; - if (object.getGuildList().size() < 1) { - id = 0; - } else { - id = ((object.getGuildList().get(object.getGuildList().size()).getId() + 1)); - } - Guild guild = new Guild(id, abbreviation, name, leader); + int listSize = object.getGuildList().size(); + Guild guild = new Guild((listSize == 0 ? 1 : (object.getGuildList().get(listSize).getId()) + 1), abbreviation, name, leader); object.getGuildList().add(guild);