private void Start() { playerChecker = this.GetComponent <PlayerChecker>(); PlayerChecker.PlayerChecked .Where(x => x == true) .Subscribe(_ => ResultCheck()) .AddTo(this); }
private void Start() { playerChecker = this.GetComponent <PlayerChecker>(); PlayerChecker.PlayerChecked .Where(x => x == true) .Subscribe(_ => { ExsistPlayerPresent(exsistplayer1UI, playerChecker.ExsistPlayer1); ExsistPlayerPresent(exsistplayer2UI, playerChecker.ExsistPlayer2); }) .AddTo(this); }
/// <summary> /// If previous player is player1, then change the state to Player2Turn, vice versa. /// </summary> /// <param name="previousPlayer"></param> private void ToggleGameState(Player previousPlayer) { if (!PlayerChecker.GetVictoryPlayer()) { switch (previousPlayer.playerIndex) { case 1: gameTurnState = GameTurnState.Player2Turn; break; case 2: gameTurnState = GameTurnState.Player3Turn; break; case 3: gameTurnState = GameTurnState.Player4Turn; break; case 4: gameTurnState = GameTurnState.Player1Turn; break; } } else // There is a player winning { gameState = GameState.GameOver; if (PlayerChecker.IsPlayerWin(players[0])) { print("Player 1 won"); } if (PlayerChecker.IsPlayerWin(players[1])) { print("Player 2 won"); } if (PlayerChecker.IsPlayerWin(players[2])) { print("Player 3 won"); } if (PlayerChecker.IsPlayerWin(players[3])) { print("Player 4 won"); } } }
public bool ProcessSpecialTiles() { Snake snakeTile = PlayerChecker.isPlayerOnSnakeHeadTile(this); Ladder ladderTile = PlayerChecker.isPlayerOnLadderBottomTile(this); GameTile gameTile = PlayerChecker.isPlayerOnGameTile(this); if (snakeTile) { StartCoroutine(Fall(transform, snakeTile.endIndex, 2)); } else if (ladderTile) { StartCoroutine(Climb(transform, ladderTile.endIndex, 2)); } else { playerState = PlayerState.Idle; // Player doesn't need to move temporarily if (gameTile) { if (PlayerChecker.PlayerIsAi(this)) { float chance = Random.Range(0f, 1.0f); if (chance > gameTile.successRate) { print($"Ai loses the mini game, moves backwards for " + gameTile.tileNum + " tiles"); StartCoroutine(WaitBeforeMove(-gameTile.tileNum, 2)); } else { print($"Ai wins the mini game, moves forwards for " + gameTile.tileNum + " tiles"); StartCoroutine(WaitBeforeMove(gameTile.tileNum, 2)); } } else { SaveSystem.SaveMiniGameData((int)MiniGameState.Pending, playerIndex, gameTile.tileNum); SaveSystem.SaveMainGameData(); LevelLoader.Instance.LoadScene(gameTile.gameSceneIndex); } } } return(snakeTile || ladderTile || gameTile); }