Example #1
0
        static void StartGame()
        {
            if (!gameStarted) {
                gameStarted = true;

                map = Map.Load();

                Client[] loggedInClients;
                lock (clients) {
                    loggedInClients = clients.Where(c => c.IsLoggedIn).ToArray();
                }

                var players = new List<Player>();
                for (int i = 0; i < loggedInClients.Length; i++) {
                    var client = loggedInClients[i];

                    var player = new Player(Player.IdCounter++, 20, 20, 0, Player.icons.ElementAt(i));
                    players.Add(player);
                    client.Player = player;
                }

                Player[] playerArray = players.ToArray();

                State state = new State(null, map.MapToString(), null, playerArray);

                foreach (var client in loggedInClients) {
                    state.Player = client.Player;
                    string data = JsonConvert.SerializeObject(state);
                    Request(client, new Request(RequestStatus.START, DataType.JSON, data));
                }

                map.Changed += (map, changes) => {
                    UpdateState(changes);
                };

                map.Start(playerArray);
            }
        }