public void Consume() { while (true) { RefreshGameBoard gameboard = null; lock (myQueue) { while (myQueue.Count == 0) { Monitor.Wait(myQueue); } if (myQueue.Count > 0) { try { gameboard = JsonConvert.DeserializeObject <RefreshGameBoard>(myQueue.First()); myQueue.RemoveAt(0); } catch (Exception) { myQueue.RemoveRange(0, myQueue.Count); } } } if (gameboard != null) { form.PrintGameBoard(gameboard.players); } } }
public RefreshGameBoard MoveLogic(Player player, Move move) { switch (move.direction) { case Enums.direction.Up: if (player.y > 0) { player.y--; } break; case Enums.direction.Down: if (player.y < 9) { player.y++; } break; case Enums.direction.Left: if (player.x > 0) { player.x--; } break; case Enums.direction.Right: if (player.x < 9) { player.x++; } break; default: break; } RefreshGameBoard x = new RefreshGameBoard(players); return(x); }
public void Run() { try { string message = ""; while (tcpclient.Connected) { NetworkStream n = tcpclient.GetStream(); // Slipp Patrik /*if ((IPAddress)tcpclient.Client.RemoteEndPoint() == "127.0.0.1") * { * tcpclient.Close(); * }*/ message = new BinaryReader(n).ReadString(); Message msg = JsonConvert.DeserializeObject <Message>(message); switch (msg.type) { case "Move": Move myMove = JsonConvert.DeserializeObject <Move>(message); RefreshGameBoard result = myServer.MoveLogic(thisPlayer, myMove); string json = JsonConvert.SerializeObject(result); myServer.Broadcast(this, json); break; case "SetUserName": SetUserName username = JsonConvert.DeserializeObject <SetUserName>(message); thisPlayer = new Player(5, 5, 4 /*username.username*/); myServer.players.Add(thisPlayer); RefreshGameBoard currentGameBoard = new RefreshGameBoard(myServer.players); string currentGameBoardJson = JsonConvert.SerializeObject(currentGameBoard); myServer.Broadcast(this, currentGameBoardJson); break; case "SetUserImage": SetUserImage userImage = JsonConvert.DeserializeObject <SetUserImage>(message); thisPlayer = new Player(5, 5, userImage.userImageIndex /*username.username*/); myServer.players.Add(thisPlayer); RefreshGameBoard refreshedGameBoard = new RefreshGameBoard(myServer.players); string refreshedGameBoardJson = JsonConvert.SerializeObject(refreshedGameBoard); myServer.Broadcast(this, refreshedGameBoardJson); break; default: // ++ i failed attemps vid 5 failures addera ip till shitlist. break; } Debug.WriteLine(message); } } catch (Exception ex) { Debug.WriteLine("Här är vårt message: " + ex.Message); } finally { myServer.players.Remove(thisPlayer); myServer.clients.Remove(this); //myServer.DisconnectClient(this); tcpclient.Close(); RefreshGameBoard refreshedGameBoard = new RefreshGameBoard(myServer.players); string refreshedGameBoardJson = JsonConvert.SerializeObject(refreshedGameBoard); myServer.Broadcast(this, refreshedGameBoardJson); } }