/// <summary> /// Obsługa eventu ulepszenia pola /// </summary> /// <param name="playerName">Nazwa gracza, który ulepszył pole</param> /// <param name="placeId"></param> private void OnUpgradeBuilding(string playerName, int placeId) { if (placeIndex == placeId) { if (field is NormalBuilding) { NormalBuilding upgradeBuilding = field as NormalBuilding; upgradeBuilding.OnUpgrade(GameplayController.instance.session.FindPlayer(playerName), this); Explosion(); } } }
/// <summary> /// Ulepsza budynek należący do danego gracza i pobiera za to odpowiednią należność /// </summary> /// <param name="player">Gracz, który ulepsza budynek</param> /// <param name="placeId">Numer pola, które jest ulepszane</param> public void UpgradeBuilding(Player player, int placeId) { NormalBuilding upgradeBuilding = GameplayController.instance.board.GetField(placeId) as NormalBuilding; //Sprawdzanie, czy budynek zawiera następny tier if (upgradeBuilding.HasNextTier(placeId)) { player.DecreaseMoney(GetUpgradePrice(placeId)); GameplayController.instance.board.NextTier(placeId); EventManager.instance.SendOnPlayerUpgradedBuilding(player.GetName(), placeId); } else { Debug.LogError("Budynek nie zawiera następnego tieru"); } }
/// <summary> /// Inicjuje modele stojące na polu /// </summary> protected override void InitModels() { GameObject startModel = Instantiate(field.GetStartModel(), gameObject.GetComponent <Transform>()); models.Add(startModel); if (field is NormalBuilding) { startModel.SetActive(false); startModel.GetComponent <Transform>().Rotate(new Vector3(0f, 0f, -gameObject.GetComponent <Transform>().rotation.eulerAngles.z)); NormalBuilding nb = field as NormalBuilding; for (int i = 1; i < nb.tiersCount; i++) { GameObject model = Instantiate(nb.tiers[i].model, gameObject.GetComponent <Transform>()); model.SetActive(false); models.Add(model); } } //Przywracanie budynku po wczytaniu save ShowModel(GameplayController.instance.board.GetTier(placeIndex)); }