Esempio n. 1
0
        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);
                }
            };
        }
Esempio n. 2
0
        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);
 }