private void GetMyColor()
        {
            while (this.myColor == TileType.none)
            {
                this.myColor = this.game.GetMyColor(this.playerId);
                Thread.Sleep(TimeSpan.FromSeconds(0.5));
            }

            MyTurn.Dispatcher.BeginInvoke((Action)(() => MyTurn.SetTileType(myColor)));
        }
Exemple #2
0
 public ClientNetworkStateContainer(Prompter prompter)
 {
     NotConnected    = new NotConnected();
     PendingLogOn    = new PendingLogOn(prompter);
     WaitingForBoard = new WaitingForBoard();
     PendingBoard    = new PendingBoard(prompter);
     WaitingForGame  = new WaitingForGame(prompter);
     FoundGame       = new FoundGame(prompter);
     InitialGame     = new InitialGame(prompter);
     MyTurn          = new MyTurn();
     TheirTurn       = new TheirTurn(prompter);
     Waiting         = new Waiting(prompter);
 }
        public ServerNetworkStateContainer(BspSender sender, IBspDisconnecter disconnecter,
                                           GameTypeRepository gameTypeRepo, UserRepository userRepo, MatchMaker matchMaker)
        {
            var state = new BspServerState();

            NotConnected    = new NotConnected(state, sender, gameTypeRepo, userRepo);
            PendingLogOn    = new PendingLogOn();
            WaitingForBoard = new WaitingForBoard(state, sender, gameTypeRepo, matchMaker);
            PendingBoard    = new PendingBoard();
            WaitingForGame  = new WaitingForGame(state, sender, disconnecter, userRepo);
            FoundGame       = new FoundGame(state, sender, disconnecter, userRepo);
            InitialGame     = new InitialGame();
            MyTurn          = new MyTurn(state, sender, disconnecter, userRepo);
            TheirTurn       = new TheirTurn();
            Waiting         = new Waiting();
        }
Exemple #4
0
        void GameLoop()
        {
            this.GetMyColor();

            while (!this.gameEnded)
            {
                UpdateStats();
                UpdateBoard();

                switch (this.webservice.WhatIsMyStatus(this.gameId, this.playerId))
                {
                case PlayerStatus.itsMyTurn:
                    UpdateStats();
                    UpdateBoard();
                    MyTurn.Dispatcher.BeginInvoke((Action)(() => MyTurn.SetTileType(this.myColor)));
                    InitializeTurn();
                    lock (semaphor)
                    {
                        Monitor.Wait(semaphor);
                    }
                    break;

                case PlayerStatus.noMoves:
                    NoMoves.Dispatcher.BeginInvoke((Action)(() => {
                        NoMoves.Visibility = Visibility.Visible;
                        Thread.Sleep(TimeSpan.FromSeconds(2));
                        NoMoves.Visibility = Visibility.Collapsed;
                    }));
                    break;

                case PlayerStatus.gameOver:
                    GameOver.Dispatcher.BeginInvoke((Action)(() => GameOver.Visibility = Visibility.Visible));
                    this.gameEnded = true;
                    break;

                default:
                    MyTurn.Dispatcher.BeginInvoke((Action)(() => MyTurn.SetTileType(TileType.board)));
                    break;
                }

                Thread.Sleep(TimeSpan.FromSeconds(0.5));
            }
        }
 protected virtual void OnMyTurn()
 {
     MyTurn?.Invoke(this);
 }