Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 // Use this for initialization
 void Start()
 {
     inputLocked = true;
     Instance    = this;
     GenerateMessage();
     FillContainers();
 }
Ejemplo n.º 5
0
        public void GameOver(MessageGame messageGame)
        {
            _mainWindow.Dispatcher.Invoke(_mainWindow.LockGameBoard);

            Info = messageGame.PlayerName + " Won the game!";
            _mainWindow.Dispatcher.Invoke(_mainWindow.UpdateInfoBox);
        }
Ejemplo n.º 6
0
        public void ResetRequest()
        {
            var messageReset = new MessageGame
            {
                MessageType = "ResetRequest"
            };

            myClient.Send(messageReset);
        }
Ejemplo n.º 7
0
        private void GetUserName()
        {
            var messageGame = new MessageGame
            {
                MessageType = "Auth",
                Text        = "@UserName"
            };

            myClient.Send(messageGame);
        }
Ejemplo n.º 8
0
        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();
            }
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        public void Start()
        {
            var msg = new MessageGame
            {
                Action = MessageAction.GameData,
                GameId = Game.GameId,
                Body   = new MessageGameBody
                {
                    Code = MessageGameAction.Started
                }
            };

            Game.Broadcast(msg);
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
 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);
     }
 }
Ejemplo n.º 13
0
        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);
            }
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
 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);
 }
Ejemplo n.º 16
0
 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);
 }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 18
0
        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);
        }
Ejemplo n.º 19
0
        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);
            }
        }
Ejemplo n.º 20
0
        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);
        }
Ejemplo n.º 21
0
        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);
            }
        }
Ejemplo n.º 22
0
        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);
        }
Ejemplo n.º 23
0
 public void AuthResponse(MessageGame messageGame)
 {
     UserName = messageGame.PlayerName;
     _mainWindow.Dispatcher.Invoke(_mainWindow.UpdateInfoBox);
 }
Ejemplo n.º 24
0
 public override void PlayerMessage(GamePlayer player, MessageGame message)
 {
 }
 public static bool UpdateFile(this MessageGame game, File file)
 {
     return(game.Game.UpdateFile(file));
 }
Ejemplo n.º 26
0
        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);
            }
        }