24 #if _RAKNET_SUPPORT_TeamBalancer==1 
   26 #ifndef __TEAM_BALANCER_H 
   27 #define __TEAM_BALANCER_H 
   38 class RakPeerInterface;
 
   51 #define UNASSIGNED_TEAM_ID 255 
   72     void SetTeamSizeLimit(
TeamId team, 
unsigned short limit);
 
   86     void SetDefaultAssignmentAlgorithm(DefaultAssigmentAlgorithm daa);
 
   95     void SetForceEvenTeams(
bool force);
 
  102     void SetLockTeams(
bool lock);
 
  118     void CancelRequestSpecificTeam(
NetworkID memberId);
 
  163     void OnStatusUpdateToNewHost(
Packet *packet);
 
  164     void OnCancelTeamRequest(
Packet *packet);
 
  165     void OnRequestAnyTeam(
Packet *packet);
 
  166     void OnRequestSpecificTeam(
Packet *packet);
 
  179     unsigned int AddTeamMember(
const TeamMember &tm); 
 
  180     void RemoveTeamMember(
unsigned int index);
 
  181     void EvenTeams(
void);
 
  184     void SwitchMemberTeam(
unsigned int teamMemberIndex, 
TeamId destinationTeam);
 
  185     void NotifyTeamAssigment(
unsigned int teamMemberIndex);
 
  186     bool WeAreHost(
void) 
const;
 
  190     void GetMinMaxTeamMembers(
int &minMembersOnASingleTeam, 
int &maxMembersOnASingleTeam);
 
  191     TeamId GetNextDefaultTeam(
void); 
 
  192     bool TeamWouldBeOverpopulatedOnAddition(
TeamId teamId, 
unsigned int teamMemberSize); 
 
  193     bool TeamWouldBeUnderpopulatedOnLeave(
TeamId teamId, 
unsigned int teamMemberSize);
 
  194     TeamId GetSmallestNonFullTeam(
void) 
const;
 
  195     TeamId GetFirstNonFullTeam(
void) 
const;
 
  196     void MoveMemberThatWantsToJoinTeam(
TeamId teamId);
 
  197     TeamId MoveMemberThatWantsToJoinTeamInternal(
TeamId teamId);
 
  201     void SwapTeamMembersByRequest(
unsigned int memberIndex1, 
unsigned int memberIndex2);
 
  211 #endif // _RAKNET_SUPPORT_*