private static void ProccesGameResult(Game.Result result, Server.Client a, Server.Client b, Server.Lobby lobby) { switch (result.type) { case Game.Result.Type.Ok: if (result.winner != null) { Console.WriteLine("winner: {0}", result.winner.name); } else { Console.WriteLine("tie {0} between {1}", a.name, b.name); } break; case Game.Result.Type.Error: Console.WriteLine("some error while playing"); if (a.client.Client.IsConnected() && !b.client.Client.IsConnected()) { Message.Util.Send(a.client.GetStream(), new Message.OpponentDisconnected()); } if (!a.client.Client.IsConnected() && b.client.Client.IsConnected()) { Message.Util.Send(b.client.GetStream(), new Message.OpponentDisconnected()); } break; } if (a.client.Client.IsConnected()) { lobby.Enter(a); } else { Console.WriteLine("{0} disconnected while playing", a); } if (b.client.Client.IsConnected()) { lobby.Enter(b); } else { Console.WriteLine("{0} disconnected while playing", b); } }
public void StartMatch(Client a, Client b) { Console.WriteLine("StartMatch({0}, {1})", a.name, b.name); a.symbol = Symbol.Circle; b.symbol = Symbol.Cross; Client[] players = new Client[2]; if (random.NextDouble() < 0.5) { players[0] = a; players[1] = b; } else { players[0] = b; players[1] = a; } Console.WriteLine("First player is: ({0})", players[0].name); Console.WriteLine("Sending startMatch to player {0}", a.name); bool sentOk = Message.Util.Send(a.client.GetStream(), new Message.StartMatch((int)a.symbol, Array.IndexOf(players, a))); Console.WriteLine("send result? {0}", sentOk); Console.WriteLine("Sending startMatch to player {0}", b.name); sentOk = Message.Util.Send(b.client.GetStream(), new Message.StartMatch((int)b.symbol, Array.IndexOf(players, b))); Console.WriteLine("send result? {0}", sentOk); Game.Game newMatch = new Game.Game(players); Game.Result matchResult = newMatch.Play(); GameOver(matchResult, a, b); }