static void UpdateState(Request request) { if (request.Status == RequestStatus.UPDATE_STATE && request.DataType == DataType.JSON) { state = JsonConvert.DeserializeObject<State>(request.Data); map.Update(state.Changes); if(!chatOpen) { Write(); } protocol.Send(new Response(ResponseStatus.OK)); } }
static void UpdateState(params StateChange[] changes) { var state = new State(null, null, changes, null); foreach (var client in clients.Where(c => c.IsLoggedIn)) { state.Player = client.Player; string data = JsonConvert.SerializeObject(state); Request(client, new Request(RequestStatus.UPDATE_STATE, DataType.JSON, data)); } }
static void StartGame(Request request) { if (request.Status == RequestStatus.START) { state = JsonConvert.DeserializeObject<State>(request.Data); map = Map.Load(state.MapString); Write(); gameStarted = true; protocol.Send(new Response(ResponseStatus.OK)); } }
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); } }