public MarsGroupMember AddGroupMember(CombatInfo combatInfo) {
   MarsGroupMember newMember = new MarsGroupMember(combatInfo, this.getOid());
   _groupMembers.put(newMember.getOid(), newMember);
   combatInfo.setGroupOid(this.GetGroupOid());
   combatInfo.setGroupMemberOid(newMember.getOid());
   GroupClient.SendGroupEventMessage(
       GroupClient.GroupEventType.JOINED, this, combatInfo.getOwnerOid());
   return newMember;
 }
 public void SetGroupLeaderOid(long value) {
   _groupLeaderOid = value;
   if (value > 0)
     GroupClient.SendGroupEventMessage(GroupClient.GroupEventType.LEADERCHANGED, this, value);
   // Default to remaining person until group is cleaned up and removed
   if (_groupMembers.size() == 1) {
     List<MarsGroupMember> groupMembers = new ArrayList<MarsGroupMember>(_groupMembers.values());
     _groupLeaderOid = groupMembers.get(0).GetGroupMemberOid();
   }
 }
 public void RemoveGroupMember(CombatInfo combatInfo) {
   GroupClient.SendGroupEventMessage(
       GroupClient.GroupEventType.LEFT, this, combatInfo.getOwnerOid());
   _groupMembers.remove(combatInfo.getGroupMemberOid());
   combatInfo.setGroupMemberOid(0);
   combatInfo.setGroupOid(0);
   // If no more members are in the group, then group is disolving and we need to clean up the
   // voice group
   if (_groupMembers.size() == 0) RemoveVoiceGroup();
 }