//добавить или убрать кнопку в список предложений от игрока 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; } }
//открыть окно торговли с этим игроком 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)); } } }