//снятие ренты с игрока, остановившегося на этом участке и добавление этой суммы владельцу улицы public void StepOnMe(int idPlayer) { DBwork dBwork = Camera.main.GetComponent <DBwork>(); dBwork.GetPlayerbyId(idPlayer).Money -= renta; dBwork.GetPlayerbyId(this.idPlayer).Money += renta; }
//загрузка игры public static void loadGame(string dbName) { DBwork dBwork = Camera.main.GetComponent <DBwork>(); dBwork.SetGameDB(dbName); int count = dBwork.GetAllPlayers().Length; Trade.things = new List <ThingForTrade> [count, count]; }
//создаем ссылку на канву игры, объявляет ход игрока void Start() { _dbWork = Camera.main.GetComponent <DBwork>(); _gameCanvas = _dbWork.GetGameCanvas(); if (idPlayer == 1) { CurrentStep = true; } }
//получить экземпляр текущего DBWork private DBwork getDbWork() { if (_dBwork == null) { _dBwork = Camera.main.GetComponent <DBwork>(); } return(_dBwork); }
//инициализация ДБворка void Start() { if (!SceneManager.GetActiveScene().name.Equals("GameNetwork")) { _dBwork = Camera.main.GetComponent <DBwork>(); } else { _networkDBwork = Camera.main.GetComponent <NetworkDBwork>(); } }
//сброс истории, обновление ссылки на дбворк, бросок кубиков первого игрока void Start() { aboutPlayer = ""; _dBwork = Camera.main.GetComponent <DBwork>(); _gameCanvas = gameObject.GetComponent <GameCanvas>(); _dBwork.GetPlayerbyId(1).NextStep(); CurrentPlayer = _dBwork.GetPlayerbyId(1); posFirstDice = firstDice.transform.position; posSecondDice = secondDice.transform.position; }
//отправка игрока в тюрьму public void GoToJail(int idPlayer, GameCanvas canv) { DBwork dBwork = Camera.main.GetComponent <DBwork>(); 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 GetData(Player player) { this.currentSteps = player.CurrentSteps; this.destination = player.Destination; this.idPlayer = player.IdPlayer; this.nickName = player.NickName; this.isBankrupt = player.IsBankrupt; this.maxSteps = player.MaxSteps; this.money = player.Money; this.speed = player.Speed; this.isBot = player.isBot; _dbWork = Camera.main.GetComponent <DBwork>(); this.currentStreetPath = findMyPath(destination); }
//нахождение соседних частей улиц с этой public void GetNeighbors() { DBwork ds = Camera.main.GetComponent <DBwork>(); List <int> neighs = new List <int>(); StreetPath[] streetPaths = ds.GetAllPaths(); for (int i = 1; i < streetPaths.Length; i++) { if (streetPaths[i].end.Equals(end) || streetPaths[i].start.Equals(start) || streetPaths[i].end.Equals(start) || streetPaths[i].start.Equals(end)) { neighs.Add(streetPaths[i].idStreetPath); } } neighborsId = neighs.ToArray(); }
//вызов событий, если игрок остановился на этом участке public void StepOnMe(int idPlayer) { DBwork dBwork = Camera.main.GetComponent <DBwork>(); 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.GetGameCanvas(); } _gameCanvas.ShowInfoAboutEvent(newEvent.Name + "\n" + newEvent.Info + "\n" + "Стоимость: " + newEvent.Price); } }
private void RegisterButton_Click(object sender, RoutedEventArgs e) // Кнопка регистрации нового игрока { // Поля неправильно заполнены if (PlayerNickNameBox.Text == "" || PlayerNickNameBox.Text == "Enter player nickname" || PlayerNameBox.Text == "" || PlayerNameBox.Text == "Enter player name" || PlayerNameBox.Text == "Player must have name!" || PlayerNickNameBox.Text == "Player must have nickname!") { if (PlayerNickNameBox.Text == "" || PlayerNickNameBox.Text == "Enter player nickname") { PlayerNickNameBox.Foreground = new SolidColorBrush(Colors.Red); PlayerNickNameBox.Text = "Player must have nickname!"; } if (PlayerNameBox.Text == "" || PlayerNameBox.Text == "Enter player name") { PlayerNameBox.Foreground = new SolidColorBrush(Colors.Red); PlayerNameBox.Text = "Player must have name!"; } } // Поля правильно заполнены else { // Сохраняем имя и ник playerName = PlayerNameBox.Text; playerNickName = PlayerNickNameBox.Text; Close(); // Закрываем окно регистрации if (DBwork.IsPlayerExist(playerName, playerNickName)) // Если в базе уже есть игрок с тиким именем и фамилией { OneHundredAndEighty.NewPlayer.ShowExistingPlayerWindow(playerName, playerNickName); // Показываем предупреждение OneHundredAndEighty.NewPlayer.ShowNewPlayerRegisterWindow(); // Заново открываем окно регистрации } else // Игрока в базе нет - можно сохранять { DBwork.SaveNewPlayer(playerName, playerNickName); // Сохраняем игрока OneHundredAndEighty.NewPlayer.ShowWelcomeWindow(playerName, playerNickName); // Показываем окно приветствия } } }
//создание и заполнение карты, основываясь на данных из базы данных void Start() { DBwork data = Camera.main.GetComponent <DBwork>(); StreetPath[] pathForBuys = data.GetAllPaths(); for (int i = 1; i < pathForBuys.Length; i++) { GameObject newStreetPath = Instantiate(emptyStreet) as GameObject; newStreetPath.name = "StreetPath" + i; BoxCollider coll = newStreetPath.GetComponent <BoxCollider>(); coll.size = new Vector3(GetVectorLength(pathForBuys[i].end - pathForBuys[i].start), 3, 8); if (pathForBuys[i].canBuy) { newStreetPath.AddComponent <PathForBuy>(); newStreetPath.GetComponent <PathForBuy>().TakeData(data.GetPathForBuy(i)); newStreetPath.GetComponent <PathForBuy>().GetNeighbors(); data.updatePath(newStreetPath.GetComponent <PathForBuy>()); } else { newStreetPath.AddComponent <GovermentPath>(); newStreetPath.GetComponent <GovermentPath>().TakeData(data.GetGovermentPath(i)); if (newStreetPath.GetComponent <GovermentPath>().GetNameOfPrefab().Equals("Court")) { data.SetCourt(newStreetPath.GetComponent <GovermentPath>()); // GameObject newBuild = Instantiate(police) as GameObject; // newBuild.transform.position = GetCenter(pathForBuys[i].start, pathForBuys[i].end); } newStreetPath.GetComponent <GovermentPath>().GetNeighbors(); data.updatePath(newStreetPath.GetComponent <GovermentPath>()); } newStreetPath.transform.rotation = Quaternion.Euler(0f, Angle(pathForBuys[i].start, pathForBuys[i].end), 0f); newStreetPath.transform.position = GetCenter(pathForBuys[i].start, pathForBuys[i].end); } Build[] builds = data.GetAllBuilds(); for (int i = 1; i < builds.Length; i++) { GameObject newBuild = Instantiate(emptyBuild) as GameObject; newBuild.name = builds[i].NameBuild; newBuild.AddComponent <Build>(); newBuild.GetComponent <Build>().TakeData(builds[i]); data.updateBuild(newBuild.GetComponent <Build>()); newBuild.transform.rotation = data.GetPathById(builds[i].IdStreetPath).transform.rotation; newBuild.transform.position = newBuild.GetComponent <Build>().Place; newBuild.SetActive(newBuild.GetComponent <Build>().Enable); } Player[] players = data.GetAllPlayers(); for (int j = 1; j < players.Length; j++) { if (!players[j].IsBot()) { GameObject newPlayer = Instantiate(emptyPlayer) as GameObject; newPlayer.GetComponent <Player>().GetData(players[1]); newPlayer.transform.position = players[1].Destination; data.updatePlayer(newPlayer.GetComponent <Player>()); transform.Find("/Town").GetComponent <Cameras>() .SetCamera(newPlayer.GetComponentInChildren <Camera>()); } else { GameObject newBot = Instantiate(emptyBot) as GameObject; newBot.GetComponent <Bot>().GetData(players[j]); newBot.transform.position = players[j].Destination; data.updatePlayer(newBot.GetComponent <Bot>()); } } data.createWays(); }
//открыть окно торговли с этим игроком public void onButtonClickTrade(int idPlayerSecond) { //открываем меню торговли ChangeMenu(4); //обновляем ссылку на дбворк _dBwork = getDbWork(); //создаем список товаров на продажу Trade.CreateListThings(getCurrentPlayer(), _dBwork.GetPlayerbyId(idPlayerSecond)); //вешаем скрипт на кнопку подтверждения предложения ApplyTrade.onClick.AddListener(() => Trade.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; InputFieldMoneyFirst.text = moneyFirstPlayer.ToString(); InputFieldMoneySecond.gameObject.GetComponent <CanvasGroup>().interactable = true; InputFieldMoneySecond.text = moneySecondPlayer.ToString(); } //если открыли меню закладывания улиц 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)); } } }
public void OpenTradeFromBotToPlayer(Player fromBot, Player forPlayer, int moneyBot) { //открываем меню торговли ChangeMenu(4); //обновляем ссылку на дбворк _dBwork = getDbWork(); //Сумма, которую готов предложить бот moneyFirstPlayer = moneyBot; //вешаем скрипт на кнопку подтверждения предложения ApplyTrade.onClick.AddListener(() => Trade.TradeApply(fromBot, forPlayer, this, moneyFirstPlayer, moneySecondPlayer)); //назначаем имя первого игрока (бота) firstPlayer.GetComponentInChildren <Text>().text = fromBot.NickName; //узнаем улицы первого игрока (бота) List <int> pathsFirstPlayer = _dBwork.GetMyPathes(fromBot.IdPlayer); //назначаем имя второго игрока secondPlayer.GetComponentInChildren <Text>().text = forPlayer.NickName; //узнаем улицы, которые бот предложил к продаже List <int> pathsForTrade = Trade.GetPathsFromTrade(fromBot, forPlayer); //собираем список улиц первого игрока (бота) в первом скроле foreach (var path in pathsFirstPlayer) { //если улица заложена, то она не отображается доступной к продаже if (_dBwork.GetPathForBuy(path).IsBlocked) { continue; } GameObject prefButton = Instantiate(prefButStreetForTrade); prefButton.GetComponentInChildren <Text>().text = _dBwork.GetPathById(path).namePath; if (!CheckPathForTrade(pathsForTrade, path)) { prefButton.GetComponent <RectTransform>().SetParent(scrollFirstPlayerStreets.content, false); } else { prefButton.GetComponent <RectTransform>().SetParent(scrollFirstPlayerOffer.content, false); } prefButton.GetComponent <Button>().onClick .AddListener(() => onButtonAddOrDeleteOfferStreet(prefButton, fromBot, forPlayer, path)); } //создаем список улиц второго игрока List <int> pathsSecondPlayer = _dBwork.GetMyPathes(forPlayer.IdPlayer); //собираем список улиц второго игрока во втором скроле foreach (var path in pathsSecondPlayer) { //если улица заложена, то она не отображается доступной к продаже if (_dBwork.GetPathForBuy(path).IsBlocked) { continue; } GameObject prefButton = Instantiate(prefButStreetForTrade); prefButton.GetComponentInChildren <Text>().text = _dBwork.GetPathById(path).namePath; if (!CheckPathForTrade(pathsForTrade, path)) { prefButton.GetComponent <RectTransform>().SetParent(scrollSecondPlayerStreets.content, false); } else { prefButton.GetComponent <RectTransform>().SetParent(scrollSecondPlayerOffer.content, false); } prefButton.GetComponent <Button>().onClick .AddListener(() => onButtonAddOrDeleteOfferStreet(prefButton, fromBot, forPlayer, path)); } //отражаем максимальное количество денег первого игрока sliderMoneyFirst.maxValue = fromBot.Money; //включаем слайдер первого игрока sliderMoneyFirst.gameObject.SetActive(true); sliderMoneyFirst.value = moneyBot; //отражаем максимальное количество денег второго игрока sliderMoneySecond.maxValue = forPlayer.Money; //включаем слайдер второго игрока sliderMoneySecond.gameObject.SetActive(true); sliderMoneySecond.value = 0; //разрешаем заполнение игроком полей денег InputFieldMoneyFirst.gameObject.GetComponent <CanvasGroup>().interactable = true; InputFieldMoneyFirst.text = moneyBot.ToString(); InputFieldMoneySecond.gameObject.GetComponent <CanvasGroup>().interactable = true; InputFieldMoneySecond.text = "0"; }