void Upgrade()//UpgradableData[] upgradables) { int currentLevel = DataManager.Instance.GetTowerLevel(currentMat); UpgradableData upgradable = DataManager.Instance.GetTower(currentMat, currentLevel == 0 ? 1 : currentLevel); if (currentLevel == 0) { for (int i = 0; i < upgradable.BuildRequirements.Length; i++) { PlayerManager.Instance.RemoveInventory(upgradable.BuildRequirements[i]); } PlayerManager.Instance.AddInventory(upgradable); DataManager.Instance.SetTowerLevel(currentMat, upgradable.Level); } else { for (int i = 0; i < upgradable.UpgradeRequirements.Length; i++) { PlayerManager.Instance.RemoveInventory(upgradable.UpgradeRequirements[i]); } if (PlacementManager.Instance.GetPlayArea().GetPlacementLocation().CurrentPlacable.Data == upgradable) { PlacementManager.Instance.GetPlayArea().SetTower(upgradable.Upgrade, true); } else { PlayerManager.Instance.RemoveInventory(upgradable); PlayerManager.Instance.AddInventory(upgradable.Upgrade); } DataManager.Instance.SetTowerLevel(currentMat, upgradable.Upgrade.Level); } //UpdateUpgrade(upgradables); }
public virtual void ShowUpgrade(PlacementLocation placementLocation, UpgradableData upgradable) { PlacementManager.Instance.SetArea(AreaType.Build); PlacementManager.Instance.GetBuildArea().SetPlacementLocation(placementLocation); PlacementManager.Instance.GetBuildArea().SetUpgrading(upgradable); //UIManager.Instance.ShowUI(gameObject); }
void PlaceItem()//UpgradableData[] upgradables) { int currentLevel = DataManager.Instance.GetTowerLevel(currentMat); UpgradableData upgradable = DataManager.Instance.GetTower(currentMat, currentLevel); PlayerManager.Instance.AddInventory(PlacementManager.Instance.GetPlayArea().GetPlacementLocation().CurrentPlacable.Data); PlacementManager.Instance.GetPlayArea().SetTower(upgradable); PlayerManager.Instance.RemoveInventory(upgradable); UseButton.interactable = false; }
public void SetTower(UpgradableData tower, bool showEffect = false) { placementLocations[0].SetPlacable(tower, showEffect); for (int i = 0; i < fences.Length; i++) { fences[i].SetActive(i == (int)tower.MaterialType); } mailbox.SetMailbox(tower.MaterialType); if (m_NavMesh != null) { UpdateNavMesh(); } }
private void Awake() { Instance = this; if (File.Exists(Application.persistentDataPath + "/inventory_" + DataManager.saveVersion + ".txt")) { string[] invNames = File.ReadAllLines(Application.persistentDataPath + "/inventory_" + DataManager.saveVersion + ".txt"); int i = 0; while (i < invNames.Length && invNames[i] != "----") { PlacableData item = DataManager.Instance.GetData(invNames[i]); if (item != null) { inventory.Add(item); } i++; } i++; while (i < invNames.Length) { PlacableData item = DataManager.Instance.GetData(invNames[i]); if (item != null) { itemHealth.Add(item, float.Parse(invNames[i + 1])); } i += 2; } } else { inventory.AddRange(startingInventory); } for (int i = 0; i < inventory.Count; i++) { if (inventory[i] is UpgradableData) { UpgradableData upgradable = inventory[i] as UpgradableData; if (upgradable.Level > DataManager.Instance.GetTowerLevel(upgradable.MaterialType)) { DataManager.Instance.SetTowerLevel(upgradable.MaterialType, upgradable.Level); } } } }
public void ShowUpgrade(UpgradeClickable upgradable) { placable = upgradable; upgradeData = upgradable.Data as UpgradableData; if (upgradeData.Upgrade != null) { Dictionary <PlacableData, int> upRequs = new Dictionary <PlacableData, int>(); for (int i = 0; i < upgradeData.UpgradeRequirements.Length; i++) { if (upRequs.ContainsKey(upgradeData.UpgradeRequirements[i])) { upRequs[upgradeData.UpgradeRequirements[i]]++; } else { upRequs.Add(upgradeData.UpgradeRequirements[i], 1); } } upgradeAllowed = true; string requsText = ""; foreach (KeyValuePair <PlacableData, int> pair in upRequs) { int invCount = PlayerManager.Instance.GetInventoryCount(pair.Key); requsText += invCount + " / " + pair.Value + " " + pair.Key.Name; if (invCount < pair.Value) { upgradeAllowed = false; } } RequsLabel.text = requsText; UpgradeButton.interactable = upgradeAllowed; } else { upgradeAllowed = false; RequsLabel.text = "Not upgradable"; UpgradeButton.interactable = upgradeAllowed; } }
public void SetUpgrading(UpgradableData upgradable) { upgrading = upgradable; if (upgradingObj != null) { Destroy(upgradingObj); upgradingObj = null; } if (upgrading != null) { upgradingObj = Instantiate(upgrading.Prefab); upgradingObj.GetComponent <Placable>().Data = upgrading; SetLayer(upgradingObj.transform, 0); upgradingObj.transform.SetParent(upgradeLocation); upgradingObj.transform.localPosition = Vector3.zero; upgradingObj.transform.localRotation = Quaternion.identity; upgradingObj.transform.localScale = Vector3.one; } }
private void Awake() { for (int i = 0; i < placementLocations.Length; i++) { placementLocations[i].Owner = this; } placingGrid.SetActive(false); Load(); if (placementLocations[0].CurrentPlacable == null) { placementLocations[0].SetPlacable(placementLocations[0].StartingPlacable); } for (int i = 0; i < placedInArea.Count; i++) { placedInArea[i].gameObject.SetActive(false); } book.SetActive(false); mailbox.gameObject.SetActive(false); UpgradableData currentTower = placementLocations[0].CurrentPlacable.Data as UpgradableData; DataManager.Instance.SetTowerLevel(currentTower.MaterialType, currentTower.Level); SetTower(currentTower); }
void UpdateUpgrade(UpgradableData upgradable) { current = 0; PageLabel.text = (current + 1) + " / " + 1; if (upgradable.Upgrade != null) { NameLabel.text = upgradable.Upgrade.Name; for (int i = 0; i < requs.Count; i++) { requs[i].SetActive(false); } Dictionary <PlacableData, int> requCounts = new Dictionary <PlacableData, int>(); for (int i = 0; i < upgradable.UpgradeRequirements.Length; i++) { if (requCounts.ContainsKey(upgradable.UpgradeRequirements[i])) { requCounts[upgradable.UpgradeRequirements[i]]++; } else { requCounts.Add(upgradable.UpgradeRequirements[i], 1); } } int requIndex = 0; GameObject requObj = null; if (requIndex < requs.Count) { requObj = requs[requIndex]; } else { requObj = Instantiate(RequPrefab); requObj.transform.SetParent(transform, false); (requObj.transform as RectTransform).anchoredPosition = new Vector2(-300, 500 - 200 * requIndex); requs.Add(requObj); } requObj.SetActive(false); requIndex++; UnknownLabel.gameObject.SetActive(true); UnknownLabel.text = upgradable.Name; foreach (KeyValuePair <PlacableData, int> pair in requCounts) { requObj = null; if (requIndex < requs.Count) { requObj = requs[requIndex]; requObj.SetActive(true); } else { requObj = Instantiate(RequPrefab); requObj.transform.SetParent(transform, false); (requObj.transform as RectTransform).anchoredPosition = new Vector2(-300, 500 - 200 * requIndex); requs.Add(requObj); } int invCount = PlayerManager.Instance.GetInventoryCount(pair.Key); requObj.GetComponentInChildren <Image>().sprite = pair.Key.Icon; requObj.GetComponentInChildren <Text>().text = invCount + " / " + pair.Value; requIndex++; } } else { NameLabel.text = upgradable.Name + " not upgradable"; for (int i = 0; i < requs.Count; i++) { requs[i].SetActive(false); } UnknownLabel.gameObject.SetActive(false); } }
void UpdateUpgrade()//UpgradableData[] upgradables) { int matCount = System.Enum.GetNames(typeof(MaterialType)).Length; if (current < 0) { current = matCount - 1; } else if (current >= matCount) { current = 0; } currentMat = (MaterialType)current; PageLabel.text = (current + 1) + " / " + matCount; int currentLevel = DataManager.Instance.GetTowerLevel(currentMat); UpgradableData upgradable = DataManager.Instance.GetTower(currentMat, currentLevel == 0 ? 1 : currentLevel); bool inPlayArea = PlacementManager.Instance.GetPlayArea().GetInArea(upgradable).Count > 0; CountLabel.text = levelNames[currentLevel]; //SetUseButton("Place"); UseButton.interactable = currentLevel > 0 && !inPlayArea; NameLabel.text = upgradable.Name; ItemImage.sprite = upgradable.Icon; if (currentLevel == 0) { ItemImage.color = Color.black; } else { ItemImage.color = Color.white; } for (int i = 0; i < currentLevel; i++) { levels[i].GetComponentInChildren <Image>().color = Color.white; } for (int i = currentLevel; i < levels.Count; i++) { levels[i].GetComponentInChildren <Image>().color = Color.gray; } for (int i = 0; i < requs.Count; i++) { requs[i].SetActive(false); } Dictionary <PlacableData, int> requCounts = new Dictionary <PlacableData, int>(); if (currentLevel == 0) { for (int i = 0; i < upgradable.BuildRequirements.Length; i++) { if (requCounts.ContainsKey(upgradable.BuildRequirements[i])) { requCounts[upgradable.BuildRequirements[i]]++; } else { requCounts.Add(upgradable.BuildRequirements[i], 1); } } } else { for (int i = 0; i < upgradable.UpgradeRequirements.Length; i++) { if (requCounts.ContainsKey(upgradable.UpgradeRequirements[i])) { requCounts[upgradable.UpgradeRequirements[i]]++; } else { requCounts.Add(upgradable.UpgradeRequirements[i], 1); } } } UnknownLabel.gameObject.SetActive(false); if (requCounts.Count == 0) { CraftButton.gameObject.SetActive(false); } else { int requIndex = 0; GameObject requObj = null; bool requMissing = false; foreach (KeyValuePair <PlacableData, int> pair in requCounts) { requObj = null; if (requIndex < requs.Count) { requObj = requs[requIndex]; requObj.SetActive(true); } else { requObj = Instantiate(RequPrefab); requObj.transform.SetParent(Content, false); (requObj.transform as RectTransform).anchoredPosition = new Vector2(125, -210 - 200 * requIndex); requs.Add(requObj); } int invCount = PlayerManager.Instance.GetInventoryCount(pair.Key);// + PlacementManager.Instance.GetPlayArea().GetInArea(pair.Key).Count; requObj.GetComponentInChildren <Image>().sprite = pair.Key.Icon; requObj.GetComponentInChildren <Text>().text = invCount + " / " + pair.Value; requIndex++; if (invCount < pair.Value) { requMissing = true; } } CraftButton.gameObject.SetActive(true); //CraftButtonText.text = "Upgrade"; CraftButton.interactable = !requMissing; } }