Пример #1
0
    private IEnumerator Game()
    {
        //todo отправка в тюрьму после больше 3 раз дублей
//		yield return StartCoroutine(current_player.MoveTo(Board[1]));
//		yield return new WaitForSeconds(2);
//		yield return StartCoroutine(current_player.MoveTo(Board[3]));
//		yield return new WaitForSeconds(2);
        //yield return StartCoroutine(BankruptByGame(Players[0]));
//		GivePropertyToPlayer(CurrentPlayer,Board[12] as Ownable);
//		GivePropertyToPlayer(CurrentPlayer,Board[13] as Ownable);
//		GivePropertyToPlayer(CurrentPlayer,Board[14] as Ownable);
//		GivePropertyToPlayer(CurrentPlayer,Board[15] as Ownable);
//		GivePropertyToPlayer(CurrentPlayer,Board[16] as Ownable);
//		GivePropertyToPlayer(CurrentPlayer,Board[18] as Ownable);
//		GivePropertyToPlayer(CurrentPlayer,Board[19] as Ownable);
        //CurrentPlayer.BalanceManager.GetMoneyFromPlayer(1500);
//		ActivePlayers[1].BalanceManager.GetMoneyFromPlayer(1500);
//		ActivePlayers[2].BalanceManager.GetMoneyFromPlayer(1500);
//		GivePropertyToPlayer(CurrentPlayer, Board[1] as Ownable);
//		GivePropertyToPlayer(CurrentPlayer, Board[3] as Ownable);
//		GivePropertyToPlayer(CurrentPlayer, Board[6] as Ownable);
//		GivePropertyToPlayer(CurrentPlayer, Board[5] as Ownable);
//		GivePropertyToPlayer(CurrentPlayer, Board[8] as Ownable);
//		GivePropertyToPlayer(CurrentPlayer, Board[9] as Ownable);
//		GivePropertyToPlayer(CurrentPlayer, Board[11] as Ownable);
//		GivePropertyToPlayer(CurrentPlayer, Board[12] as Ownable);
        yield return(StartCoroutine(_uIManager.PlayerInfoManager.SetPlayerInfo()));

        yield return(StartCoroutine(_uIManager.StartTurn()));

        while (GameInProgress)
        {
            switch (State)
            {
            case States.Default:
                switch (CurrentPlayer.CurrentState)
                {
//						case Player.State.Moving:
//							yield return new WaitUntil(() => CurrentPlayer.CurrentState!=Player.State.Moving);
//							break;
//						case Player.State.OfferToBuyProperty:
//							yield return new WaitUntil(() => CurrentPlayer.CurrentState!=Player.State.OfferToBuyProperty);
//							Debug.Log("САНЯ ХУЙ СОСИ");
//							break;
//						case Player.State.OfferToBuyHouse:
//							yield return new WaitUntil(() => CurrentPlayer.CurrentState!=Player.State.OfferToBuyHouse);
//							break;
//						case Player.State.OfferToMortgageProperty:
//							yield return new WaitUntil(() => CurrentPlayer.CurrentState!=Player.State.OfferToMortgageProperty);
//							break;
//						case Player.State.OfferToRedeemProperty:
//							yield return new WaitUntil(() => CurrentPlayer.CurrentState!=Player.State.OfferToRedeemProperty);
//							break;
//						case Player.State.OfferToSellHouse:
//							yield return new WaitUntil(() => CurrentPlayer.CurrentState!=Player.State.OfferToSellHouse);
//							break;
                case Player.State.EndTurn:
                    yield return(StartCoroutine(_uIManager.PlayerInfoManager.EndTurn()));

                    _players.Enqueue(CurrentPlayer);
                    CurrentPlayer = _players.Dequeue();
                    CurrentPlayer.CurrentState = Player.State.StartTurn;
                    yield return(StartCoroutine(_uIManager.StartTurn()));

                    break;

                case Player.State.Idle:
                    if (DiceRoller.IsDouble())
                    {
                        if (DiceRoller.DoublesInARow == 3)
                        {
                            JailManager.PutPLayerInJail();
                            DiceRoller.DoublesInARow = 0;
                        }
                        else
                        {
                            CurrentPlayer.CurrentState = Player.State.StartTurn;
                        }
                    }

                    break;

                case Player.State.Bankrupt:
                    yield return(StartCoroutine(_uIManager.PlayerInfoManager.EndTurn()));

                    CurrentPlayer = _players.Dequeue();
                    CurrentPlayer.CurrentState = Player.State.StartTurn;
                    if (_players.Count == 0)
                    {
                        GameInProgress = false;
                        _uIManager.EndGame();
                    }
                    else
                    {
                        yield return(StartCoroutine(_uIManager.StartTurn()));
                    }
                    break;
                }

                if (CurrentPlayer.InJail && CurrentPlayer.CurrentState == Player.State.StartTurn)
                {
                    yield return(StartCoroutine(JailManager.TurnInJail()));
                }
                break;

            case States.Auction:
                yield return(new WaitWhile(() => State == States.Auction));

                break;

            case States.Trade:
                yield return(new WaitWhile(() => State == States.Trade));

                break;
            }

            yield return(null);
        }
    }