mirror of
https://github.com/ProjectSWGCore/NGECore2.git
synced 2026-10-12 02:13:48 -04:00
Added ability to transfer leadership to another member in a Guild
This commit is contained in:
@@ -45,7 +45,7 @@ def createRadial(core, owner, target, radials):
|
||||
radials.add(RadialOptions(4, RadialOptions.serverGuildSponsored, 3, '@guild:menu_sponsored')) # Sponsored for Membership
|
||||
if owner.getObjectID() == guild.getLeader():
|
||||
radials.add(RadialOptions(4, 218, 3, '@guild:menu_member_motd')) # Create a Guild Message
|
||||
#radials.add(RadialOptions(4, 69, 3, '@guild:menu_leader_change')) # Transfer PA Leadership
|
||||
radials.add(RadialOptions(4, 69, 3, '@guild:menu_leader_change')) # Transfer PA Leadership
|
||||
return
|
||||
|
||||
return
|
||||
@@ -77,6 +77,7 @@ def handleSelection(core, owner, target, option):
|
||||
core.guildService.showDisbandConfirmWindow(owner, guild)
|
||||
return
|
||||
|
||||
# - Change Guild Name
|
||||
elif option == RadialOptions.serverGuildNameChange:
|
||||
core.guildService.handleChangeGuildName(owner, guild)
|
||||
return
|
||||
@@ -100,8 +101,10 @@ def handleSelection(core, owner, target, option):
|
||||
|
||||
# - Transfer PA Leadership
|
||||
elif option == 69:
|
||||
core.guildService.handleTransferLeadership(owner, guild)
|
||||
return
|
||||
|
||||
# - Change Message of the Day
|
||||
elif option == 218:
|
||||
core.guildService.handleChangeGuildMotd(owner, guild)
|
||||
return
|
||||
|
||||
@@ -41,6 +41,7 @@ public class Guild {
|
||||
private Map<Long, GuildMember> members = new HashMap<Long, GuildMember>();
|
||||
private Map<Long, String> sponsoredPlayers = new HashMap<Long, String>();
|
||||
private String motd = "";
|
||||
private boolean electionsEnabled = false;
|
||||
|
||||
public Guild(int id, String abbreviation, String name, SWGObject leader) {
|
||||
this.id = id;
|
||||
@@ -162,4 +163,12 @@ public class Guild {
|
||||
public GuildMember getMember(long objectID) {
|
||||
return members.get(objectID);
|
||||
}
|
||||
|
||||
public boolean isElectionsEnabled() {
|
||||
return electionsEnabled;
|
||||
}
|
||||
|
||||
public void setElectionsEnabled(boolean electionsEnabled) {
|
||||
this.electionsEnabled = electionsEnabled;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,9 +33,7 @@ public class GuildMember {
|
||||
private String rank = "";
|
||||
private String name = "";
|
||||
private String title = "";
|
||||
// TODO: These might have to be moved to a new GuildRank class depending on how permissions worked for NGE
|
||||
//this works for now... Lack of NGE Guild Rank guides makes re-creation difficult (Ranks introduced Game Update 8: http://swg.wikia.com/wiki/Game_Update_8)
|
||||
|
||||
|
||||
private Vector<String> permissions = new Vector<String>();
|
||||
private boolean mailPermission = false;
|
||||
private boolean sponsorPermission = false;
|
||||
|
||||
@@ -169,6 +169,71 @@ public class GuildService implements INetworkDispatch {
|
||||
return member;
|
||||
}
|
||||
|
||||
public void changeGuildLeader(Guild guild, CreatureObject formerLeaderCreo, CreatureObject newLeaderCreo, boolean elected) {
|
||||
GuildMember formerLeader = guild.getMember(formerLeaderCreo.getObjectID());
|
||||
|
||||
if (formerLeader == null)
|
||||
return;
|
||||
|
||||
GuildMember newLeader = guild.getMember(newLeaderCreo.getObjectID());
|
||||
|
||||
if (newLeader == null)
|
||||
return;
|
||||
|
||||
formerLeader.removeAllPermissions();
|
||||
newLeader.giveAllPermissions();
|
||||
|
||||
// TODO: Handling of guild PA Halls
|
||||
|
||||
guild.setLeader(newLeaderCreo.getObjectID());
|
||||
guild.setLeaderName(newLeaderCreo.getCustomName());
|
||||
|
||||
if (elected) {
|
||||
// TODO: Guild leader elections
|
||||
} else {
|
||||
formerLeaderCreo.sendSystemMessage("@guild:ml_success", DisplayType.Broadcast);
|
||||
newLeaderCreo.sendSystemMessage("@guild:ml_you_are_leader", DisplayType.Broadcast);
|
||||
guild.sendGuildMail(guild.getName(), "@guildmail:leaderchange_subject", new ProsePackage("@guildmail:leaderchange_text", "TU", newLeaderCreo.getCustomName()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void handleTransferLeadership(CreatureObject actor, Guild guild) {
|
||||
|
||||
SUIWindow transferWindow = core.suiService.createInputBox(InputBoxType.INPUT_BOX_OK_CANCEL, "@guild:make_leader_t", "@guild:make_leader_d", actor, null, 0,
|
||||
(owner, eventType, returnList) -> {
|
||||
String name = returnList.get(0);
|
||||
|
||||
if (name == "" || name == " ")
|
||||
return;
|
||||
|
||||
SWGObject transferTarget = core.chatService.getObjectByFirstName(name);
|
||||
|
||||
if (transferTarget == null) {
|
||||
actor.sendSystemMessage("@guild:ml_not_loaded", DisplayType.Broadcast);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!guild.getMembers().containsKey(transferTarget.getObjectID())) {
|
||||
actor.sendSystemMessage("@guild:ml_fail", DisplayType.Broadcast);
|
||||
return;
|
||||
}
|
||||
|
||||
if (actor.getPlanetId() != transferTarget.getPlanetId() || actor.getWorldPosition().getDistance2D(transferTarget.getWorldPosition()) > (float) 10) {
|
||||
actor.sendSystemMessage("@guild:ml_not_loaded", DisplayType.Broadcast);
|
||||
return;
|
||||
}
|
||||
|
||||
SUIWindow confirmTransferWindow = core.suiService.createMessageBox(MessageBoxType.MESSAGE_BOX_YES_NO, "@guild:make_leader_t", "@guild:make_leader_p", transferTarget, null, 0, (owner2, eventType2, returnList2) -> {
|
||||
changeGuildLeader(guild, actor, (CreatureObject) transferTarget, false);
|
||||
});
|
||||
core.suiService.openSUIWindow(confirmTransferWindow);
|
||||
|
||||
});
|
||||
|
||||
core.suiService.openSUIWindow(transferWindow);
|
||||
}
|
||||
|
||||
public void handleCreateGuildName(CreatureObject actor, SWGObject creationSource) {
|
||||
if (actor.getGuildId() != 0) { actor.sendSystemMessage("@guild:create_fail_in_guild", DisplayType.Broadcast); return; }
|
||||
|
||||
@@ -606,8 +671,6 @@ public class GuildService implements INetworkDispatch {
|
||||
core.suiService.openSUIWindow(window);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void handleGuildSponsorWindow(CreatureObject actor) {
|
||||
SUIWindow wndSponsorPlayer = core.suiService.createInputBox(InputBoxType.INPUT_BOX_OK_CANCEL, "@guild:sponsor_title", "@guild:sponsor_prompt", actor, null, (float) 10, (sponsor, eventType, returnList) -> {
|
||||
|
||||
@@ -660,7 +723,6 @@ public class GuildService implements INetworkDispatch {
|
||||
core.suiService.openSUIWindow(wndSponsorPlayer);
|
||||
}
|
||||
|
||||
|
||||
public void handleGuildDisband(CreatureObject actor, Guild guild) {
|
||||
|
||||
Map<Long, GuildMember> members = guild.getMembers();
|
||||
@@ -700,7 +762,6 @@ public class GuildService implements INetworkDispatch {
|
||||
removeGuild(guild.getId());
|
||||
}
|
||||
|
||||
|
||||
public void handleManageSponsoredPlayers(CreatureObject actor) {
|
||||
Guild guild = getGuildById(actor.getGuildId());
|
||||
|
||||
@@ -794,7 +855,6 @@ public class GuildService implements INetworkDispatch {
|
||||
core.chatService.sendPersistentMessageHeader(sponsoree.getClient(), declinedMail);
|
||||
}
|
||||
|
||||
|
||||
public void showKickConfirmWindow(CreatureObject actor, CreatureObject target, Guild guild) {
|
||||
|
||||
if (target.getObjectID() == guild.getLeader() && target.getObjectID() == actor.getObjectID()) {
|
||||
@@ -889,7 +949,6 @@ public class GuildService implements INetworkDispatch {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void sendMailToGuild(String sender, String subject, String message, int guildId) {
|
||||
Guild guild = getGuildById(guildId);
|
||||
|
||||
@@ -917,12 +976,10 @@ public class GuildService implements INetworkDispatch {
|
||||
target.getClient().getSession().write(roomMessage.serialize());
|
||||
}
|
||||
|
||||
|
||||
public GuildObject getGuildObject() {
|
||||
return object;
|
||||
}
|
||||
|
||||
|
||||
public SWGSet<String> getGuildList() {
|
||||
return object.getGuildList();
|
||||
}
|
||||
|
||||
@@ -384,6 +384,12 @@ public class SUIService implements INetworkDispatch {
|
||||
|
||||
}
|
||||
|
||||
public SUIWindow createMessageBox(int type, String title, String promptText, SWGObject owner, SWGObject rangeObject, float maxDistance, SUICallback handleFunc) {
|
||||
SUIWindow window = createMessageBox(type, title, promptText, owner, rangeObject, maxDistance);
|
||||
window.addHandler(0, "", Trigger.TRIGGER_OK, new Vector<String>(), handleFunc);
|
||||
return window;
|
||||
}
|
||||
|
||||
public SUIWindow createInputBox(int type, String title, String promptText, SWGObject owner, SWGObject rangeObject, float maxDistance) {
|
||||
SUIWindow window = createSUIWindow("Script.inputBox", owner, rangeObject, maxDistance);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user