Ejemplo n.º 1
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 = enumeratedEnchantments.Where(e => e.EffectKey == effect.Key).ToArray();
            if (filteredEnchantments == null || filteredEnchantments.Length == 0)
            {
                throw new Exception(string.Format("Found no enchantments for effect key '{0}'", effect.Key));
            }

            // 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
            foreach (EnchantmentSettings enchantment in filteredEnchantments)
            {
                // Filter out enchantment when multiple instances not allowed
                if (!effect.HasItemMakerFlags(ItemMakerFlags.AllowMultipleSecondaryInstances))
                {
                    if (ContainsEnchantmentSettings(enchantment))
                    {
                        continue;
                    }
                }
                enchantmentSecondaryPicker.ListBox.AddItem(enchantment.SecondaryDisplayName, -1, enchantment);
            }

            enchantmentSecondaryPicker.ListBox.SelectedIndex = 0;
            uiManager.PushWindow(enchantmentSecondaryPicker);
        }
Ejemplo 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);
        }