package javastory.channel.server; import java.util.LinkedList; import java.util.List; import javastory.channel.ChannelCharacter; import javastory.channel.maps.GameMap; import javastory.tools.packets.ChannelPackets; /** * Note for this class : GameCharacter reference must be removed immediately * after cpq or upon dc. * * @author Rob */ public class CarnivalParty { private List<ChannelCharacter> members = new LinkedList<ChannelCharacter>(); private final ChannelCharacter leader; private final byte team; private short availableCP = 0, totalCP = 0; private boolean winner = false; public CarnivalParty(final ChannelCharacter owner, final List<ChannelCharacter> members1, final byte team1) { this.leader = owner; this.members = members1; this.team = team1; for (final ChannelCharacter chr : this.members) { chr.setCarnivalParty(this); } } public final ChannelCharacter getLeader() { return this.leader; } public void addCP(final ChannelCharacter player, final int ammount) { this.totalCP += ammount; this.availableCP += ammount; player.addCP(ammount); } public int getTotalCP() { return this.totalCP; } public int getAvailableCP() { return this.availableCP; } public void useCP(final ChannelCharacter player, final int ammount) { this.availableCP -= ammount; player.useCP(ammount); } public List<ChannelCharacter> getMembers() { return this.members; } public int getTeam() { return this.team; } public void warp(final GameMap map, final String portalname) { for (final ChannelCharacter chr : this.members) { chr.changeMap(map, map.getPortal(portalname)); } } public void warp(final GameMap map, final int portalid) { for (final ChannelCharacter chr : this.members) { chr.changeMap(map, map.getPortal(portalid)); } } public boolean allInMap(final GameMap map) { boolean status = true; for (final ChannelCharacter chr : this.members) { if (chr.getMap() != map) { status = false; } } return status; } public void removeMember(final ChannelCharacter chr) { this.members.remove(chr); chr.setCarnivalParty(null); } public boolean isWinner() { return this.winner; } public void setWinner(final boolean status) { this.winner = status; } public void displayMatchResult() { final String effect = this.winner ? "quest/carnival/win" : "quest/carnival/lose"; for (final ChannelCharacter chr : this.members) { chr.getClient().write(ChannelPackets.showEffect(effect)); } } }