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