internal void SendState(WebSocket client, byte p) { ToClient mess = new ToClient(); mess.action = 3; mess.changex = new List<int>(); mess.changey = new List<int>(); mess.changefig = new List<int>(); if (phase != PhaseType.Displacing) for (int i = 0; i < 14; i++) { for (int j = 0; j < 14; j++) { Fig fig = field[i, j]; if (fig.fig != FigType.Null) { mess.changex.Add(i); mess.changey.Add(j); if (p == 0) mess.changefig.Add((int)fig.fig + fig.player * 100); else { if (fig.player == p) { mess.changefig.Add((int)fig.fig); } else if (fig.player == 0) { mess.changefig.Add((int)FigType.Sinking); } else { mess.changefig.Add((int)FigType.Unknown); } } } } } Send(mess, client); PhaseChange(phase, player, p); lock (event_log) { foreach (Event evt in event_log) Send(new ToClient { action = 2, log = evt }, client); } }
public void AddPlayer(WebSocket player, byte p) { players[p - 1] = player; Send(new ToClient { action = 0, you = p }, p); player.p = (byte)(p - 1); player.onmessage = new WebSocket.OnMessage(ProcessRequest); player.onerror = new WebSocket.OnError(ConnectionError); SendState(players[p-1], p); }
public void AddViewer(WebSocket viewer) { viewers.Add(viewer); viewer.onerror = new WebSocket.OnError(ConnectionError); viewer.onmessage = new WebSocket.OnMessage(ProcessViewerRequest); Send(new ToClient { action = 0, you = 0 }, viewer); SendState(viewer, 0); }
private void Send(ToClient mess, WebSocket target) { string text = JsonConvert.SerializeObject(mess, Formatting.Indented, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore }); target.Send(text); }