Added GuildMember class for handling member specific variables, changed sponsoring to use GuildMember

This commit is contained in:
Waverunner
2014-05-23 18:21:50 -04:00
parent f4947d4a33
commit 31fb79b406
6 changed files with 286 additions and 52 deletions
+51 -12
View File
@@ -5,7 +5,8 @@ from main import NGECore
import sys
def createRadial(core, owner, target, radials):
# http://i293.photobucket.com/albums/mm62/cebot/radial.jpg
#radials.clear()
if owner.getGuildId() != 0:
@@ -15,30 +16,50 @@ def createRadial(core, owner, target, radials):
if guild is None:
return
member = guild.getMember(owner.getObjectID())
# TODO: Add List of Guilds radial option
# TODO: Add List of Guild Wars radial option http://i293.photobucket.com/albums/mm62/cebot/wars.jpg << List of Guild Wars
radials.add(RadialOptions(0, RadialOptions.serverGuildGuildManagement, 3, '@guild:menu_guild_management')) # Guild Management
radials.add(RadialOptions(0, RadialOptions.serverGuildMemberManagement, 3, '@guild:menu_member_management')) # Member Management
# Guild Management
radials.add(RadialOptions(0, RadialOptions.serverGuildInfo, 3, '@guild:menu_info')) # Guild Information
radials.add(RadialOptions(3, RadialOptions.serverGuildInfo, 3, '@guild:menu_info')) # Guild Information
#radials.add(RadialOptions(3, RadialOptions.serverGuildEnemies, 3, '@guild:menu_enemies')) # Guild Enemies
# TODO: Add Rank List
# TODO: Add Rank Summary
#if member.hasDisbandPermission():
#radials.add(RadialOptions(3, RadialOptions.serverGuildDisband, 3, '@guild:menu_disband')) # Disband Guild
#if member.hasChangeNamePermission():
#radials.add(RadialOptions(3, RadialOptions.serverGuildNameChange, 3, '@guild:menu_namechange'))
#if owner.getObjectID() == guild.getLeader():
#radials.add(RadialOptions(4, RadialOptions.serverTerminalPermissions, 3, '@guild:menu_permission_list')) # Permission List
# Member Management
# - Sponsor options
if guild.getSponsers().contains(owner.getObjectID()):
#radials.add(RadialOptions(4, RadialOptions.serverGuildMembers, 3, '@guild:menu_members')) # Guild Members
if member.hasSponsorPermission():
radials.add(RadialOptions(4, RadialOptions.serverGuildSponsor, 3, '@guild:menu_sponsor')) # Sponsor for Membership
if guild.getSponsoredPlayers().size() > 0:
radials.add(RadialOptions(4, RadialOptions.serverGuildSponsored, 3, '@guild:menu_sponsored')) # Sponsored for Membership
if member.hasAcceptPermission() and guild.getSponsoredPlayers().size() > 0:
radials.add(RadialOptions(4, RadialOptions.serverGuildSponsored, 3, '@guild:menu_sponsored')) # Sponsored for Membership
#if owner.getObjectID() == guild.getLeader():
#radials.add(RadialOptions(4, 69, 3, '@guild:menu_leader_change')) # Transfer PA Leadership
return
return
def handleSelection(core, owner, target, option):
guild = core.guildService.getGuildById(owner.getGuildId())
if guild is None:
return
# Guild Management
# - Guild Info
if option == RadialOptions.serverGuildInfo:
guild = core.guildService.getGuildById(owner.getGuildId())
guildInfoPrompt = "Guild Name: " + guild.getName() + "\n" + \
"(neutral)\n" + \
"Guild Abbreviation: " + guild.getAbbreviation() + "\n" + \
@@ -50,11 +71,29 @@ def handleSelection(core, owner, target, option):
core.suiService.openSUIWindow(wndGuildInfo)
return
# Member Management
# - Guild Members
elif option == RadialOptions.serverGuildMembers:
return
# - Sponsor for Membership
elif option == RadialOptions.serverGuildSponsor:
core.guildService.handleGuildSponsor(owner)
return
# - Sponsored for Membership
elif option == RadialOptions.serverGuildSponsored:
core.guildService.handleManageSponsoredPlayers(owner)
return
# - Permission List
elif option == RadialOptions.serverTerminalPermissions:
core.guildService.handleGuildPermissionList()
return
# - Transfer PA Leadership
elif option == 69:
return
return
+3 -2
View File
@@ -43,7 +43,8 @@ def doGuildCreate(owner, window, eventType, returnList):
core = NGECore().getInstance()
if eventType == 0:
guild = core.guildService.createGuild(str(returnList.get(0)), str(owner.getAttachment('guildName')), owner)
core.guildService.joinGuild(guild, owner, None)
guild.getSponsers().add(owner.getObjectID())
member = core.guildService.joinGuild(guild, owner, None)
if member is not None:
member.giveAllPermissions()
return
return
+31 -32
View File
@@ -45,10 +45,8 @@ public class Guild extends Delta implements Serializable, Comparable<Guild> {
private String name;
private long leader;
private String leaderName;
private List<Long> members = new ArrayList<Long>();
private List<Long> sponsors = new ArrayList<Long>();
private Map<Long, GuildMember> members = new HashMap<Long, GuildMember>();
private Map<Long, String> sponsoredPlayers = new HashMap<Long, String>();
public Guild(int id, String abbreviation, String name, SWGObject leader) {
this.id = id;
this.abbreviation = abbreviation;
@@ -59,8 +57,32 @@ public class Guild extends Delta implements Serializable, Comparable<Guild> {
//this.sponsors.add(leader.getObjectID());
}
public Guild() {
public Guild() { }
public GuildMember addMember(long member) {
GuildMember permissions = new GuildMember();
members.put(member, permissions);
return permissions;
}
public void sendGuildMail(String sender, String subject, String message) {
NGECore core = NGECore.getInstance();
Date date = new Date();
members.forEach((id, member) -> {
Mail guildMail = new Mail();
guildMail.setMailId(core.chatService.generateMailId());
guildMail.setTimeStamp((int) date.getTime());
guildMail.setRecieverId(id);
guildMail.setStatus(Mail.NEW);
guildMail.setMessage(message);
guildMail.setSubject(subject);
guildMail.setSenderName(sender);
core.chatService.storePersistentMessage(guildMail);
if (core.objectService.getObject(id) != null) {
core.chatService.sendPersistentMessageHeader(core.objectService.getObject(id).getClient(), guildMail);
}
});
}
public int getId() {
@@ -123,7 +145,7 @@ public class Guild extends Delta implements Serializable, Comparable<Guild> {
}
}
public List<Long> getMembers() {
public Map<Long, GuildMember> getMembers() {
return members;
}
@@ -139,14 +161,6 @@ public class Guild extends Delta implements Serializable, Comparable<Guild> {
}
}
public List<Long> getSponsers() {
return sponsors;
}
public void setSponsors(List<Long> sponsors) {
this.sponsors = sponsors;
}
public Map<Long, String> getSponsoredPlayers() {
return sponsoredPlayers;
}
@@ -155,25 +169,10 @@ public class Guild extends Delta implements Serializable, Comparable<Guild> {
this.sponsoredPlayers = sponsoredPlayers;
}
public void sendGuildMail(String sender, String subject, String message) {
NGECore core = NGECore.getInstance();
Date date = new Date();
members.forEach(member -> {
Mail guildMail = new Mail();
guildMail.setMailId(core.chatService.generateMailId());
guildMail.setTimeStamp((int) date.getTime());
guildMail.setRecieverId(member);
guildMail.setStatus(Mail.NEW);
guildMail.setMessage(message);
guildMail.setSubject(subject);
guildMail.setSenderName(sender);
core.chatService.storePersistentMessage(guildMail);
if (core.objectService.getObject(member) != null) {
core.chatService.sendPersistentMessageHeader(core.objectService.getObject(member).getClient(), guildMail);
}
});
public GuildMember getMember(long objectID) {
return members.get(objectID);
}
public byte[] getBytes() {
synchronized(objectMutex) {
IoBuffer buffer = createBuffer((getString().length() + 2));
+187
View File
@@ -0,0 +1,187 @@
/*******************************************************************************
* Copyright (c) 2013 <Project SWG>
*
* This File is part of NGECore2.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* 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 resources.guild;
import java.util.HashMap;
import java.util.Map;
public class GuildMember {
private long objectId;
private long joinTime;
// 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 boolean mailPermission = false;
private boolean sponsorPermission = false;
private boolean titlePermission = false;
private boolean kickPermission = false;
private boolean acceptPermission = false;
private boolean warPermission = false;
private boolean changeNamePermission = false;
private boolean disbandPermission = false;
public GuildMember() { }
public GuildMember(long objectId) {
this.objectId = objectId;
this.joinTime = System.currentTimeMillis();
}
public void removeAllPermissions() {
this.mailPermission = false;
this.sponsorPermission = false;
this.titlePermission = false;
this.kickPermission = false;
this.acceptPermission = false;
this.warPermission = false;
this.changeNamePermission = false;
this.disbandPermission = false;
}
public void giveAllPermissions() {
this.mailPermission = true;
this.sponsorPermission = true;
this.titlePermission = true;
this.kickPermission = true;
this.acceptPermission = true;
this.warPermission = true;
this.changeNamePermission = true;
this.disbandPermission = true;
}
public long getObjectId() {
return objectId;
}
public void setObjectId(long objectId) {
this.objectId = objectId;
}
public long getJoinTime() {
return joinTime;
}
public void setJoinTime(long joinTime) {
this.joinTime = joinTime;
}
public boolean hasMailPermission() {
return mailPermission;
}
public void setMailPermission(boolean mailPermission) {
this.mailPermission = mailPermission;
}
public boolean hasSponsorPermission() {
return sponsorPermission;
}
public void setSponsorPermission(boolean sponsorPermission) {
this.sponsorPermission = sponsorPermission;
}
public boolean hasTitlePermission() {
return titlePermission;
}
public void setTitlePermission(boolean titlePermission) {
this.titlePermission = titlePermission;
}
public boolean hasKickPermission() {
return kickPermission;
}
public void setKickPermission(boolean kickPermission) {
this.kickPermission = kickPermission;
}
public boolean hasAcceptPermission() {
return acceptPermission;
}
public void setAcceptPermission(boolean acceptPermission) {
this.acceptPermission = acceptPermission;
}
public boolean hasWarPermission() {
return warPermission;
}
public void setWarPermission(boolean warPermission) {
this.warPermission = warPermission;
}
public boolean hasChangeNamePermission() {
return changeNamePermission;
}
public void setChangeNamePermission(boolean changeNamePermission) {
this.changeNamePermission = changeNamePermission;
}
public boolean hasDisbandPermission() {
return disbandPermission;
}
public void setDisbandPermission(boolean disbandPermission) {
this.disbandPermission = disbandPermission;
}
public Map<Long, String> getAllPermissions() {
Map<Long, String> permissions = new HashMap<Long, String>();
permissions.put((long) 1, "@guild:permission_mail");
permissions.put((long) 3, "@guild:permission_sponsor");
permissions.put((long) 5, "@guild:permission_title");
permissions.put((long) 7, "@guild:permission_accept");
permissions.put((long) 9, "@guild:permission_kick");
permissions.put((long) 11, "@guild:permission_war");
permissions.put((long) 13, "@guild:permission_namechange");
permissions.put((long) 15, "@guild:permission_disband");
if (hasMailPermission())
permissions.put((long) 2, "@guild:permission_mail_yes");
else
permissions.put((long) 2, "@guild:permission_mail_no");
if (hasSponsorPermission())
permissions.put((long) 4, "@guild:permission_sponsor_yes");
else
permissions.put((long) 4, "@guild:permission_sponsor_no");
if (hasTitlePermission())
permissions.put((long) 6, "@guild:permission_title_yes");
else
permissions.put((long) 6, "@guild:permission_title_no");
if (hasAcceptPermission())
permissions.put((long) 8, "@guild:permission_accept_yes");
else
permissions.put((long) 8, "@guild:permission_accept_no");
if (hasKickPermission())
permissions.put((long) 10, "@guild:permission_kick_yes");
else
permissions.put((long) 10, "@guild:permission_kick_no");
if (hasWarPermission())
permissions.put((long) 12, "@guild:permission_war_yes");
else
permissions.put((long) 12, "@guild:permission_war_no");
if (hasChangeNamePermission())
permissions.put((long) 14, "@guild:permission_namechange_yes");
else
permissions.put((long) 14, "@guild:permission_namechange_no");
if (hasDisbandPermission())
permissions.put((long) 16, "@guild:permission_disband_yes");
else
permissions.put((long) 16, "@guild:permission_disband_no");
return permissions;
}
}
+13 -5
View File
@@ -29,6 +29,7 @@ import java.util.Vector;
import resources.common.OutOfBand;
import resources.datatables.DisplayType;
import resources.guild.Guild;
import resources.guild.GuildMember;
import resources.objects.SWGSet;
import resources.objects.creature.CreatureObject;
import resources.objects.guild.GuildObject;
@@ -84,12 +85,14 @@ public class GuildService implements INetworkDispatch {
return guild;
}
public void joinGuild(Guild guild, CreatureObject joinee, CreatureObject acceptor) {
public GuildMember joinGuild(Guild guild, CreatureObject joinee, CreatureObject acceptor) {
GuildMember member = null;
PlayerObject ghost = joinee.getPlayerObject();
if (ghost == null)
return;
return member;
member = guild.addMember(joinee.getObjectID());
guild.getMembers().add(joinee.getObjectID());
joinee.setGuildId(guild.getId());
guild.getSponsoredPlayers().remove(joinee.getObjectID());
@@ -129,6 +132,11 @@ public class GuildService implements INetworkDispatch {
}
});
}
return member;
}
public void handleGuildPermissionList(CreatureObject actor, Guild guild) {
}
public void handleGuildSponsor(CreatureObject actor) {
@@ -174,7 +182,7 @@ public class GuildService implements INetworkDispatch {
actor.sendSystemMessage(OutOfBand.ProsePackage("@guild:sponsor_self", "TU", cOwner.getCustomName(), "TT", guild.getName()), DisplayType.Broadcast);
((CreatureObject)cOwner).sendSystemMessage(OutOfBand.ProsePackage("@guild:sponsor_target", "TT", guild.getName(), "TU", actor.getCustomName()), DisplayType.Broadcast);
guild.sendGuildMail(guild.getName(), "@guildmail:sponsor_subject", new Stf("@guild:sponsor_text").getStfValue().replace("%TU", actor.getCustomName()).replace("%TT", cOwner.getCustomName()));
guild.sendGuildMail(guild.getName(), "@guildmail:sponsor_subject", new Stf("@guildmail:sponsor_text").getStfValue().replace("%TU", actor.getCustomName()).replace("%TT", cOwner.getCustomName()));
});
core.suiService.openSUIWindow(wndSponsoredConfirm);
@@ -259,7 +267,7 @@ public class GuildService implements INetworkDispatch {
public void handleGuildDeclineSponsorship(Guild guild, CreatureObject actor, CreatureObject sponsoree) {
guild.getSponsoredPlayers().remove(sponsoree.getObjectID());
guild.sendGuildMail(guild.getName(), "@guildmail:decline_subject", new Stf("@guildmail:decline_text").getStfValue().replace("%TU", actor.getCustomName()).replace("%TO", sponsoree.getCustomName()));
guild.sendGuildMail(guild.getName(), "@guildmail:decline_subject", new Stf("@guildmail:decline_text").getStfValue().replace("%TU", actor.getCustomName()).replace("%TT", sponsoree.getCustomName()));
Mail declinedMail = new Mail();
declinedMail.setMailId(core.chatService.generateMailId());
+1 -1
View File
@@ -262,7 +262,7 @@ public class ChatService implements INetworkDispatch {
if(sender == null)
return;
// TODO: Recipient handling for values: citizens, group, guild, guild ranks (ace, boot, admiral, etc.) - Nulls at this point atm
SWGObject recipient = getObjectByFirstName(packet.getRecipient());
PlayerObject recipientGhost = (PlayerObject) recipient.getSlottedObject("ghost");