Added ability to transfer leadership to another member in a Guild

This commit is contained in:
Waverunner
2014-06-30 18:53:43 -04:00
parent 09db42757d
commit 60299183d7
5 changed files with 85 additions and 12 deletions
+65 -8
View File
@@ -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();
}