예제 #1
0
    public void display(GameObject obj)
    {
        bool levelDataFound = false;
        bool bonusFound     = false;

        string levelText = "";
        string bonusText = "";

        AbilityGeneralData generalData = obj.GetComponent <AbilityGeneralData>();

        if (generalData)
        {
            nameLabel.text        = generalData.abilityName;
            categoryLabel.text    = generalData.abilityCategoryText;
            descriptionLabel.text = generalData.abilityDescription;
        }

        AbilityCostData costData = obj.GetComponent <AbilityCostData>();

        if (costData)
        {
            int costPanels = 0;

            if (costData.abilityMentalCost == 0 && costData.abilityPhysicalCost == 0)
            {
                costPanel.SetActive(false);
            }
            else
            {
                costPanel.SetActive(true);
            }

            if (costData.abilityMentalCost > 0)
            {
                mentalCostPanel.SetActive(true);
                costPanels++;
            }
            else
            {
                mentalCostPanel.SetActive(false);
            }

            if (costData.abilityPhysicalCost > 0)
            {
                physicalCostPanel.SetActive(true);
                costPanels++;
            }
            else
            {
                physicalCostPanel.SetActive(false);
            }

            if (costPanels == 0)
            {
                costPanel.SetActive(false);
            }
            else
            {
                costPanel.SetActive(true);

                if (costPanels > 1)
                {
                    separatorPanel.SetActive(true);
                }
                else
                {
                    separatorPanel.SetActive(false);
                }
            }

            mentalCostLabel.text   = costData.abilityMentalCost.ToString();
            physicalCostLabel.text = costData.abilityPhysicalCost.ToString();
        }

        AbilityRange abilityRange = obj.GetComponent <AbilityRange>();

        if (abilityRange)
        {
            rangeTypeLabel.text = abilityRange.getAbilityRangeDescription();
        }

        AbilityArea abilityArea = obj.GetComponent <AbilityArea>();

        if (abilityArea)
        {
            areaTypeLabel.text = abilityArea.getAbilityAreaDescription();
        }

        for (int i = 0; i < obj.transform.childCount; ++i)
        {
            Transform child = obj.transform.GetChild(i);

            if (child.name == "Bonus")
            {
                string levelChildName;

                AbilityLevelData abilityLevelData = child.GetComponent <AbilityLevelData>();

                if (abilityLevelData != null)
                {
                    levelDataFound = true;
                    levelText      = "Nivel " + abilityLevelData.level.ToString();

                    levelChildName = "Level " + abilityLevelData.level;

                    for (int j = 0; j < child.transform.childCount; ++j)
                    {
                        Transform bonusChild = child.transform.GetChild(j);

                        if (bonusChild.name == levelChildName)
                        {
                            AbilityBonus[] abilityBonusList = bonusChild.GetComponents <AbilityBonus>();
                            foreach (AbilityBonus abilityBonus in abilityBonusList)
                            {
                                bonusFound = true;

                                if (bonusText != "")
                                {
                                    bonusText += "\n";
                                }
                                bonusText += abilityBonus.getAbilityBonusDescription();
                            }

                            break;
                        }
                    }
                }
            }

            foreach (Transform effectChild in effectsPanel.transform)
            {
                Destroy(effectChild.gameObject);
            }
            if (child.name == "Effects")
            {
                for (int j = 0; j < child.childCount; ++j)
                {
                    Transform childEffect = child.transform.GetChild(j);

                    GameObject effectPanelObject = Instantiate(effectPanelPrefab);
                    effectPanelObject.transform.SetParent(effectsPanel.transform);
                    effectPanelObject.transform.localScale    = new Vector3(1.0f, 1.0f, 1.0f);
                    effectPanelObject.transform.localPosition = new Vector3(0.0f, 0.0f, 0.0f);
                    EffectPanel effectPanel = effectPanelObject.GetComponent <EffectPanel>();

                    if (effectPanel)
                    {
                        AbilityPower abilityPower = childEffect.GetComponent <AbilityPower>();
                        if (abilityPower)
                        {
                            effectPanel.powerLabel.gameObject.SetActive(true);

                            effectPanel.powerLabel.text = abilityPower.getAbilityPower().ToString() + "%";
                        }
                        else
                        {
                            effectPanel.powerLabel.gameObject.SetActive(false);
                        }

                        AbilityHitRate abilityHitRate = childEffect.GetComponent <AbilityHitRate>();
                        if (abilityHitRate)
                        {
                            effectPanel.hitRateLabel.gameObject.SetActive(true);

                            effectPanel.hitRateLabel.text = abilityHitRate.getAbilityHitRateDescription();
                        }
                        else
                        {
                            effectPanel.hitRateLabel.gameObject.SetActive(false);
                        }
                    }
                }
            }
        }

        if (levelDataFound)
        {
            levelPanel.gameObject.SetActive(true);
            levelLabel.text = levelText;
        }
        else
        {
            levelPanel.gameObject.SetActive(false);
        }

        if (bonusFound)
        {
            CentralPanelSeparator.SetActive(true);
            bonusLabel.gameObject.SetActive(true);
            bonusLabel.text = bonusText;
        }
        else
        {
            CentralPanelSeparator.SetActive(false);
            bonusLabel.gameObject.SetActive(false);
            bonusLabel.text = "";
        }
    }
예제 #2
0
    void Awake()
    {
        levelData = transform.parent.GetComponent <AbilityLevelData>();

        this.AddObserver(onLevelChangedHandler, AbilityLevelData.levelChanged, levelData);
    }