void ApplyUpgrades() { // Upgrade options GameManager gameManager = ServiceLocator.Get <GameManager>(); UpgradesModel upgradesModel = ModelManager.UpgradesModel; UpgradesIdentifier upgradesIdentifier = UpgradesIdentifier.None; // Long Ranged Upgrade // Moved to tower script // Barricade Reduction Cost Upgrade // Moved to Barricade Spawner Script // Wife tower Upgrade Tower wife = GameObject.FindGameObjectWithTag("Wife").GetComponent <Tower>(); int wifeLevel = gameManager.upgradeLevelsDictionary[UpgradeMenu.Upgrade.ExtraProjectiles] - 1; upgradesIdentifier = upgradesModel.GetUpgradeEnum(UpgradeMenu.Upgrade.ExtraProjectiles, wifeLevel + 1); if (wifeLevel >= 0) { wife.isShooting = true; wife.attackRate -= upgradesModel.GetRecord(upgradesIdentifier).ModifierValue; //upgradeStats.throwingSpeed[wifeLevel]; } // Specific Target Upgrade int specficLevel = gameManager.upgradeLevelsDictionary[UpgradeMenu.Upgrade.TargetEnemy] - 1; upgradesIdentifier = upgradesModel.GetUpgradeEnum(UpgradeMenu.Upgrade.TargetEnemy, specficLevel + 1); if (specficLevel >= 0) { towerInstance.GetComponent <Tower>().specificEnemy = gameManager.choosenTarget;//upgradesModel.GetRecord(upgradesIdentifier).Target; } // Fire Upgrade int fireLevel = gameManager.upgradeLevelsDictionary[UpgradeMenu.Upgrade.FireProjectile] - 1; upgradesIdentifier = upgradesModel.GetUpgradeEnum(UpgradeMenu.Upgrade.FireProjectile, fireLevel + 1); if (fireLevel >= 0) { towerInstance.GetComponent <Tower>().damageType = DamageType.Fire; towerInstance.GetComponent <Tower>().fireDuration = upgradesModel.GetRecord(upgradesIdentifier).ModifierValue;// upgradeStats.fireDuration[fireLevel]; } // Improved Barricades // Moved to Barricade Script // Barricade Spawn Rate Improved // Moved to Barricade Spawner Script // Trash Spawn Rate Improved // Moved to Resource Spawner Script // Improved Player HP // Moved to Player Script // Improved healing // Moved to Tower Script // UpdateTowerTrashCount towerInstance.GetComponent <Tower>().fullHealth = gameManager._houseHP; }
public ShopController( ShopView view, ShopModel shopModel, RoundEndModel roundEndModel, ProfileModel profileModel, UpgradesModel upgradesModel, UpgradeService upgradeService) : base(view) { _view = view; _view.Initialize(); _roundEndModel = roundEndModel; _shopModel = shopModel; _profileModel = profileModel; _upgradesModel = upgradesModel; _upgradeService = upgradeService; _roundEndModel.OpenShop .Subscribe(_ => Open()) .AddTo(Disposer); SetupOnClick(); SetupProfileModel(); SetupUpgradesModel(); }
private void Start() { gameManager = ServiceLocator.Get <GameManager>(); // Update Levels barricadeLevel = gameManager.upgradeLevelsDictionary[Upgrade.BarricadeReductionCost]; extraProjectileLevel = gameManager.upgradeLevelsDictionary[Upgrade.ExtraProjectiles]; fireProjectileLevel = gameManager.upgradeLevelsDictionary[Upgrade.FireProjectile]; longRangedLevel = gameManager.upgradeLevelsDictionary[Upgrade.Ranged]; targetEnemyLevel = gameManager.upgradeLevelsDictionary[Upgrade.TargetEnemy]; improvedBarricadeLevel = gameManager.upgradeLevelsDictionary[Upgrade.ImprovedBarricades]; barricadeSpawnLevel = gameManager.upgradeLevelsDictionary[Upgrade.BarricadeSpawnRate]; trashSpawnLevel = gameManager.upgradeLevelsDictionary[Upgrade.TrashSpawnRate]; hpLevel = gameManager.upgradeLevelsDictionary[Upgrade.ImprovedPlayerHP]; healingLevel = gameManager.upgradeLevelsDictionary[Upgrade.ImprovedHealing]; trashAvailableText.text = "Trash Available:" + gameManager._houseHP.ToString(); upgradesModel = ModelManager.UpgradesModel; UpdateUI(); }
private void OnEnable() { foreach (var item in buttonSprites) { if (!buttonSpritesDictionary.ContainsKey(item.upgradeType)) { buttonSpritesDictionary.Add(item.upgradeType, item.sprite); } } upgradesModel = ModelManager.UpgradesModel; gameManager = ServiceLocator.Get <GameManager>(); foreach (var upgrade in gameManager.upgradeLevelsDictionary) { if (upgrade.Value > 0 && !listOfUpgrades.ContainsKey(upgrade.Key)) { GameObject go = Instantiate(upgradeExample, upgradeHolder) as GameObject; float size = upgradeExample.GetComponent <RectTransform>().rect.height; go.transform.localPosition = new Vector3(go.transform.localPosition.x, /* go.transform.localPosition.y -*/ -counter * size, go.transform.localPosition.z); // Update button text Button button = go.GetComponentInChildren <Button>(); //UpdateButtonText(button, upgrade.Key); Image buttonImage = button.gameObject.GetComponent <Image>(); buttonImage.sprite = buttonSpritesDictionary[upgrade.Key]; buttonImage.type = Image.Type.Simple; buttonImage.preserveAspect = true; button.onClick.AddListener(() => DisplayChoosenUpgrade(upgrade.Key)); // Update Drop Down Dropdown dropdown = go.GetComponentInChildren <Dropdown>(); if (upgrade.Key == Upgrade.TargetEnemy) { dropdown.AddOptions(gameManager.specialTargets); if (gameManager.choosenTarget != "No Target") { int index = gameManager.specialTargets.IndexOf(gameManager.choosenTarget); dropdown.value = index; } } else { dropdown.gameObject.SetActive(false); } // Update Toggle enable Toggle toggle = go.GetComponentInChildren <Toggle>(); if (upgrade.Key != Upgrade.ImprovedPlayerHP) { toggle.isOn = gameManager.upgradeEnabled[upgrade.Key]; } else { toggle.gameObject.SetActive(false); } counter += 1.0f; listOfUpgrades.Add(upgrade.Key, go); } else if (listOfUpgrades.ContainsKey(upgrade.Key) && upgrade.Key == Upgrade.TargetEnemy) { GameObject go = listOfUpgrades[upgrade.Key]; Dropdown dropdownTarget = go.GetComponentInChildren <Dropdown>(); dropdownTarget.ClearOptions(); dropdownTarget.AddOptions(gameManager.specialTargets); if (gameManager.choosenTarget != "No Target") { int index = gameManager.specialTargets.IndexOf(gameManager.choosenTarget); dropdownTarget.value = index; } } } }