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_*