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))); }
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(); }
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); }