OpenRA.Mods.Common.Traits.EditorActorLayer.SyncMultiplayerCount C# (CSharp) Method

SyncMultiplayerCount() private method

private SyncMultiplayerCount ( ) : void
return void
        void SyncMultiplayerCount()
        {
            var newCount = previews.Count(p => p.Info.Name == "mpspawn");
            var mp = Players.Players.Where(p => p.Key.StartsWith("Multi")).ToList();
            foreach (var kv in mp)
            {
                var name = kv.Key;
                var index = int.Parse(name.Substring(5));

                if (index >= newCount)
                    Players.Players.Remove(name);
            }

            for (var index = 0; index < newCount; index++)
            {
                if (Players.Players.ContainsKey("Multi{0}".F(index)))
                    continue;

                var pr = new PlayerReference
                {
                    Name = "Multi{0}".F(index),
                    Faction = "Random",
                    Playable = true,
                    Enemies = new[] { "Creeps" }
                };

                Players.Players.Add(pr.Name, pr);
                worldRenderer.UpdatePalettesForPlayer(pr.Name, pr.Color, true);
            }

            var creeps = Players.Players.Keys.FirstOrDefault(p => p == "Creeps");
            if (!string.IsNullOrEmpty(creeps))
                Players.Players[creeps].Enemies = Players.Players.Keys.Where(p => !Players.Players[p].NonCombatant).ToArray();
        }