Esempio n. 1
0
        /// <summary>
        /// Send player/client the current game state (was their move valid etc. and the board state)
        /// </summary>
        /// <param name="aRoom">Room</param>
        /// <param name="aClient">Client the gets this data</param>
        /// <param name="aGameStateString">Board state data</param>
        private static void SendPlayerGameState(Room aRoom, TcpServerClient aClient, string aGameStateString)
        {
            DataGameState lGameState = new DataGameState();

            lGameState.GameState  = aGameStateString;
            lGameState.PlayGround = aRoom.PlayGround;
            SendData(aClient, String.Format("{0}{1}", PREFIX_GMEST, DataProcessor.SerializeGameStateData(lGameState)));
        }
Esempio n. 2
0
 static Connections()
 {
     _BufferSize = new byte[4096];
     Status      = GameStatus.Waiting;
     Valid       = ValidStatus.NoState;
     GameState   = new DataGameState();
     Turn        = TurnStatus.NoTurn;
     PlayerOne   = "";
     PlayerTwo   = "";
 }
Esempio n. 3
0
        /// <summary>
        /// While the game is playing out, continuously check for data being sent from the server to update the variables
        /// Valid, Turn and Status.
        /// </summary>
        private static void UpdateTurnAndGameStatus()
        {
            while (Status == GameStatus.Playing)
            {
                NetworkStream lNetworkStream = GameClient.GetStream();
                string        JSON_string    = String.Empty;
                while (JSON_string == String.Empty)
                {
                    int byteCount = lNetworkStream.Read(_BufferSize, 0, _BufferSize.Length);
                    JSON_string = _EncodingInstance.GetString(_BufferSize, 0, byteCount);
                    Thread.Sleep(5);
                }

                if (JSON_string.StartsWith(PREFIX_YOURT))
                {
                    Turn = TurnStatus.YourTurn;
                }
                else
                {
                    GameState = DataProcessor.DeserializeGameStateData(JSON_string.Substring(5));

                    switch (GameState.GameState)
                    {
                    case GS_VALIDMOVE:
                        Valid = ValidStatus.Valid;
                        Turn  = TurnStatus.EnemyTurn;

                        break;

                    case GS_INVALIDMOVE:
                        Valid = ValidStatus.Invalid;
                        Turn  = TurnStatus.YourTurn;

                        break;

                    case GS_YOUWON:
                        Valid  = ValidStatus.Valid;
                        Turn   = TurnStatus.NoTurn;
                        Status = GameStatus.YouWon;

                        break;

                    case GS_YOULOST:
                        Valid  = ValidStatus.Valid;
                        Turn   = TurnStatus.NoTurn;
                        Status = GameStatus.YouLost;

                        break;

                    case GS_DRAW:
                        Valid  = ValidStatus.Valid;
                        Turn   = TurnStatus.NoTurn;
                        Status = GameStatus.Draw;
                        break;

                    case GS_VALIDENEMYMOVE:
                    //Der Gegner hat einen gültigen Zug gemacht. Die INfo, dass ich dran bin, kommt in separater Nachricht.
                    default:
                        break;
                    }
                }
            }
        }
Esempio n. 4
0
 public static string SerializeGameStateData(DataGameState aGameState)
 {
     return(JsonConvert.SerializeObject(aGameState));
 }