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);
    }
Beispiel #2
0
 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;
    }
Beispiel #4
0
    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();
        }
    }
Beispiel #5
0
    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);
                }
            }
        }
    }
Beispiel #6
0
    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;
        }
    }
Beispiel #7
0
    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;
        }
    }
Beispiel #8
0
    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);
    }
Beispiel #9
0
    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;
        }
    }