//снятие ренты с игрока, остановившегося на этом участке и добавление этой суммы владельцу улицы
    public void StepOnMe(int idPlayer)
    {
        NetworkDBwork dBwork = Camera.main.GetComponent <NetworkDBwork>();

        dBwork.GetPlayerbyId(idPlayer).Money      -= renta;
        dBwork.GetPlayerbyId(this.idPlayer).Money += renta;
    }
    //отправка игрока в тюрьму
    public void GoToJail(int idPlayer, GameCanvas canv)
    {
        NetworkDBwork dBwork   = Camera.main.GetComponent <NetworkDBwork>();
        Event         newEvent = dBwork.getCourt().events[0];

        if (idPlayer == 1)
        {
            canv.ShowInfoAboutEvent(newEvent.Name + "\n" + newEvent.Info);
        }

        dBwork.GetPlayerbyId(idPlayer).InJail(3);
        dBwork.GetPlayerbyId(idPlayer).Money += newEvent.Price;
    }
    public void ReplaceBotWithPlayer(int playerId, int viewId, string name)
    {
        NetworkDBwork data      = Camera.main.GetComponent <NetworkDBwork>();
        NetworkPlayer player    = data.GetPlayerbyId(playerId);
        GameObject    newPlayer = Instantiate(emptyPlayer) as GameObject;

        newPlayer.transform.GetComponentInChildren <Camera>().gameObject.SetActive(false);;
        newPlayer.GetComponent <NetworkPlayer>().GetData(player, name);
        newPlayer.transform.position = player.Destination;
        Destroy(player.gameObject);
        data.updatePlayer(newPlayer.GetComponent <NetworkPlayer>());
        newPlayer.GetComponent <PhotonView>().viewID = viewId;
    }
Example #4
0
    //вызов событий, если игрок остановился на этом участке
    public void StepOnMe(int idPlayer)
    {
        NetworkDBwork dBwork = Camera.main.GetComponent <NetworkDBwork>();

        if (idPlayer == 1 && dBwork.GetPlayerbyId(idPlayer).isInJail())
        {
            return;
        }

        Event newEvent = GetRandomEvent();

        dBwork.GetPlayerbyId(idPlayer).Money += newEvent.Price;

        if (idPlayer == 1)
        {
            if (_gameCanvas == null)
            {
                _gameCanvas = dBwork.GetNetworkGameCanvas();
            }

            _gameCanvas.ShowInfoAboutEvent(newEvent.Name + "\n" + newEvent.Info + "\n" + "Стоимость: " +
                                           newEvent.Price);
        }
    }
    //обход игроков, выдача им зарплат
    private IEnumerator GoNextStep()
    {
        if (CurrentPlayer.isBot)
        {
            if (!CurrentPlayer.IsBankrupt)
            {
                if (CountStepsInAllGame % 10 == 0)
                {
                    CurrentPlayer.Money += salary;
                }
                if (!CurrentPlayer.isInJail())
                {
                    yield return(StartCoroutine(Dices()));
                }
                else
                {
                    aboutPlayer += "Прямое включение из тюрьмы: Ход игрока " + CurrentPlayer.NickName + "\n";
                }

                CurrentPlayer.NextStep();
                yield return(new WaitUntil(() => CurrentPlayer.ready));

                checkPlayer(CurrentPlayer.IdPlayer);
            }

            int idOfNext = _dBwork.GetPlayer().IdPlayer + 1;
            if (idOfNext == _dBwork.GetAllPlayers().Length)
            {
                idOfNext = 1;
            }

            CurrentPlayer       = _dBwork.GetPlayerbyId(idOfNext);
            CurrentPlayer.ready = false;
            if (_dBwork.GetPlayerbyId(idOfNext).isBot)
            {
                GetComponent <PhotonView>().RPC("GoNextStepForBot", PhotonTargets.MasterClient, idOfNext);
            }
        }
        else
        {
            checkPlayer(_dBwork.GetPlayer().IdPlayer);
            _dBwork.GetPlayer().SetCurrentStep(false);
            firstDice.gameObject.SetActive(false);
            secondDice.gameObject.SetActive(false);
            _dBwork.GetPlayer().ready = true;
            _dBwork.GetPlayer().SetMaxStep(0);
            nextStepButton.GetComponent <CanvasGroup>().interactable = false;
            if (_dBwork.GetPlayer().IdPlayer == 1)
            {
                CountStepsInAllGame++;
            }

            if (CountStepsInAllGame % 10 == 0)
            {
                _dBwork.GetPlayer().Money += salary;
            }

            int idOfNext = _dBwork.GetPlayer().IdPlayer + 1;
            if (idOfNext == _dBwork.GetAllPlayers().Length)
            {
                idOfNext = 1;
            }

            CurrentPlayer       = _dBwork.GetPlayerbyId(idOfNext);
            CurrentPlayer.ready = false;
            if (_dBwork.GetPlayerbyId(idOfNext).isBot)
            {
                GetComponent <PhotonView>().RPC("GoNextStepForBot", PhotonTargets.MasterClient, idOfNext);
            }


            yield return(new WaitUntil(() => _dBwork.GetPlayer() == CurrentPlayer));


            if (!CurrentPlayer.isInJail())
            {
                gameObject.GetComponent <GameCanvas>().OpenThrowDiceButton();
                yield return(new WaitUntil(() => secondDice.gameObject.activeInHierarchy));

                yield return(new WaitUntil(() => secondDice.GetIndexOfSurface() > 0));
            }
            else
            {
                aboutPlayer += "Прямое включение из тюрьмы: Ход игрока " + CurrentPlayer.NickName + "\n";
            }

            _dBwork.GetPlayer().NextStep();
            nextStepButton.GetComponent <CanvasGroup>().interactable = true;
            _dBwork.GetPlayer().SetCurrentStep(true);
        }
    }
    //открыть окно торговли с этим игроком
    public void onButtonClickTrade(int idPlayerSecond)
    {
        //открываем меню торговли
        ChangeMenu(4);
        //обновляем ссылку на дбворк
        _dBwork = getDbWork();
        //создаем список товаров на продажу
        NetworkTrade.CreateListThings(getCurrentPlayer(), _dBwork.GetPlayerbyId(idPlayerSecond));
        //вешаем скрипт на кнопку подтверждения предложения
        ApplyTrade.onClick.AddListener(() =>
                                       NetworkTrade.TradeApply(getCurrentPlayer(), _dBwork.GetPlayerbyId(idPlayerSecond), this, moneyFirstPlayer,
                                                               moneySecondPlayer));
        //назначаем имя первого игрока
        firstPlayer.GetComponentInChildren <Text>().text = getCurrentPlayer().NickName;
        //узнаем улицы первого игрока
        List <int> pathsFirstPlayer = _dBwork.GetMyPathes(getCurrentPlayer().IdPlayer);

        //если торгуем с другим игроком
        if (idPlayerSecond != getCurrentPlayer().IdPlayer)
        {
            //назначаем имя второго игрока
            secondPlayer.GetComponentInChildren <Text>().text = _dBwork.GetPlayerbyId(idPlayerSecond).NickName;

            //собираем список улиц первого игрока в первом скроле
            foreach (var path in pathsFirstPlayer)
            {
                //если улица заложена, то она не отображается доступной к продаже
                if (_dBwork.GetPathForBuy(path).IsBlocked)
                {
                    continue;
                }

                GameObject prefButton = Instantiate(prefButStreetForTrade);
                prefButton.GetComponentInChildren <Text>().text = _dBwork.GetPathById(path).namePath;
                prefButton.GetComponent <RectTransform>().SetParent(scrollFirstPlayerStreets.content, false);
                prefButton.GetComponent <Button>().onClick
                .AddListener(() =>
                             onButtonAddOrDeleteOfferStreet(prefButton, getCurrentPlayer(),
                                                            _dBwork.GetPlayerbyId(idPlayerSecond), path));
            }

            //создаем список улиц второго игрока
            List <int> pathsSecondPlayer = _dBwork.GetMyPathes(idPlayerSecond);

            //собираем список улиц второго игрока во втором скроле
            foreach (var path in pathsSecondPlayer)
            {
                //если улица заложена, то она не отображается доступной к продаже
                if (_dBwork.GetPathForBuy(path).IsBlocked)
                {
                    continue;
                }

                GameObject prefButton = Instantiate(prefButStreetForTrade);
                prefButton.GetComponentInChildren <Text>().text = _dBwork.GetPathById(path).namePath;
                prefButton.GetComponent <RectTransform>().SetParent(scrollSecondPlayerStreets.content, false);
                prefButton.GetComponent <Button>().onClick
                .AddListener(() =>
                             onButtonAddOrDeleteOfferStreet(prefButton, getCurrentPlayer(),
                                                            _dBwork.GetPlayerbyId(idPlayerSecond), path));
            }

            //отражаем максимальное количество денег первого игрока
            sliderMoneyFirst.maxValue = getCurrentPlayer().Money;
            //включаем слайдер первого игрока
            sliderMoneyFirst.gameObject.SetActive(true);
            //отражаем максимальное количество денег второго игрока
            sliderMoneySecond.maxValue = _dBwork.GetPlayerbyId(idPlayerSecond).Money;
            //включаем слайдер второго игрока
            sliderMoneySecond.gameObject.SetActive(true);

            //разрешаем заполнение игроком полей денег
            InputFieldMoneyFirst.gameObject.GetComponent <CanvasGroup>().interactable  = true;
            InputFieldMoneySecond.gameObject.GetComponent <CanvasGroup>().interactable = true;
        }
        //если открыли меню закладывания улиц
        else
        {
            //назначаем город вторым участником обмена
            secondPlayer.GetComponentInChildren <Text>().text = "Город";
            //Выключаем слайдеры
            sliderMoneyFirst.gameObject.SetActive(false);
            sliderMoneySecond.gameObject.SetActive(false);
            //запрещаем заполнение игроком полей денег
            InputFieldMoneyFirst.gameObject.GetComponent <CanvasGroup>().interactable  = false;
            InputFieldMoneySecond.gameObject.GetComponent <CanvasGroup>().interactable = false;

            //раскидываем улицы по скролам в зависимости от того заложены они или нет
            foreach (var path in pathsFirstPlayer)
            {
                GameObject prefButton = Instantiate(prefButStreetForTrade);
                prefButton.GetComponentInChildren <Text>().text = _dBwork.GetPathById(path).namePath;

                if (_dBwork.GetPathForBuy(path).IsBlocked)
                {
                    prefButton.GetComponent <RectTransform>().SetParent(scrollSecondPlayerStreets.content, false);
                }
                else
                {
                    prefButton.GetComponent <RectTransform>().SetParent(scrollFirstPlayerStreets.content, false);
                }

                prefButton.GetComponent <Button>().onClick
                .AddListener(() =>
                             onButtonAddOrDeleteOfferStreet(prefButton, getCurrentPlayer(),
                                                            getCurrentPlayer(), path));
            }
        }
    }