/// <summary> /// Outputs spells available to this item effect abstracted as EnchantmentSettings array. /// When EnchantmentSettings.ClassicParam is set, it refers to a classic spell ID. /// When EnchantmentSettings.CustomParam is set, it refers to a custom spell bundle. /// </summary> public override EnchantmentSettings[] GetEnchantmentSettings() { List <EnchantmentSettings> enchantments = new List <EnchantmentSettings>(); // Enumerate classic spells SpellRecord.SpellRecordData spellRecord; for (int i = 0; i < classicSpellIDs.Length; i++) { short id = classicSpellIDs[i]; if (!GameManager.Instance.EntityEffectBroker.GetClassicSpellRecord(id, out spellRecord)) { throw new Exception(string.Format("Could not find classic spell record with ID '{0}'", id)); } EnchantmentSettings enchantment = new EnchantmentSettings() { Version = 1, EffectKey = EffectKey, ClassicType = EnchantmentTypes.CastWhenUsed, ClassicParam = id, PrimaryDisplayName = properties.GroupName, SecondaryDisplayName = spellRecord.spellName, EnchantCost = classicSpellCosts[i], }; enchantments.Add(enchantment); } // TODO: Enumerate custom spell bundles supporting EnchantmentUsage.WhenUsed flag // TODO: Support ordering of list return(enchantments.ToArray()); }
/// <summary> /// Outputs all variant settings for this enchantment. /// </summary> public override EnchantmentSettings[] GetEnchantmentSettings() { List <EnchantmentSettings> enchantments = new List <EnchantmentSettings>(); // Enumerate classic params for (int i = 0; i < classicParams.Length; i++) { short id = classicParams[i]; EnchantmentSettings enchantment = new EnchantmentSettings() { Version = 1, EffectKey = EffectKey, ClassicType = EnchantmentTypes.ExtraSpellPts, ClassicParam = id, PrimaryDisplayName = properties.GroupName, SecondaryDisplayName = TextManager.Instance.GetText(textDatabase, classicTextKeys[i]), EnchantCost = classicParamCosts[i], }; enchantments.Add(enchantment); } return(enchantments.ToArray()); }
void SortForcedEnchantments(EnchantmentSettings parentEnchantment, ForcedEnchantmentSet set, out EnchantmentSettings[] forcedPowersOut, out EnchantmentSettings[] forcedSideEffectsOut) { List <EnchantmentSettings> forcedPowers = new List <EnchantmentSettings>(); List <EnchantmentSettings> forcedSideEffects = new List <EnchantmentSettings>(); foreach (ForcedEnchantment forcedEnchantment in set.forcedEffects) { IEntityEffect effect = GameManager.Instance.EntityEffectBroker.GetEffectTemplate(forcedEnchantment.key); if (effect == null) { continue; } EnchantmentSettings?enchantmentSettings = effect.GetEnchantmentSettings(forcedEnchantment.param); if (enchantmentSettings == null) { continue; } EnchantmentSettings forcedSettings = enchantmentSettings.Value; forcedSettings.ParentEnchantment = parentEnchantment.GetHashCode(); if (forcedSettings.EnchantCost > 0) { forcedPowers.Add(forcedSettings); } else { forcedSideEffects.Add(forcedSettings); } } forcedPowersOut = forcedPowers.ToArray(); forcedSideEffectsOut = forcedSideEffects.ToArray(); }
public void AddEnchantment(EnchantmentSettings enchantment) { EnchantmentPanel panel = new EnchantmentPanel(enchantment, new Rect(0, 0, GetRenderWidth(), InteriorHeight)); enchantmentPanels.Add(panel); RefreshPanelLayout(); }
public override EnchantmentSettings[] GetEnchantmentSettings() { List <EnchantmentSettings> enchantments = new List <EnchantmentSettings>(); // Enumerate available soul traps in player inventory without showing duplicates EnumerateFilledTraps(); for (int i = 0; i < enumeratedTraps.Length; i++) { if (enumeratedTraps[i] == 0) { continue; } EnchantmentSettings enchantment = new EnchantmentSettings() { Version = 1, EffectKey = EffectKey, ClassicType = EnchantmentTypes.SoulBound, ClassicParam = (short)i, PrimaryDisplayName = properties.GroupName, SecondaryDisplayName = EnemyBasics.Enemies[i].Name, EnchantCost = classicParamCosts[i], }; enchantments.Add(enchantment); } return(enchantments.ToArray()); }
bool ContainsEnchantmentSettings(EnchantmentSettings enchantment) { if (selectingPowers) { return(powersList.ContainsEnchantment(enchantment)); } else { return(sideEffectsList.ContainsEnchantment(enchantment)); } }
public bool ContainsEnchantment(EnchantmentSettings other) { foreach (EnchantmentPanel panel in enchantmentPanels) { if (panel.Enchantment == other) { return(true); } } return(false); }
public void AddEnchantment(EnchantmentSettings enchantment) { EnchantmentPanel panel = new EnchantmentPanel(enchantment, new Rect(0, 0, GetRenderWidth(), InteriorHeight)); if (enchantment.ParentEnchantment != 0) { panel.TextColor = DaggerfallUI.DaggerfallForcedEnchantmentTextColor; panel.HighlightedTextColor = DaggerfallUI.DaggerfallForcedEnchantmentTextColor; } panel.OnMouseClick += EnchantmentPanel_OnMouseClick; enchantmentPanels.Add(panel); RefreshPanelLayout(); }
void AddEnchantmentSettings(EnchantmentSettings enchantment) { if (selectingPowers) { itemPowers.Add(enchantment); powersList.AddEnchantment(enchantment); } else { itemSideEffects.Add(enchantment); sideEffectsList.AddEnchantment(enchantment); } }
public override EnchantmentSettings[] GetEnchantmentSettings() { EnchantmentSettings[] enchantments = new EnchantmentSettings[1]; enchantments[0] = new EnchantmentSettings() { Version = 1, EffectKey = EffectKey, ClassicType = EnchantmentTypes.StrengthensArmor, ClassicParam = -1, PrimaryDisplayName = GroupName, EnchantCost = enchantCost, }; return(enchantments); }
public override EnchantmentSettings[] GetEnchantmentSettings() { EnchantmentSettings[] enchantments = new EnchantmentSettings[1]; enchantments[0] = new EnchantmentSettings() { Version = 1, EffectKey = EffectKey, ClassicType = EnchantmentTypes.ExtraWeight, ClassicParam = -1, PrimaryDisplayName = properties.GroupName, EnchantCost = enchantCost, }; return(enchantments); }
public EnchantmentPanel(EnchantmentSettings enchantment, Rect renderArea) { Size = panelSizeWithoutScroller; primaryLabel = DaggerfallUI.AddTextLabel(DaggerfallUI.SmallFont, Vector2.zero, enchantment.PrimaryDisplayName, this); secondaryLabel = DaggerfallUI.AddTextLabel(DaggerfallUI.SmallFont, secondaryLabelPos, secondarySpacing + enchantment.SecondaryDisplayName, this); primaryLabel.RestrictedRenderAreaCoordinateType = secondaryLabel.RestrictedRenderAreaCoordinateType = TextLabel.RestrictedRenderArea_CoordinateType.DaggerfallNativeCoordinates; primaryLabel.RectRestrictedRenderArea = secondaryLabel.RectRestrictedRenderArea = renderArea; primaryLabel.TextColor = secondaryLabel.TextColor = textColor; OnMouseEnter += EnchantmentPanel_OnMouseEnter; OnMouseLeave += EnchantmentPanel_OnMouseLeave; RenderArea = renderArea; Enchantment = enchantment; }
/// <summary> /// Outputs spells available to this item effect abstracted as EnchantmentSettings array. /// When EnchantmentSettings.ClassicParam is set, it refers to a classic spell ID. /// When EnchantmentSettings.CustomParam is set, it refers to a custom spell bundle. /// </summary> public override EnchantmentSettings[] GetEnchantmentSettings() { List <EnchantmentSettings> enchantments = new List <EnchantmentSettings>(); // Enumerate classic spells SpellRecord.SpellRecordData spellRecord; for (int i = 0; i < classicSpellIDs.Length; i++) { short id = classicSpellIDs[i]; if (!GameManager.Instance.EntityEffectBroker.GetClassicSpellRecord(id, out spellRecord)) { throw new Exception(string.Format("Could not find classic spell record with ID '{0}'", id)); } EnchantmentSettings enchantment = new EnchantmentSettings() { Version = 1, EffectKey = EffectKey, ClassicType = EnchantmentTypes.CastWhenUsed, ClassicParam = id, PrimaryDisplayName = GroupName, SecondaryDisplayName = spellRecord.spellName, EnchantCost = classicSpellCosts[i], }; enchantments.Add(enchantment); } // Enumerate custom spell bundle offers supporting CastWhenUsedEnchantment flag EntityEffectBroker.CustomSpellBundleOffer[] offers = GameManager.Instance.EntityEffectBroker.GetCustomSpellBundleOffers(EntityEffectBroker.CustomSpellBundleOfferUsage.CastWhenUsedEnchantment); foreach (EntityEffectBroker.CustomSpellBundleOffer offer in offers) { EnchantmentSettings enchantment = new EnchantmentSettings() { Version = 1, EffectKey = EffectKey, CustomParam = offer.Key, PrimaryDisplayName = GroupName, SecondaryDisplayName = offer.BundleSetttings.Name, EnchantCost = offer.EnchantmentCost, }; enchantments.Add(enchantment); } return(enchantments.ToArray()); }
private void EnchantmentSecondaryPicker_OnUseSelectedItem() { // Get enchantment tagged to selected item ListBox.ListItem listItem = enchantmentSecondaryPicker.ListBox.SelectedValue; if (listItem.tag == null) { throw new Exception(string.Format("ListItem '{0}' has no EnchantmentSettings tag", listItem.textLabel.Text)); } // Get enchantment settings EnchantmentSettings enchantmentSettings = (EnchantmentSettings)listItem.tag; IEntityEffect enchantmentEffect = GameManager.Instance.EntityEffectBroker.GetEffectTemplate(enchantmentSettings.EffectKey); EnchantmentParam enchantmentParam = new EnchantmentParam() { ClassicParam = enchantmentSettings.ClassicParam, CustomParam = enchantmentSettings.CustomParam }; // Get forced enchantments for this effect EnchantmentSettings[] forcedPowers = null; EnchantmentSettings[] forcedSideEffects = null; ForcedEnchantmentSet? forcedEnchantmentSet = enchantmentEffect.GetForcedEnchantments(enchantmentParam); if (forcedEnchantmentSet != null) { // Sort forced enchantments into powers and side effects SortForcedEnchantments(enchantmentSettings, forcedEnchantmentSet.Value, out forcedPowers, out forcedSideEffects); // Check for overflow from automatic enchantments and display "no room in item..." // Also adding +1 to account for incoming enchantment if (powersList.EnchantmentCount + sideEffectsList.EnchantmentCount + forcedPowers.Length + forcedSideEffects.Length + 1 > 10) { DaggerfallUI.MessageBox(TextManager.Instance.GetText(textDatabase, "noRoomInItem")); return; } } // Add selected enchantment settings to powers/side-effects AddEnchantmentSettings(enchantmentSettings); AddForcedPowers(forcedPowers); AddForcedSideEffects(forcedSideEffects); // Close effect pickers enchantmentPrimaryPicker.CloseWindow(); enchantmentSecondaryPicker.CloseWindow(); }
public EnchantmentPanel(EnchantmentSettings enchantment, Rect renderArea) { bool hasSecondaryLabel = !string.IsNullOrEmpty(enchantment.SecondaryDisplayName); Size = new Vector2(panelWidthWithoutScroller, hasSecondaryLabel ? panelHeightWithSecondary : panelHeightWithoutSecondary); primaryLabel = DaggerfallUI.AddTextLabel(DaggerfallUI.SmallFont, primaryLabelPos, enchantment.PrimaryDisplayName, this); secondaryLabel = DaggerfallUI.AddTextLabel(DaggerfallUI.SmallFont, secondaryLabelPos, secondarySpacing + enchantment.SecondaryDisplayName, this); primaryLabel.TextColor = secondaryLabel.TextColor = textColor; if (!hasSecondaryLabel) { secondaryLabel.Enabled = false; } OnMouseEnter += EnchantmentPanel_OnMouseEnter; OnMouseLeave += EnchantmentPanel_OnMouseLeave; RenderArea = renderArea; Enchantment = enchantment; }
/// <summary> /// Outputs all variant settings for this enchantment. /// </summary> public override EnchantmentSettings[] GetEnchantmentSettings() { List <EnchantmentSettings> enchantments = new List <EnchantmentSettings>(); // Enumerate classic params for (int i = 0; i < classicParamCosts.Length; i++) { EnchantmentSettings enchantment = new EnchantmentSettings() { Version = 1, EffectKey = EffectKey, ClassicType = EnchantmentTypes.IncreasedWeightAllowance, ClassicParam = (short)i, PrimaryDisplayName = GroupName, SecondaryDisplayName = TextManager.Instance.GetLocalizedText(classicTextKeys[i]), EnchantCost = classicParamCosts[i], }; enchantments.Add(enchantment); } return(enchantments.ToArray()); }
/// <summary> /// Outputs all variant settings for this enchantment. /// </summary> public override EnchantmentSettings[] GetEnchantmentSettings() { List <EnchantmentSettings> enchantments = new List <EnchantmentSettings>(); // Enumerate classic params for (int i = 0; i < DaggerfallSkills.Count; i++) { DFCareer.Skills skill = (DFCareer.Skills)i; EnchantmentSettings enchantment = new EnchantmentSettings() { Version = 1, EffectKey = EffectKey, ClassicType = EnchantmentTypes.EnhancesSkill, ClassicParam = (short)i, PrimaryDisplayName = GroupName, SecondaryDisplayName = DaggerfallUnity.Instance.TextProvider.GetSkillName(skill), EnchantCost = enchantCost, }; enchantments.Add(enchantment); } return(enchantments.ToArray()); }