void SkillPicker_OnItemPicked(int index, string skillName)
        {
            skillPicker.CloseWindow();
            switch (lastSkillButtonId)
            {
            case 0:
                createdClass.PrimarySkill1 = skillsDict[skillName];
                break;

            case 1:
                createdClass.PrimarySkill2 = skillsDict[skillName];
                break;

            case 2:
                createdClass.PrimarySkill3 = skillsDict[skillName];
                break;

            case 3:
                createdClass.MajorSkill1 = skillsDict[skillName];
                break;

            case 4:
                createdClass.MajorSkill2 = skillsDict[skillName];
                break;

            case 5:
                createdClass.MajorSkill3 = skillsDict[skillName];
                break;

            case 6:
                createdClass.MinorSkill1 = skillsDict[skillName];
                break;

            case 7:
                createdClass.MinorSkill2 = skillsDict[skillName];
                break;

            case 8:
                createdClass.MinorSkill3 = skillsDict[skillName];
                break;

            case 9:
                createdClass.MinorSkill4 = skillsDict[skillName];
                break;

            case 10:
                createdClass.MinorSkill5 = skillsDict[skillName];
                break;

            case 11:
                createdClass.MinorSkill6 = skillsDict[skillName];
                break;

            default:
                return;
            }
            skillsList.Remove(skillName);
            if (skillLabels[lastSkillButtonId].Text != string.Empty)
            {
                skillsList.Add(skillLabels[lastSkillButtonId].Text);
            }
            skillsList.Sort();
            skillLabels[lastSkillButtonId].Text = skillName;
        }
Exemplo n.º 2
0
        private void EnchantmentPrimaryPicker_OnUseSelectedItem()
        {
            // Clear existing
            enchantmentSecondaryPicker.ListBox.ClearItems();

            // Get the effect template tagged to selected item
            ListBox.ListItem listItem = enchantmentPrimaryPicker.ListBox.SelectedValue;
            IEntityEffect    effect   = listItem.tag as IEntityEffect;

            if (effect == null)
            {
                throw new Exception(string.Format("ListItem '{0}' has no IEntityEffect tag", listItem.textLabel.Text));
            }

            // Filter enchantments based on effect key
            EnchantmentSettings[] filteredEnchantments = GetFilteredEnchantments(effect);

            // If this is a singleton effect with no secondary options then add directly to powers/side-effects
            if (filteredEnchantments.Length == 1)
            {
                AddEnchantmentSettings(filteredEnchantments[0]);
                enchantmentPrimaryPicker.CloseWindow();
                return;
            }

            // Order filtered list by alpha when requested by effect flags
            if (effect.HasItemMakerFlags(ItemMakerFlags.AlphaSortSecondaryList))
            {
                filteredEnchantments = filteredEnchantments.OrderBy(o => o.SecondaryDisplayName).ToArray();
            }

            // User must select from available secondary enchantment types
            EnchantmentSettings[] currentPowers      = powersList.GetEnchantments();
            EnchantmentSettings[] currentSideEffects = sideEffectsList.GetEnchantments();
            foreach (EnchantmentSettings enchantment in filteredEnchantments)
            {
                // Filter out enchantment when multiple instances not allowed
                if (!effect.HasItemMakerFlags(ItemMakerFlags.AllowMultipleSecondaryInstances))
                {
                    if (ContainsEnchantmentSettings(enchantment))
                    {
                        continue;
                    }
                }

                // Filter if any current secondary enchantments are exclusive to this one
                EnchantmentParam comparerParam = new EnchantmentParam()
                {
                    ClassicParam = enchantment.ClassicParam, CustomParam = enchantment.CustomParam
                };
                if (effect.IsEnchantmentExclusiveTo(currentPowers, comparerParam) || effect.IsEnchantmentExclusiveTo(currentSideEffects, comparerParam))
                {
                    continue;
                }

                enchantmentSecondaryPicker.ListBox.AddItem(enchantment.SecondaryDisplayName, -1, enchantment);
            }

            enchantmentSecondaryPicker.ListBox.SelectedIndex = 0;
            uiManager.PushWindow(enchantmentSecondaryPicker);
        }