L1ChatParty.java :  » Game » l1j-tw-99nets » l1j » server » server » model » Java Open Source

Java Open Source » Game » l1j tw 99nets 
l1j tw 99nets » l1j » server » server » model » L1ChatParty.java
/**
 *                            License
 * THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS  
 * CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). 
 * THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW.  
 * ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR  
 * COPYRIGHT LAW IS PROHIBITED.
 * 
 * BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND  
 * AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE  
 * MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED 
 * HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
 * 
 */
package l1j.server.server.model;

import java.util.List;

import l1j.server.Config;
import l1j.server.server.model.Instance.L1PcInstance;
import l1j.server.server.serverpackets.S_ServerMessage;
import l1j.server.server.utils.collections.Lists;

// Referenced classes of package l1j.server.server.model:
// L1ChatParty

public class L1ChatParty {
  private final List<L1PcInstance> _membersList = Lists.newList();

  private L1PcInstance _leader = null;

  public void addMember(L1PcInstance pc) {
    if (pc == null) {
      throw new NullPointerException();
    }
    if (((_membersList.size() == Config.MAX_CHAT_PT) && !_leader.isGm()) || _membersList.contains(pc)) {
      return;
    }

    if (_membersList.isEmpty()) {
      // PT
      setLeader(pc);
    }

    _membersList.add(pc);
    pc.setChatParty(this);
  }

  private void removeMember(L1PcInstance pc) {
    if (!_membersList.contains(pc)) {
      return;
    }

    _membersList.remove(pc);
    pc.setChatParty(null);
  }

  public boolean isVacancy() {
    return _membersList.size() < Config.MAX_CHAT_PT;
  }

  public int getVacancy() {
    return Config.MAX_CHAT_PT - _membersList.size();
  }

  public boolean isMember(L1PcInstance pc) {
    return _membersList.contains(pc);
  }

  private void setLeader(L1PcInstance pc) {
    _leader = pc;
  }

  public L1PcInstance getLeader() {
    return _leader;
  }

  public boolean isLeader(L1PcInstance pc) {
    return pc.getId() == _leader.getId();
  }

  public String getMembersNameList() {
    String _result = new String("");
    for (L1PcInstance pc : _membersList) {
      _result = _result + pc.getName() + " ";
    }
    return _result;
  }

  private void breakup() {
    L1PcInstance[] members = getMembers();

    for (L1PcInstance member : members) {
      removeMember(member);
      member.sendPackets(new S_ServerMessage(418)); // 
    }
  }

  public void leaveMember(L1PcInstance pc) {
    L1PcInstance[] members = getMembers();
    if (isLeader(pc)) {
      // 
      breakup();
    }
    else {
      // 
      if (getNumOfMembers() == 2) {
        // 
        removeMember(pc);
        L1PcInstance leader = getLeader();
        removeMember(leader);

        sendLeftMessage(pc, pc);
        sendLeftMessage(leader, pc);
      }
      else {
        // 
        removeMember(pc);
        for (L1PcInstance member : members) {
          sendLeftMessage(member, pc);
        }
        sendLeftMessage(pc, pc);
      }
    }
  }

  public void kickMember(L1PcInstance pc) {
    if (getNumOfMembers() == 2) {
      // 
      removeMember(pc);
      L1PcInstance leader = getLeader();
      removeMember(leader);
    }
    else {
      // 
      removeMember(pc);
    }
    pc.sendPackets(new S_ServerMessage(419)); // 
  }

  public L1PcInstance[] getMembers() {
    return _membersList.toArray(new L1PcInstance[_membersList.size()]);
  }

  public int getNumOfMembers() {
    return _membersList.size();
  }

  private void sendLeftMessage(L1PcInstance sendTo, L1PcInstance left) {
    // %0
    sendTo.sendPackets(new S_ServerMessage(420, left.getName()));
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.