public void Run() { var messageGame = new MessageGame(); try { while (true) { NetworkStream n = tcpclient.GetStream(); var message = new BinaryReader(n).ReadString(); messageGame = messageGame.FromJson(message); Console.WriteLine("INPUT: " + message); myServer.Broadcast(this, message); } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { myServer.DisconnectClient(this); tcpclient.Close(); } }
private bool SetGameTemplate(MessageViewModel message, MessageGame game, string title) { Visibility = Visibility.Visible; FindName(nameof(ThumbRoot)); if (ThumbRoot != null) { ThumbRoot.Visibility = Visibility.Visible; } TitleLabel.Text = GetFromLabel(message, title); ServiceLabel.Text = $"\uD83C\uDFAE {game.Game.Title}"; MessageLabel.Text = string.Empty; ThumbRoot.CornerRadius = ThumbEllipse.CornerRadius = default(CornerRadius); var thumbnail = game.Game.Photo?.GetSmall(); if (thumbnail != null) { UpdateThumbnail(message, thumbnail); } return(true); }
private void SendPlayerList() { var list = new List <PlayerInfo>(); for (var i = 0; i < PlayerCount; i++) { var gamePlayer = GetPlayer(i); var pl = new PlayerInfo { Name = gamePlayer.User.Name, Picture = gamePlayer.User.Picture, PlayerNo = gamePlayer.PlayerNo, OnlineStatus = gamePlayer.Status }; list.Add(pl); } var msg = new MessageGame { Action = MessageAction.GameData, GameId = GameId, Body = new MessageGameBody { Code = MessageGameAction.PlayerList, Data = JToken.FromObject(list) } }; Broadcast(msg); }
// Use this for initialization void Start() { inputLocked = true; Instance = this; GenerateMessage(); FillContainers(); }
public void GameOver(MessageGame messageGame) { _mainWindow.Dispatcher.Invoke(_mainWindow.LockGameBoard); Info = messageGame.PlayerName + " Won the game!"; _mainWindow.Dispatcher.Invoke(_mainWindow.UpdateInfoBox); }
public void ResetRequest() { var messageReset = new MessageGame { MessageType = "ResetRequest" }; myClient.Send(messageReset); }
private void GetUserName() { var messageGame = new MessageGame { MessageType = "Auth", Text = "@UserName" }; myClient.Send(messageGame); }
public void Broadcast(ClientHandler client, string messageJson) { MessageGame messageGame = new MessageGame(); messageGame = messageGame.FromJson(messageJson); NetworkStream n = client.tcpclient.GetStream(); BinaryWriter w = new BinaryWriter(n); switch (messageGame.MessageType) { case "PlayerMove": game.Movehandler(messageGame); break; case "Auth": messageGame.MessageType = "AuthResponse"; if (client == clients[0]) { messageGame.PlayerName = "Player1"; messageJson = messageGame.ToJson(); w.Write(messageJson); w.Flush(); } else if (client == clients[1]) { messageGame.PlayerName = "Player2"; messageJson = messageGame.ToJson(); w.Write(messageJson); w.Flush(); game = new GameServer(this); game.StartGame(); } Console.WriteLine("AUTHoutput:" + messageJson); break; case "ResetRequest": //game.GameBoard = new int[7, 6]; //MessageGame messageReset = new MessageGame //{ // BoardState = game.GameBoard //}; //Broadcast(messageReset); game.InitiateBoard(); break; default: throw new ArgumentException(); } }
public void Broadcast(MessageGame messageGameToClients) { var messageToClientsJson = ""; foreach (var clientHandler in clients) { NetworkStream nTemp = clientHandler.tcpclient.GetStream(); BinaryWriter wTemp = new BinaryWriter(nTemp); messageToClientsJson = messageGameToClients.ToJson(); wTemp.Write(messageToClientsJson); wTemp.Flush(); } Console.WriteLine("GAMEoutput:" + messageToClientsJson); }
public void Start() { var msg = new MessageGame { Action = MessageAction.GameData, GameId = Game.GameId, Body = new MessageGameBody { Code = MessageGameAction.Started } }; Game.Broadcast(msg); }
public void SendMoveToServer(int[] coords) { var messageGame = new MessageGame { CoordX = coords[0], CoordY = coords[1], MessageType = "PlayerMove", PlayerName = UserName, IsFromServer = false }; myClient.Send(messageGame); _mainWindow.Dispatcher.Invoke(_mainWindow.LockGameBoard); }
public void Movehandler(MessageGame messageGame) { //!!! from server if (messageGame.GameOver && messageGame.IsFromServer) { //if we are here someone won Console.WriteLine($"{messageGame.PlayerName} won the game"); messageGame.MessageType = "GameOver"; _server.Broadcast(messageGame); } else if (!messageGame.IsFromServer) { CalculateMove(messageGame); } }
public void Listen() { MessageGame messageGame = new MessageGame { Version = 1 }; string message = ""; try { while (true) { NetworkStream n = client.GetStream(); message = new BinaryReader(n).ReadString(); messageGame = messageGame.FromJson(message); switch (messageGame.MessageType) { case "AuthResponse": _game.AuthResponse(messageGame); break; //case "GameReset": // _mainWindow.Dispatcher.Invoke(_mainWindow.ResetGame); //break; case "StartGame": _game.StartGame(messageGame); break; case "GameBoardUpdate": _game.UpdateGameBoard(messageGame); break; case "GameOver": _game.GameOver(messageGame); break; default: break; } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public void SendMoveToClients(MessageGame messageGame) { MessageGame messageGameToClients = new MessageGame { BoardState = GameBoard, MessageType = "GameBoardUpdate", IsFromServer = true, CoordX = -1, CoordY = -1, GameOver = false, Version = 1, Text = "@UpdateGameboard", PlayerName = messageGame.PlayerName }; _server.Broadcast(messageGameToClients); CheckWin(messageGame); }
public void StartGame(MessageGame messageGame) { GameBoard = messageGame.BoardState; _mainWindow.Dispatcher.Invoke(_mainWindow.LockGameBoard); if (messageGame.PlayerName == UserName) { //our turn _mainWindow.Dispatcher.Invoke(_mainWindow.UnlockGameBoard); Info = "Your turn"; } else { //not our turn Info = "Opponents turn"; } _mainWindow.Dispatcher.Invoke(_mainWindow.DrawBoard); _mainWindow.Dispatcher.Invoke(_mainWindow.UpdateInfoBox); }
public void UpdateGameBoard(MessageGame messageGame) { if (messageGame.IsFromServer) { GameBoard = messageGame.BoardState; _mainWindow.Dispatcher.Invoke(_mainWindow.DrawBoard); } if (messageGame.PlayerName != UserName) { _mainWindow.Dispatcher.Invoke(_mainWindow.UnlockGameBoard); Info = "Your turn"; } else { Info = "Opponents turn"; } _mainWindow.Dispatcher.Invoke(_mainWindow.UpdateInfoBox); }
private bool SetGameTemplate(MessageViewModel message, MessageGame game, string title) { Visibility = Visibility.Visible; ShowThumbnail(); SetTitle(GetFromLabel(message, title)); SetService($"\uD83C\uDFAE {game.Game.Title}"); SetMessage(string.Empty); var thumbnail = game.Game.Photo?.GetSmall(); if (thumbnail != null) { UpdateThumbnail(message, thumbnail); } return(true); }
private bool SetGameTemplate(MessageViewModel message, MessageGame game, string title) { Visibility = Visibility.Visible; FindName(nameof(ThumbRoot)); if (ThumbRoot != null) { ThumbRoot.Visibility = Visibility.Visible; } TitleLabel.Text = GetFromLabel(message, title); ServiceLabel.Text = $"🎮 {game.Game.Title}"; MessageLabel.Text = string.Empty; ThumbRoot.CornerRadius = ThumbEllipse.CornerRadius = default(CornerRadius); //ThumbImage.ImageSource = (ImageSource)DefaultPhotoConverter.Convert(gameMedia.Game.Photo, true); return(true); }
public void Send(MessageGame messageGame) { string message = ""; messageGame.Version = 1; message = messageGame.ToJson(); try { NetworkStream n = client.GetStream(); BinaryWriter w = new BinaryWriter(n); w.Write(message); w.Flush(); //client.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
private void TurnPlay() { _currentDice = new int[3]; _currentDice[0] = RandomUtils.Roll(); if (_currentDice[0] == 6) { _currentDice[1] = RandomUtils.Roll(); } repeat: if (_currentDice[1] == 6) { _currentDice[2] = RandomUtils.Roll(); } if (_currentDice[2] == 6) { goto repeat; } _currentDice = _currentDice.Where(c => c > 0).ToArray(); var msg = new MessageGame { Action = MessageAction.GameData, GameId = Game.GameId, Body = new MessageGameBody { Code = MessageGameAction.Turn, Data = new GameTurn { Dice = _currentDice, PlayerNo = _currentTurn, TimeOut = GameConst.PlayerTimeout } } }; Game.Broadcast(msg); }
public void CalculateMove(MessageGame messageGame) { int x = messageGame.CoordX; int y = messageGame.CoordY; if (GameBoard[x, y] != 0) { //client sent invalid pos throw new NotImplementedException(); } else { if (messageGame.PlayerName == "Player1") { GameBoard[x, y] = 1; } else if (messageGame.PlayerName == "Player2") { GameBoard[x, y] = 2; } //Skicka gameboard till p1 p2 SendMoveToClients(messageGame); } }
public void InitiateBoard() { for (int x = 0; x < GameBoard.GetLength(0); x++) { for (int y = 0; y < GameBoard.GetLength(1); y++) { GameBoard[x, y] = 0; } } //todo who goes first? MessageGame messageStartGame = new MessageGame { BoardState = GameBoard, GameOver = false, IsFromServer = true, MessageType = "StartGame", PlayerName = "Player1", Text = "Game Starts now Player 1 goes first", Version = 1 }; _server.Broadcast(messageStartGame); }
public void AuthResponse(MessageGame messageGame) { UserName = messageGame.PlayerName; _mainWindow.Dispatcher.Invoke(_mainWindow.UpdateInfoBox); }
public override void PlayerMessage(GamePlayer player, MessageGame message) { }
public static bool UpdateFile(this MessageGame game, File file) { return(game.Game.UpdateFile(file)); }
public void CheckWin(MessageGame messageGame) { //horizontal for (int y = 0; y <= 5; y++) { for (int x = 0; x <= 3; x++) { if (GameBoard[x, y] != 0 && GameBoard[x, y] == GameBoard[x + 1, y] && GameBoard[x, y] == GameBoard[x + 2, y] && GameBoard[x, y] == GameBoard[x + 3, y]) { //won Console.WriteLine("won"); messageGame.GameOver = true; } } } //vertical for (int y = 0; y <= 2; y++) { for (int x = 0; x <= 6; x++) { if (GameBoard[x, y] != 0 && GameBoard[x, y] == GameBoard[x, y + 1] && GameBoard[x, y] == GameBoard[x, y + 2] && GameBoard[x, y] == GameBoard[x, y + 3]) { //won Console.WriteLine("won"); messageGame.GameOver = true; } } } //diagonal falling to the left for (int y = 0; y <= 2; y++) { for (int x = 0; x <= 3; x++) { if (GameBoard[x, y] != 0 && GameBoard[x, y] == GameBoard[x + 1, y + 1] && GameBoard[x, y] == GameBoard[x + 2, y + 2] && GameBoard[x, y] == GameBoard[x + 3, y + 3]) { //won Console.WriteLine("won"); messageGame.GameOver = true; } } } //diagonal falling to the right for (int y = 0; y <= 2; y++) { for (int x = 3; x <= 6; x++) { if (GameBoard[x, y] != 0 && GameBoard[x, y] == GameBoard[x - 1, y + 1] && GameBoard[x, y] == GameBoard[x - 2, y + 2] && GameBoard[x, y] == GameBoard[x - 3, y + 3]) { //won Console.WriteLine("won"); messageGame.GameOver = true; } } } messageGame.IsFromServer = true; if (messageGame.IsFromServer && messageGame.GameOver) { Movehandler(messageGame); } }