public Team(Color Color, string Name, Sprite CaptureIcon) { TeamId = CurrentTeamId; CurrentTeamId++; this.Color = Color; ProtectionColor = new Color(Color.r, Color.g, Color.b, 0.5f); HealthBar = new HealthBar(ExtraResources.BUNDLE, Name); Name = Name.ToLowerInvariant(); this.Name = Name; this.CaptureIcon = CaptureIcon; ColorFormat = $"[{Color.ToHexRGBA()}]"; var Arguments = new Dictionary <string, Func <string> > { { "%c", () => ColorFormat }, { "%w", () => LanguageManager.Get($"m.team.{Name}.whom") } }; _Enable = MakeTeamToggle(Name, "enable", Arguments, GROUP_TEAMS); _Enable.ValueChanged += (Sender, Args) => { if (!_Enable.GetValue()) { TeamAffinityController.TeamDisabled(this); } }; }
public static void AssignTeamsServer() { var Players = PlayerControl.AllPlayerControls.ToArray().Shuffle(); var TeamIndex = 0; var EnabledTeams = Teams.Where(Team => Team.Enable).ToList(); if (EnabledTeams.Count == 0) { throw new Exception("No teams enabled"); } if (Military.TeamAffinity.GetValue()) { var Affinities = TeamAffinityController.GetAffinities(); foreach (var(Team, TeamPlayers) in Affinities) { foreach (var Player in TeamPlayers.Select(PlayerTools.GetPlayerById)) { Team.Players.Add(Player); Player.Extra().SetTeam(Team); } } foreach (var Control in PlayerControl.AllPlayerControls) { var Extra = Control.Extra(); if (Extra.Team != null) { continue; } var Team = EnabledTeams[0]; Team.Players.Add(Control); Extra.SetTeam(Team); } TeamAffinityController.Reset(); } else { foreach (var Player in Players) { var CurrentTeam = EnabledTeams[TeamIndex]; TeamIndex = (TeamIndex + 1) % EnabledTeams.Count; CurrentTeam.Players.Add(Player); Player.Extra().SetTeam(CurrentTeam); } } foreach (var Team in Teams) { Team.AssignRoles(); } AssignTeamsAndRolesMessage.INSTANCE.Send(Teams); }
protected override void Handle() { TeamAffinityController.ReadSync(Reader); }