コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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));
                    }
                }
            }
        }