Esempio n. 1
0
        protected void UpdateData(IList <ItemCraft> itemCrafts)
        {
            int selectedIdx = CacheItemSelectionManager.SelectedUI != null?CacheItemSelectionManager.IndexOf(CacheItemSelectionManager.SelectedUI) : -1;

            CacheItemSelectionManager.DeselectSelectedUI();
            CacheItemSelectionManager.Clear();

            CacheItemList.Generate(itemCrafts, (index, craftItem, ui) =>
            {
                UICraftItem uiCraftItem = ui.GetComponent <UICraftItem>();
                switch (CrafterType)
                {
                case CrafterType.Character:
                    uiCraftItem.SetupForCharacter(craftItem);
                    break;

                case CrafterType.Npc:
                    uiCraftItem.SetupForNpc(craftItem);
                    break;

                case CrafterType.Workbench:
                    uiCraftItem.SetupForWorkbench(BuildingObjectId, craftItem);
                    break;
                }
                uiCraftItem.Show();
                CacheItemSelectionManager.Add(uiCraftItem);
                if (selectedIdx == index)
                {
                    uiCraftItem.OnClickSelect();
                }
            });
        }
Esempio n. 2
0
 protected void OnSelectCraftItem(UICraftItem ui)
 {
     if (uiCraftItemDialog != null)
     {
         uiCraftItemDialog.selectionManager = CacheItemSelectionManager;
         uiCraftItemDialog.Data             = ui.Data;
         uiCraftItemDialog.Show();
     }
 }
Esempio n. 3
0
        protected override void UpdateData()
        {
            var owningCharacter = BasePlayerCharacterController.OwningCharacter;

            if (uiTextTitle != null)
            {
                uiTextTitle.text = string.Format(titleFormat, Data == null ? "Unknow" : Data.title);
            }

            if (uiTextDescription != null)
            {
                uiTextDescription.text = string.Format(descriptionFormat, Data == null ? "N/A" : Data.description);
            }

            Quest                        quest       = null;
            ItemCraft                    itemCraft   = null;
            List <NpcSellItem>           sellItems   = new List <NpcSellItem>();
            List <UINpcDialogMenuAction> menuActions = new List <UINpcDialogMenuAction>();

            switch (Data.type)
            {
            case NpcDialogType.Normal:
            case NpcDialogType.SaveRespawnPoint:
                if (onSwitchToNormalDialog == null)
                {
                    onSwitchToNormalDialog.Invoke();
                }
                var menus = Data.menus;
                for (var i = 0; i < menus.Length; ++i)
                {
                    var menu = menus[i];
                    if (menu.IsPassConditions(owningCharacter))
                    {
                        var menuAction = new UINpcDialogMenuAction();
                        menuAction.title     = menu.title;
                        menuAction.menuIndex = i;
                        menuActions.Add(menuAction);
                    }
                }
                break;

            case NpcDialogType.Quest:
                if (onSwitchToQuestDialog == null)
                {
                    onSwitchToQuestDialog.Invoke();
                }
                if (uiCharacterQuest != null)
                {
                    quest = Data.quest;
                    if (quest != null)
                    {
                        var acceptMenuAction   = new UINpcDialogMenuAction();
                        var declineMenuAction  = new UINpcDialogMenuAction();
                        var abandonMenuAction  = new UINpcDialogMenuAction();
                        var completeMenuAction = new UINpcDialogMenuAction();
                        acceptMenuAction.title       = messageQuestAccept;
                        acceptMenuAction.menuIndex   = NpcDialog.QUEST_ACCEPT_MENU_INDEX;
                        declineMenuAction.title      = messageQuestDecline;
                        declineMenuAction.menuIndex  = NpcDialog.QUEST_DECLINE_MENU_INDEX;
                        abandonMenuAction.title      = messageQuestAbandon;
                        abandonMenuAction.menuIndex  = NpcDialog.QUEST_ABANDON_MENU_INDEX;
                        completeMenuAction.title     = messageQuestComplete;
                        completeMenuAction.menuIndex = NpcDialog.QUEST_COMPLETE_MENU_INDEX;

                        CharacterQuest characterQuest;
                        var            index = owningCharacter.IndexOfQuest(quest.DataId);
                        if (index >= 0)
                        {
                            characterQuest = owningCharacter.Quests[index];
                            if (!characterQuest.IsAllTasksDone(owningCharacter))
                            {
                                menuActions.Add(abandonMenuAction);
                            }
                            else
                            {
                                menuActions.Add(completeMenuAction);
                            }
                        }
                        else
                        {
                            characterQuest = CharacterQuest.Create(quest);
                            menuActions.Add(acceptMenuAction);
                            menuActions.Add(declineMenuAction);
                        }
                        uiCharacterQuest.Setup(characterQuest, owningCharacter, index);
                    }
                }
                break;

            case NpcDialogType.Shop:
                if (onSwitchToSellItemDialog == null)
                {
                    onSwitchToSellItemDialog.Invoke();
                }
                sellItems.AddRange(Data.sellItems);
                break;

            case NpcDialogType.CraftItem:
                if (onSwitchToCraftItemDialog == null)
                {
                    onSwitchToCraftItemDialog.Invoke();
                }
                if (uiCraftItem != null)
                {
                    itemCraft = Data.itemCraft;
                    if (itemCraft != null)
                    {
                        var startMenuAction  = new UINpcDialogMenuAction();
                        var cancelMenuAction = new UINpcDialogMenuAction();
                        startMenuAction.title      = messageCraftItemStart;
                        startMenuAction.menuIndex  = NpcDialog.CRAFT_ITEM_START_MENU_INDEX;
                        cancelMenuAction.title     = messageCraftItemCancel;
                        cancelMenuAction.menuIndex = NpcDialog.CRAFT_ITEM_CANCEL_MENU_INDEX;
                        uiCraftItem.Data           = Data.itemCraft;
                        menuActions.Add(startMenuAction);
                        menuActions.Add(cancelMenuAction);
                    }
                }
                break;
            }
            // Menu
            if (uiMenuRoot != null)
            {
                uiMenuRoot.SetActive(menuActions.Count > 0);
            }
            CacheMenuList.Generate(menuActions, (index, menuAction, ui) =>
            {
                var uiNpcDialogMenu         = ui.GetComponent <UINpcDialogMenu>();
                uiNpcDialogMenu.Data        = menuAction;
                uiNpcDialogMenu.uiNpcDialog = this;
                uiNpcDialogMenu.Show();
            });
            // Quest
            if (uiCharacterQuest != null)
            {
                if (quest == null)
                {
                    uiCharacterQuest.Hide();
                }
                else
                {
                    uiCharacterQuest.Show();
                }
            }
            // Shop
            if (uiSellItemRoot != null)
            {
                uiSellItemRoot.SetActive(sellItems.Count > 0);
            }
            CacheSellItemList.Generate(sellItems, (index, sellItem, ui) =>
            {
                var uiNpcSellItem = ui.GetComponent <UINpcSellItem>();
                uiNpcSellItem.Setup(sellItem, index);
            });
            // Craft Item
            if (uiCraftItem != null)
            {
                if (itemCraft == null)
                {
                    uiCraftItem.Hide();
                }
                else
                {
                    uiCraftItem.Show();
                }
            }
        }
Esempio n. 4
0
        protected override void UpdateData()
        {
            BasePlayerCharacterEntity owningCharacter = BasePlayerCharacterController.OwningCharacter;

            if (uiTextTitle != null)
            {
                uiTextTitle.text = string.Format(
                    LanguageManager.GetText(formatKeyTitle),
                    Data == null ? LanguageManager.GetUnknowTitle() : Data.Title);
            }

            if (uiTextDescription != null)
            {
                uiTextDescription.text = string.Format(
                    LanguageManager.GetText(formatKeyDescription),
                    Data == null ? LanguageManager.GetUnknowDescription() : Data.Description);
            }

            Quest quest        = null;
            Item  craftingItem = null;
            List <NpcSellItem>           sellItems   = new List <NpcSellItem>();
            List <UINpcDialogMenuAction> menuActions = new List <UINpcDialogMenuAction>();

            switch (Data.type)
            {
            case NpcDialogType.Normal:
                if (onSwitchToNormalDialog == null)
                {
                    onSwitchToNormalDialog.Invoke();
                }
                NpcDialogMenu[] menus = Data.menus;
                for (int i = 0; i < menus.Length; ++i)
                {
                    NpcDialogMenu menu = menus[i];
                    if (menu.IsPassConditions(owningCharacter))
                    {
                        UINpcDialogMenuAction menuAction = new UINpcDialogMenuAction();
                        menuAction.title     = menu.title;
                        menuAction.menuIndex = i;
                        menuActions.Add(menuAction);
                    }
                }
                break;

            case NpcDialogType.Quest:
                if (onSwitchToQuestDialog == null)
                {
                    onSwitchToQuestDialog.Invoke();
                }
                if (uiCharacterQuest != null)
                {
                    quest = Data.quest;
                    if (quest != null)
                    {
                        UINpcDialogMenuAction acceptMenuAction   = new UINpcDialogMenuAction();
                        UINpcDialogMenuAction declineMenuAction  = new UINpcDialogMenuAction();
                        UINpcDialogMenuAction abandonMenuAction  = new UINpcDialogMenuAction();
                        UINpcDialogMenuAction completeMenuAction = new UINpcDialogMenuAction();
                        acceptMenuAction.title       = messageQuestAccept;
                        acceptMenuAction.menuIndex   = NpcDialog.QUEST_ACCEPT_MENU_INDEX;
                        declineMenuAction.title      = messageQuestDecline;
                        declineMenuAction.menuIndex  = NpcDialog.QUEST_DECLINE_MENU_INDEX;
                        abandonMenuAction.title      = messageQuestAbandon;
                        abandonMenuAction.menuIndex  = NpcDialog.QUEST_ABANDON_MENU_INDEX;
                        completeMenuAction.title     = messageQuestComplete;
                        completeMenuAction.menuIndex = NpcDialog.QUEST_COMPLETE_MENU_INDEX;

                        CharacterQuest characterQuest;
                        int            index = owningCharacter.IndexOfQuest(quest.DataId);
                        if (index >= 0)
                        {
                            characterQuest = owningCharacter.Quests[index];
                            if (!characterQuest.IsAllTasksDone(owningCharacter))
                            {
                                menuActions.Add(abandonMenuAction);
                            }
                            else
                            {
                                menuActions.Add(completeMenuAction);
                            }
                        }
                        else
                        {
                            characterQuest = CharacterQuest.Create(quest);
                            menuActions.Add(acceptMenuAction);
                            menuActions.Add(declineMenuAction);
                        }
                        uiCharacterQuest.Setup(characterQuest, owningCharacter, index);
                    }
                }
                break;

            case NpcDialogType.Shop:
                if (onSwitchToSellItemDialog == null)
                {
                    onSwitchToSellItemDialog.Invoke();
                }
                sellItems.AddRange(Data.sellItems);
                break;

            case NpcDialogType.CraftItem:
                if (onSwitchToCraftItemDialog == null)
                {
                    onSwitchToCraftItemDialog.Invoke();
                }
                if (uiCraftItem != null)
                {
                    craftingItem = Data.itemCraft.CraftingItem;
                    if (craftingItem != null)
                    {
                        UINpcDialogMenuAction startMenuAction  = new UINpcDialogMenuAction();
                        UINpcDialogMenuAction cancelMenuAction = new UINpcDialogMenuAction();
                        startMenuAction.title      = messageCraftItemStart;
                        startMenuAction.menuIndex  = NpcDialog.CRAFT_ITEM_START_MENU_INDEX;
                        cancelMenuAction.title     = messageCraftItemCancel;
                        cancelMenuAction.menuIndex = NpcDialog.CRAFT_ITEM_CANCEL_MENU_INDEX;
                        uiCraftItem.SetupForNpc(Data.itemCraft);
                        menuActions.Add(startMenuAction);
                        menuActions.Add(cancelMenuAction);
                    }
                }
                break;

            case NpcDialogType.SaveRespawnPoint:
                if (onSwitchToSaveRespawnPointDialog != null)
                {
                    onSwitchToSaveRespawnPointDialog.Invoke();
                }
                UINpcDialogMenuAction saveRespawnPointConfirmAction = new UINpcDialogMenuAction();
                UINpcDialogMenuAction saveRespawnPointCancelAction  = new UINpcDialogMenuAction();
                saveRespawnPointConfirmAction.title     = messageSaveRespawnPointConfirm;
                saveRespawnPointConfirmAction.menuIndex = NpcDialog.SAVE_SPAWN_POINT_CONFIRM_MENU_INDEX;
                saveRespawnPointCancelAction.title      = messageSaveRespawnPointCancel;
                saveRespawnPointCancelAction.menuIndex  = NpcDialog.SAVE_SPAWN_POINT_CANCEL_MENU_INDEX;
                menuActions.Add(saveRespawnPointConfirmAction);
                menuActions.Add(saveRespawnPointCancelAction);
                break;

            case NpcDialogType.Warp:
                if (onSwitchToWarpDialog != null)
                {
                    onSwitchToWarpDialog.Invoke();
                }
                UINpcDialogMenuAction warpConfirmAction = new UINpcDialogMenuAction();
                UINpcDialogMenuAction warpCancelAction  = new UINpcDialogMenuAction();
                warpConfirmAction.title     = messageWarpConfirm;
                warpConfirmAction.menuIndex = NpcDialog.WARP_CONFIRM_MENU_INDEX;
                warpCancelAction.title      = messageWarpCancel;
                warpCancelAction.menuIndex  = NpcDialog.WARP_CANCEL_MENU_INDEX;
                menuActions.Add(warpConfirmAction);
                menuActions.Add(warpCancelAction);
                break;

            case NpcDialogType.PlayerStorage:
                if (onSwitchToPlayerStorageDialog != null)
                {
                    onSwitchToPlayerStorageDialog.Invoke();
                }
                UINpcDialogMenuAction playerStorageConfirmAction = new UINpcDialogMenuAction();
                UINpcDialogMenuAction playerStorageCancelAction  = new UINpcDialogMenuAction();
                playerStorageConfirmAction.title     = messagePlayerStorageConfirm;
                playerStorageConfirmAction.menuIndex = NpcDialog.STORAGE_CONFIRM_MENU_INDEX;
                playerStorageCancelAction.title      = messagePlayerStorageCancel;
                playerStorageCancelAction.menuIndex  = NpcDialog.STORAGE_CANCEL_MENU_INDEX;
                menuActions.Add(playerStorageConfirmAction);
                menuActions.Add(playerStorageCancelAction);
                break;

            case NpcDialogType.GuildStorage:
                if (onSwitchToGuildStorageDialog != null)
                {
                    onSwitchToGuildStorageDialog.Invoke();
                }
                UINpcDialogMenuAction guildStorageConfirmAction = new UINpcDialogMenuAction();
                UINpcDialogMenuAction guildStorageCancelAction  = new UINpcDialogMenuAction();
                guildStorageConfirmAction.title     = messageGuildStorageConfirm;
                guildStorageConfirmAction.menuIndex = NpcDialog.STORAGE_CONFIRM_MENU_INDEX;
                guildStorageCancelAction.title      = messageGuildStorageCancel;
                guildStorageCancelAction.menuIndex  = NpcDialog.STORAGE_CANCEL_MENU_INDEX;
                menuActions.Add(guildStorageConfirmAction);
                menuActions.Add(guildStorageCancelAction);
                break;
            }
            // Menu
            if (uiMenuRoot != null)
            {
                uiMenuRoot.SetActive(menuActions.Count > 0);
            }
            CacheMenuList.Generate(menuActions, (index, menuAction, ui) =>
            {
                UINpcDialogMenu uiNpcDialogMenu = ui.GetComponent <UINpcDialogMenu>();
                uiNpcDialogMenu.Data            = menuAction;
                uiNpcDialogMenu.uiNpcDialog     = this;
                uiNpcDialogMenu.Show();
            });
            // Quest
            if (uiCharacterQuest != null)
            {
                if (quest == null)
                {
                    uiCharacterQuest.Hide();
                }
                else
                {
                    uiCharacterQuest.Show();
                }
            }
            // Shop
            if (uiSellItemRoot != null)
            {
                uiSellItemRoot.SetActive(sellItems.Count > 0);
            }
            CacheSellItemList.Generate(sellItems, (index, sellItem, ui) =>
            {
                UINpcSellItem uiNpcSellItem = ui.GetComponent <UINpcSellItem>();
                uiNpcSellItem.Setup(sellItem, index);
            });
            // Craft Item
            if (uiCraftItem != null)
            {
                if (craftingItem == null)
                {
                    uiCraftItem.Hide();
                }
                else
                {
                    uiCraftItem.Show();
                }
            }
        }
Esempio n. 5
0
        protected override void UpdateData()
        {
            if (Level <= 0)
            {
                onSetLevelZeroData.Invoke();
            }
            else
            {
                onSetNonLevelZeroData.Invoke();
            }

            if (uiTextTitle != null)
            {
                uiTextTitle.text = string.Format(
                    LanguageManager.GetText(formatKeyTitle),
                    Skill == null ? LanguageManager.GetUnknowTitle() : Skill.Title);
            }

            if (uiTextDescription != null)
            {
                uiTextDescription.text = string.Format(
                    LanguageManager.GetText(formatKeyDescription),
                    Skill == null ? LanguageManager.GetUnknowDescription() : Skill.Description);
            }

            if (uiTextLevel != null)
            {
                uiTextLevel.text = string.Format(
                    LanguageManager.GetText(formatKeyLevel),
                    Level.ToString("N0"));
            }

            if (imageIcon != null)
            {
                Sprite iconSprite = Skill == null ? null : Skill.icon;
                imageIcon.gameObject.SetActive(iconSprite != null);
                imageIcon.sprite = iconSprite;
            }

            if (uiTextSkillType != null)
            {
                switch (Skill.skillType)
                {
                case SkillType.Active:
                    uiTextSkillType.text = string.Format(
                        LanguageManager.GetText(formatKeySkillType),
                        LanguageManager.GetText(UILocaleKeys.UI_SKILL_TYPE_ACTIVE.ToString()));
                    break;

                case SkillType.Passive:
                    uiTextSkillType.text = string.Format(
                        LanguageManager.GetText(formatKeySkillType),
                        LanguageManager.GetText(UILocaleKeys.UI_SKILL_TYPE_PASSIVE.ToString()));
                    break;

                case SkillType.CraftItem:
                    uiTextSkillType.text = string.Format(
                        LanguageManager.GetText(formatKeySkillType),
                        LanguageManager.GetText(UILocaleKeys.UI_SKILL_TYPE_CRAFT_ITEM.ToString()));
                    break;
                }
            }

            if (uiTextAvailableWeapons != null)
            {
                if (Skill.availableWeapons == null || Skill.availableWeapons.Length == 0)
                {
                    uiTextAvailableWeapons.gameObject.SetActive(false);
                }
                else
                {
                    string str = string.Empty;
                    foreach (WeaponType availableWeapon in Skill.availableWeapons)
                    {
                        if (!string.IsNullOrEmpty(str))
                        {
                            str += "/";
                        }
                        str += availableWeapon.Title;
                    }
                    uiTextAvailableWeapons.text = string.Format(
                        LanguageManager.GetText(formatKeyAvailableWeapons),
                        str);
                    uiTextAvailableWeapons.gameObject.SetActive(true);
                }
            }

            if (uiTextConsumeMp != null)
            {
                uiTextConsumeMp.text = string.Format(
                    LanguageManager.GetText(formatKeyConsumeMp),
                    (Skill == null || Level <= 0) ?
                    LanguageManager.GetUnknowDescription() :
                    Skill.GetConsumeMp(Level).ToString("N0"));
            }

            if (uiRequirement != null)
            {
                if (Skill == null || (Skill.GetRequireCharacterLevel(Level) == 0 && Skill.CacheRequireSkillLevels.Count == 0))
                {
                    uiRequirement.Hide();
                }
                else
                {
                    uiRequirement.Show();
                    uiRequirement.Data = new CharacterSkillTuple(CharacterSkill, Level);
                }
            }

            if (uiCraftItem != null)
            {
                if (Skill == null || Skill.skillType != SkillType.CraftItem)
                {
                    uiCraftItem.Hide();
                }
                else
                {
                    uiCraftItem.SetupForCharacter(Skill.itemCraft);
                    uiCraftItem.Show();
                }
            }

            bool isAttack = Skill != null && Skill.IsAttack();
            bool isOverrideWeaponDamage = isAttack && Skill.skillAttackType == SkillAttackType.Normal;

            if (uiDamageAmount != null)
            {
                if (!isOverrideWeaponDamage)
                {
                    uiDamageAmount.Hide();
                }
                else
                {
                    uiDamageAmount.Show();
                    KeyValuePair <DamageElement, MinMaxFloat> keyValuePair = Skill.GetDamageAmount(Level, null);
                    uiDamageAmount.Data = new DamageElementAmountTuple(keyValuePair.Key, keyValuePair.Value);
                }
            }

            if (uiDamageInflictions != null)
            {
                Dictionary <DamageElement, float> damageInflictionRates = Skill.GetWeaponDamageInflictions(Level);
                if (!isAttack || damageInflictionRates == null || damageInflictionRates.Count == 0)
                {
                    uiDamageInflictions.Hide();
                }
                else
                {
                    uiDamageInflictions.Show();
                    uiDamageInflictions.Data = damageInflictionRates;
                }
            }

            if (uiAdditionalDamageAmounts != null)
            {
                Dictionary <DamageElement, MinMaxFloat> additionalDamageAmounts = Skill.GetAdditionalDamageAmounts(Level);
                if (!isAttack || additionalDamageAmounts == null || additionalDamageAmounts.Count == 0)
                {
                    uiAdditionalDamageAmounts.Hide();
                }
                else
                {
                    uiAdditionalDamageAmounts.Show();
                    uiAdditionalDamageAmounts.Data = additionalDamageAmounts;
                }
            }

            if (uiSkillBuff != null)
            {
                if (!Skill.IsBuff())
                {
                    uiSkillBuff.Hide();
                }
                else
                {
                    uiSkillBuff.Show();
                    uiSkillBuff.Data = new BuffTuple(Skill.buff, Level);
                }
            }

            if (uiSkillDebuff != null)
            {
                if (!Skill.IsDebuff())
                {
                    uiSkillDebuff.Hide();
                }
                else
                {
                    uiSkillDebuff.Show();
                    uiSkillDebuff.Data = new BuffTuple(Skill.debuff, Level);
                }
            }

            if (clones != null && clones.Length > 0)
            {
                for (int i = 0; i < clones.Length; ++i)
                {
                    if (clones[i] == null)
                    {
                        continue;
                    }
                    clones[i].Data = Data;
                }
            }

            if (uiNextLevelSkill != null)
            {
                if (Level + 1 > Skill.maxLevel)
                {
                    uiNextLevelSkill.Hide();
                }
                else
                {
                    uiNextLevelSkill.Setup(new CharacterSkillTuple(CharacterSkill, (short)(Level + 1)), Character, IndexOfData);
                    uiNextLevelSkill.Show();
                }
            }
        }
Esempio n. 6
0
        protected override void UpdateData()
        {
            if (Level <= 0)
            {
                onSetLevelZeroData.Invoke();
            }
            else
            {
                onSetNonLevelZeroData.Invoke();
            }

            if (uiTextTitle != null)
            {
                uiTextTitle.text = string.Format(titleFormat, Skill == null ? "Unknow" : Skill.title);
            }

            if (uiTextDescription != null)
            {
                uiTextDescription.text = string.Format(descriptionFormat, Skill == null ? "N/A" : Skill.description);
            }

            if (uiTextLevel != null)
            {
                uiTextLevel.text = string.Format(levelFormat, Level.ToString("N0"));
            }

            if (imageIcon != null)
            {
                var iconSprite = Skill == null ? null : Skill.icon;
                imageIcon.gameObject.SetActive(iconSprite != null);
                imageIcon.sprite = iconSprite;
            }

            if (uiTextSkillType != null)
            {
                switch (Skill.skillType)
                {
                case SkillType.Active:
                    uiTextSkillType.text = string.Format(skillTypeFormat, activeSkillType);
                    break;

                case SkillType.Passive:
                    uiTextSkillType.text = string.Format(skillTypeFormat, passiveSkillType);
                    break;

                case SkillType.CraftItem:
                    uiTextSkillType.text = string.Format(skillTypeFormat, craftItemSkillType);
                    break;
                }
            }

            if (uiTextAvailableWeapons != null)
            {
                if (Skill.availableWeapons == null || Skill.availableWeapons.Length == 0)
                {
                    uiTextAvailableWeapons.gameObject.SetActive(false);
                }
                else
                {
                    var str = string.Empty;
                    foreach (var availableWeapon in Skill.availableWeapons)
                    {
                        if (!string.IsNullOrEmpty(str))
                        {
                            str += "/";
                        }
                        str += availableWeapon.title;
                    }
                    uiTextAvailableWeapons.text = string.Format(availableWeaponsFormat, str);
                    uiTextAvailableWeapons.gameObject.SetActive(true);
                }
            }

            if (uiTextConsumeMp != null)
            {
                uiTextConsumeMp.text = string.Format(consumeMpFormat, Skill == null || Level <= 0 ? "N/A" : Skill.GetConsumeMp(Level).ToString("N0"));
            }

            if (uiRequirement != null)
            {
                if (Skill == null || (Skill.GetRequireCharacterLevel(Level) == 0 && Skill.CacheRequireSkillLevels.Count == 0))
                {
                    uiRequirement.Hide();
                }
                else
                {
                    uiRequirement.Show();
                    uiRequirement.Data = new SkillTuple(Skill, Level);
                }
            }

            if (uiCraftItem != null)
            {
                if (Skill == null || Skill.skillType != SkillType.CraftItem)
                {
                    uiCraftItem.Hide();
                }
                else
                {
                    uiCraftItem.Show();
                    uiCraftItem.Data = Skill.itemCraft;
                }
            }

            var isAttack = Skill != null && Skill.IsAttack();
            var isOverrideWeaponDamage = isAttack && Skill.skillAttackType == SkillAttackType.Normal;

            if (uiDamageAmount != null)
            {
                if (!isOverrideWeaponDamage)
                {
                    uiDamageAmount.Hide();
                }
                else
                {
                    uiDamageAmount.Show();
                    var keyValuePair = Skill.GetDamageAmount(Level, null);
                    uiDamageAmount.Data = new DamageElementAmountTuple(keyValuePair.Key, keyValuePair.Value);
                }
            }

            if (uiDamageInflictions != null)
            {
                var damageInflictionRates = Skill.GetWeaponDamageInflictions(Level);
                if (!isAttack || damageInflictionRates == null || damageInflictionRates.Count == 0)
                {
                    uiDamageInflictions.Hide();
                }
                else
                {
                    uiDamageInflictions.Show();
                    uiDamageInflictions.Data = damageInflictionRates;
                }
            }

            if (uiAdditionalDamageAmounts != null)
            {
                var additionalDamageAmounts = Skill.GetAdditionalDamageAmounts(Level);
                if (!isAttack || additionalDamageAmounts == null || additionalDamageAmounts.Count == 0)
                {
                    uiAdditionalDamageAmounts.Hide();
                }
                else
                {
                    uiAdditionalDamageAmounts.Show();
                    uiAdditionalDamageAmounts.Data = additionalDamageAmounts;
                }
            }

            if (uiSkillBuff != null)
            {
                if (!Skill.IsBuff())
                {
                    uiSkillBuff.Hide();
                }
                else
                {
                    uiSkillBuff.Show();
                    uiSkillBuff.Data = new BuffTuple(Skill.buff, Level);
                }
            }

            if (uiSkillDebuff != null)
            {
                if (!Skill.IsDebuff())
                {
                    uiSkillDebuff.Hide();
                }
                else
                {
                    uiSkillDebuff.Show();
                    uiSkillDebuff.Data = new BuffTuple(Skill.debuff, Level);
                }
            }

            if (uiNextLevelSkill != null)
            {
                if (Level + 1 > Skill.maxLevel)
                {
                    uiNextLevelSkill.Hide();
                }
                else
                {
                    uiNextLevelSkill.Setup(new SkillTuple(Skill, (short)(Level + 1)), character, indexOfData);
                    uiNextLevelSkill.Show();
                }
            }
        }