public ServerManager(GameCore.Game game) { gameController = game ?? throw new ArgumentNullException(nameof(game)); game.Started += new EventHandler((o, e) => { var shuffled = players.Shuffle(); for (int i = 0; i < shuffled.Length; i++) { shuffled[i].Value.Index = i; } ForEachClient(a => a.GameStart(new Size(game.Columns, game.Rows), prefabLimitDict, players.ToDictionary(b => b.Key, c => (c.Value.Index, color: c.Value.Color)))); }); game.PrefabPlaced += new EventHandler <GameCore.Game.EventArgsPrefab>((o, e) => { ForEachClient(a => a.Place(e.PlayerID, e.PrefabID, e.Location, e.Rotate)); }); game.PlayerChanged += new EventHandler((o, e) => { ForEachClient(a => a.ChangePlayer(game.CurrentPlayer)); }); }
void StartGame() { int index = 1; foreach (var item in players.Shuffle()) { item.Value.Index = index++; } int size = 5 + (players.Count * random.Next(4, 6)); gameSizeStart = new Size(size + random.Next(-5, 5), size + random.Next(-5, 5)); gameController = new GameCore.Game(); gameController.Prefabs.Set(standartPrefabLimit); gameController.Players.Set(players.ToDictionary(a => a.Value.Index, a => new Player(a.Value.Color))); gameController.Start(gameSizeStart.Width, gameSizeStart.Height); ForEachClient(a => a.ReadyTimer(0)); Thread.Sleep(200); ForEachClient(a => a.GameStart(gameSizeStart, standartPrefabLimit, players.ToDictionary(b => b.Key, c => (c.Value.Index, c.Value.Color)))); Console.WriteLine("GameStarted"); isGameRunning = true; }
public ClientManager(GameCore.Game game) { Game = game ?? throw new ArgumentNullException(nameof(game)); }