Ejemplo n.º 1
0
    //добавить или убрать кнопку в список предложений от игрока
    private void onButtonAddOrDeleteOfferStreet(GameObject button, NetworkPlayer playerOne, NetworkPlayer playerTwo, int idPath)
    {
        string nameParent = button.transform.parent.parent.parent.gameObject.name;

        switch (nameParent)
        {
        case "FirstPlayerItem":
            button.GetComponent <RectTransform>().SetParent(scrollFirstPlayerOffer.content, false);
            NetworkTrade.AddItemToList(playerOne, playerTwo, getDbWork().GetPathForBuy(idPath));
            //если слайдеры не активны, то происходит закладывание улиц
            if (!sliderMoneyFirst.gameObject.activeInHierarchy)
            {
                moneySecondPlayer += _dBwork.GetPathForBuy(idPath).PriceStreetPath;
                OnValueChangedSecondInputFielid(moneySecondPlayer.ToString());
            }
            break;

        case "FirstPlayerOffer":
            button.GetComponent <RectTransform>().SetParent(scrollFirstPlayerStreets.content, false);
            NetworkTrade.RemoveItemFromList(playerOne, playerTwo, getDbWork().GetPathForBuy(idPath));
            if (!sliderMoneyFirst.gameObject.activeInHierarchy)
            {
                moneySecondPlayer -= _dBwork.GetPathForBuy(idPath).PriceStreetPath;
                OnValueChangedSecondInputFielid(moneySecondPlayer.ToString());
            }
            break;

        case "SecondPlayerItem":
            button.GetComponent <RectTransform>().SetParent(scrollSecondPlayerOffer.content, false);
            NetworkTrade.AddItemToList(playerTwo, playerOne, getDbWork().GetPathForBuy(idPath));
            if (!sliderMoneyFirst.gameObject.activeInHierarchy)
            {
                moneyFirstPlayer += _dBwork.GetPathForBuy(idPath).PriceStreetPath;
                OnValueChangedFirstInputFielid(moneyFirstPlayer.ToString());
            }
            break;

        case "SecondPlayerOffer":
            button.GetComponent <RectTransform>().SetParent(scrollSecondPlayerStreets.content, false);
            NetworkTrade.RemoveItemFromList(playerTwo, playerOne, getDbWork().GetPathForBuy(idPath));
            if (!sliderMoneyFirst.gameObject.activeInHierarchy)
            {
                moneyFirstPlayer -= _dBwork.GetPathForBuy(idPath).PriceStreetPath;
                OnValueChangedFirstInputFielid(moneyFirstPlayer.ToString());
            }
            break;
        }
    }
Ejemplo n.º 2
0
    //открыть окно торговли с этим игроком
    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));
            }
        }
    }