public EditWeaponWindow(Player player, Weapon weapon, bool allowImplementSwitch) { this.originalWeapon = weapon; weaponCategories = new List <CategoryItem>(); if ((weapon.Category == WeaponCategory.PureImplement) || allowImplementSwitch) { weaponCategories.Add(new CategoryItem(WeaponCategory.PureImplement)); } if ((weapon.Category != WeaponCategory.PureImplement) || allowImplementSwitch) { weaponCategories.Add(new CategoryItem(WeaponCategory.SimpleMelee)); weaponCategories.Add(new CategoryItem(WeaponCategory.SimpleRanged)); weaponCategories.Add(new CategoryItem(WeaponCategory.MilitaryMelee)); weaponCategories.Add(new CategoryItem(WeaponCategory.MilitaryRanged)); weaponCategories.Add(new CategoryItem(WeaponCategory.SuperiorMelee)); weaponCategories.Add(new CategoryItem(WeaponCategory.SuperiorRanged)); } InitializeComponent(); txtName.Text = weapon.Name; txtProficiencyBonus.Text = weapon.ProficiencyBonus.ToString(); txtEnhancementBonus.Text = weapon.EnhancementBonus.ToString(); txtDamage.Text = (weapon.Damage == null ? "" : weapon.Damage.DisplayString); txtRange.Text = weapon.Range; WeaponGroup = weapon.Group; Properties = weapon.Properties; txtPrice.Text = weapon.BasePrice.ToString(); cboCategory.SelectedItem = weaponCategories.Find(x => x.Category == weapon.Category); chkIsTwoHanded.IsChecked = weapon.IsTwoHanded; txtNotes.Text = (weapon.Notes == null ? "" : weapon.Notes); chkIsImplement.IsChecked = weapon.IsImplement; WeaponImage = Common.BuildBitmapImage(weapon.Picture); WeaponBonusValue weaponBonus = player.WeaponBonuses[weapon]; if (weaponBonus == null) { weaponBonus = new WeaponBonusValue(); player.WeaponBonuses.Add(weapon, weaponBonus); } ToHitAdjustments = new BasicAdjustmentList(); foreach (BasicAdjustment adjustment in weaponBonus.ToHitAdjustments) { ToHitAdjustments.Add(new BasicAdjustment(adjustment.Modifier, adjustment.Note)); } DamageAdjustments = new BasicAdjustmentList(); foreach (BasicAdjustment adjustment in weaponBonus.DamageAdjustments) { DamageAdjustments.Add(new BasicAdjustment(adjustment.Modifier, adjustment.Note)); } }
public EditPowerWindow(Power power) { powerTypes = BindableEnum <PowerType> .BuildValues(new Dictionary <PowerType, string> { { PowerType.AtWill, "At-Will" } }); actionTypes = BindableEnum <PowerActionType> .BuildValues(new Dictionary <PowerActionType, string> { { PowerActionType.ImmediateReaction, "Immediate Reaction" }, { PowerActionType.ImmediateInterrupt, "Immediate Interrupt" } }); attackTypes = BindableEnum <PowerAttackType> .BuildValues(null, new List <PowerAttackType> { PowerAttackType.None }); attackWeaponValues = BindableEnum <WeaponSlot> .BuildValues(new Dictionary <WeaponSlot, string> { { WeaponSlot.MainWeapon, "Main Weapon" }, { WeaponSlot.OffhandWeapon, "Off-hand Weapon" }, { WeaponSlot.RangedWeapon, "Ranged Weapon" } }); attackAttributeValues = BindableEnum <AttributeType> .BuildValues(null, new List <AttributeType> { AttributeType.Wildcard }); defenseTypeValues = BindableEnum <DefenseType> .BuildValues(); bonusDamageAttributeValues = BindableEnum <AttributeType> .BuildValues(null, new List <AttributeType> { AttributeType.Wildcard }); bonusDamageAttributeValues.Insert(0, new BindableEnum <AttributeType>("N/A", (AttributeType)(-1))); InitializeComponent(); AttackAdjustments = new BasicAdjustmentList(); DamageAdjustments = new BasicAdjustmentList(); if (power == null) { txtLevel.Text = "1"; cboPowerType.SelectedItem = powerTypes.Find(x => x.Value == PowerType.AtWill); cboActionType.SelectedItem = actionTypes.Find(x => x.Value == PowerActionType.Standard); chkIsActionPower.IsChecked = true; cboAttackType.SelectedItem = attackTypes.Find(x => x.Value == PowerAttackType.Weapon); cboWeapon.SelectedItem = attackWeaponValues.Find(x => x.Value == WeaponSlot.MainWeapon); cboAttackAttr.SelectedItem = attackAttributeValues.Find(x => x.Value == AttributeType.Strength); cboDefenseType.SelectedItem = defenseTypeValues.Find(x => x.Value == DefenseType.AC); cboBonusDamageAttr.SelectedItem = bonusDamageAttributeValues.Find(x => (int)x.Value == -1); } else { txtName.Text = power.Name; txtLevel.Text = power.Level.ToString(); txtDescription.Text = power.Description; cboPowerType.SelectedItem = powerTypes.Find(x => x.Value == power.PowerType); cboActionType.SelectedItem = actionTypes.Find(x => x.Value == power.ActionType); txtNotes.Text = power.Notes; PowerImage = Common.BuildBitmapImage(power.Picture); if (power.AttackType == PowerAttackType.None) { chkIsActionPower.IsChecked = false; } else { chkIsActionPower.IsChecked = true; cboAttackType.SelectedItem = attackTypes.Find(x => x.Value == power.AttackType); cboWeapon.SelectedItem = attackWeaponValues.Find(x => x.Value == power.AttackWeapon); cboAttackAttr.SelectedItem = attackAttributeValues.Find(x => x.Value == power.AttackAttribute); cboDefenseType.SelectedItem = defenseTypeValues.Find(x => x.Value == power.DefenseType); txtDamage.Text = (power.AttackWeapon == WeaponSlot.Implement ? (power.Damage == null ? "" : power.Damage.DisplayString) : power.WeaponDamamgeMultiplier.ToString()); txtDamageType.Text = power.DamageType; if (power.BonusDamageAttribute == null) { cboBonusDamageAttr.SelectedItem = bonusDamageAttributeValues.Find(x => (int)x.Value == -1); } else { cboBonusDamageAttr.SelectedItem = bonusDamageAttributeValues.Find(x => x.Value == power.BonusDamageAttribute.Value); } foreach (BasicAdjustment adjustment in power.AttackModifiers) { attackAdjustments.Add(new BasicAdjustment(adjustment)); } foreach (BasicAdjustment adjustment in power.DamageModifiers) { damageAdjustments.Add(new BasicAdjustment(adjustment)); } } } }