Example #1
0
        private WeaponItem ShowMeleeWeaponDialog(IEnumerable <WeaponItem> items, bool melee, bool ranged, bool natural)
        {
            WeaponSelectWindow wind = new WeaponSelectWindow();

            wind.Owner   = this;
            wind.Melee   = melee;
            wind.Ranged  = ranged;
            wind.Natural = natural;
            wind.Hands   = characterAttacks.Hands - CountHands(items);
            wind.Size    = SizeMods.GetSize(_Monster.Size);

            wind.WindowStartupLocation = WindowStartupLocation.CenterOwner;

            WeaponItem item = null;

            if (wind.ShowDialog() == true)
            {
                if (wind.Weapon != null)
                {
                    item = new WeaponItem(wind.Weapon);
                }
            }

            return(item);
        }
Example #2
0
        private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            Button button = (Button)sender;


            WeaponItem item = ShowMeleeWeaponDialog(attacks.RangedWeapons, false, false, true);


            if (item != null)
            {
                bool bAdded = false;
                foreach (WeaponItem wi in attacks.NaturalAttacks)
                {
                    if (String.Compare(wi.Name, item.Name, true) == 0)
                    {
                        wi.Count++;
                        bAdded = true;
                        break;
                    }
                }

                if (!bAdded)
                {
                    attacks.NaturalAttacks.Add(item);
                }

                naturalView.Refresh();

                UpdateMeleeString();
            }
        }
Example #3
0
        private void AddWeaponButton_Click(object sender, RoutedEventArgs e)
        {
            Button button = (Button)sender;

            List <WeaponItem> items = (List <WeaponItem>)button.DataContext;

            WeaponItem item = ShowMeleeWeaponDialog(items, true, false, false);


            if (item != null)
            {
                if (items.Count == 0)
                {
                    item.MainHand = true;
                }

                items.Add(item);

                meleeView.Refresh();

                UpdateMeleeString();
            }

            button.IsEnabled = (characterAttacks.Hands > CountHands(items)) ? true : false;
        }
Example #4
0
        private void SpecialAbilitesListBox_Loaded(object sender, System.Windows.RoutedEventArgs e)
        {
            ListBox box = (ListBox)sender;

            if (box.DataContext.GetType() == typeof(WeaponItem))
            {
                WeaponItem item = (WeaponItem)box.DataContext;

                List <WeaponSpecialAbilityItem> list = new List <WeaponSpecialAbilityItem>();

                if (item.Weapon.Ranged)
                {
                    foreach (WeaponSpecialAbility ability in WeaponSpecialAbility.RangedAbilities)
                    {
                        bool contains = false;

                        if (item.SpecialAbilitySet.ContainsKey(ability.Name))
                        {
                            contains = true;
                        }
                        else if (ability.AltName != null && ability.AltName.Length > 0 &&
                                 item.SpecialAbilitySet.ContainsKey(ability.AltName))
                        {
                            contains = true;
                        }

                        list.Add(new WeaponSpecialAbilityItem(contains,
                                                              ability, item));
                    }
                }
                else
                {
                    foreach (WeaponSpecialAbility ability in WeaponSpecialAbility.MeleeAbilities)
                    {
                        bool contains = false;

                        if (item.SpecialAbilitySet.ContainsKey(ability.Name))
                        {
                            contains = true;
                        }
                        else if (ability.AltName != null && ability.AltName.Length > 0 &&
                                 item.SpecialAbilitySet.ContainsKey(ability.AltName))
                        {
                            contains = true;
                        }


                        list.Add(new WeaponSpecialAbilityItem(contains,
                                                              ability, item));
                    }
                }

                box.DataContext = list;
            }
        }
Example #5
0
        private void Attack_MouseDown(object sender, MouseButtonEventArgs e)
        {
            Image      image = sender as Image;
            WeaponItem item  = image.DataContext as WeaponItem;

            if (item != null && item.Weapon.Hands.Equals("One-Handed", StringComparison.InvariantCultureIgnoreCase))
            {
                item.TwoHanded = !item.TwoHanded;
                UpdateMeleeString();
            }
        }
Example #6
0
        private void CreateWeaponItem(Weapon weapon)
        {
            WeaponItem item = new WeaponItem(weapon);

            DieRoll roll = DieRoll.FromString(item.Weapon.DmgM);

            roll      = DieRoll.StepDie(roll, ((int)SizeMods.GetSize(monster.Size)) - (int)MonsterSize.Medium);
            item.Step = roll.Step;

            WeaponItem = item;
        }
Example #7
0
        private void MagicBonusComboBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
            ComboBox   box  = (ComboBox)sender;
            WeaponItem item = (WeaponItem)box.DataContext;

            if (e.RemovedItems.Count > 0)
            {
                changingItem = true;
                if (box.SelectedIndex == 0)
                {
                    item.Broken            = true;
                    item.Masterwork        = false;
                    item.MagicBonus        = 0;
                    item.SpecialAbilitySet = new SortedDictionary <string, string>();
                }
                else if (box.SelectedIndex == 1)
                {
                    item.Broken            = false;
                    item.Masterwork        = false;
                    item.MagicBonus        = 0;
                    item.SpecialAbilitySet = new SortedDictionary <string, string>();
                }
                else if (box.SelectedIndex == 2)
                {
                    item.Broken            = false;
                    item.Masterwork        = true;
                    item.MagicBonus        = 0;
                    item.SpecialAbilitySet = new SortedDictionary <string, string>();
                }
                else if (box.SelectedIndex > 2)
                {
                    item.Broken     = false;
                    item.Masterwork = false;
                    item.MagicBonus = box.SelectedIndex - 2;
                }
                changingItem = false;

                if (attacks.RangedWeapons.Contains(item))
                {
                    UpdateRangedString();
                }
                else
                {
                    UpdateMeleeString();
                }
            }
        }
Example #8
0
        private void AddRangedWeaponButton_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            Button button = (Button)sender;


            WeaponItem item = ShowMeleeWeaponDialog(attacks.RangedWeapons, false, true, false);


            if (item != null)
            {
                attacks.RangedWeapons.Add(item);

                rangedView.Refresh();

                UpdateRangedString();
            }
        }
Example #9
0
        public object Clone()
        {
            WeaponItem item = new WeaponItem();

            item.Weapon           = (Weapon)Weapon.Clone();
            item.Count            = Count;
            item.MagicBonus       = MagicBonus;
            item.Masterwork       = Masterwork;
            item.Broken           = Broken;
            item.SpecialAbilities = SpecialAbilities;
            item.MainHand         = MainHand;
            item.Plus             = Plus;
            item.Step             = Step;
            item.NoMods           = NoMods;
            item.TwoHanded        = TwoHanded;

            return(item);
        }
Example #10
0
        private void MagicBonusComboBox_Loaded(object sender, System.Windows.RoutedEventArgs e)
        {
            ComboBox   box  = (ComboBox)sender;
            WeaponItem item = (WeaponItem)box.DataContext;

            item.PropertyChanged += delegate(object send, PropertyChangedEventArgs eChanged)
            {
                if ((eChanged.PropertyName == "MagicBonus") || (eChanged.PropertyName == "Masterwork") || (eChanged.PropertyName == "Broken"))
                {
                    if (!changingItem)
                    {
                        UpdateMagicCombo(box, item);
                    }
                }
            };

            UpdateMagicCombo(box, item);
        }
Example #11
0
 private void UpdateMagicCombo(ComboBox box, WeaponItem item)
 {
     if (item.MagicBonus > 0)
     {
         box.SelectedIndex = item.MagicBonus + 2;
     }
     else if (item.Masterwork)
     {
         box.SelectedIndex = 2;
     }
     else if (item.Broken)
     {
         box.SelectedIndex = 0;
     }
     else
     {
         box.SelectedIndex = 1;
     }
 }
Example #12
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (targetType != typeof(string))
            {
                return(DependencyProperty.UnsetValue);
            }

            WeaponItem item = (WeaponItem)value;

            if (item == null)
            {
                return(DependencyProperty.UnsetValue);
            }

            if (item.MainHand)
            {
                return("Main");
            }
            else
            {
                return("Off");
            }
        }
Example #13
0
        private void DeleteButton_Click(object sender, RoutedEventArgs e)
        {
            WeaponItem item = (WeaponItem)((Button)sender).DataContext;



            if (attacks.RangedWeapons.Contains(item))
            {
                attacks.RangedWeapons.Remove(item);

                UpdateRangedString();
            }
            else if (attacks.NaturalAttacks.Contains(item))
            {
                attacks.NaturalAttacks.Remove(item);

                UpdateMeleeString();
            }
            else if (!item.Weapon.Natural)
            {
                List <WeaponItem> list = (List <WeaponItem>)meleeView.CurrentItem;

                list.Remove(item);

                int i = 0;

                foreach (WeaponItem listItem in list)
                {
                    listItem.MainHand = (i == 0);
                    i++;
                }

                meleeView.Refresh();

                UpdateMeleeString();
            }
        }
Example #14
0
        private void OKButton_Click(object sender, RoutedEventArgs e)
        {
            if (weaponItem == null)
            {
                weaponItem = new WeaponItem();
            }
            Weapon weapon  = null;
            string atkname = AttackName.Text.Trim();

            if (Weapon.Weapons.ContainsKey(atkname))
            {
                weapon = Weapon.Weapons[atkname];
            }

            if (weapon == null)
            {
                weapon       = new Weapon();
                weapon.Name  = atkname;
                weapon.Hands = "One-Handed";
                weapon.Class = "Natural";
                DieRoll roll = DieRoll.FromString(AttackDamage.Text);
                roll              = DieRoll.StepDie(roll, ((int)SizeMods.GetSize(monster.Size)) - (int)MonsterSize.Medium);
                weapon.DmgM       = roll.Text;
                weapon.DmgS       = DieRoll.StepDie(roll, -1).Text;
                weaponItem.Weapon = weapon;
            }


            weaponItem.Weapon = weapon;
            weaponItem.Count  = AttackCountComboBox.SelectedIndex + 1;
            weaponItem.Plus   = PlusTextBox.Text;
            weaponItem.Step   = DieRoll.FromString(AttackDamage.Text).Step;

            DialogResult = true;
            Close();
        }
Example #15
0
 public WeaponSpecialAbilityItem(bool Checked, WeaponSpecialAbility Special, WeaponItem WeaponItem)
 {
     this._Checked    = Checked;
     this._Special    = Special;
     this._WeaponItem = WeaponItem;
 }
Example #16
0
        public void SetupAttacks(ObservableCollection <AttackSet> melee, ObservableCollection <Attack> ranged)
        {
            MeleeAttacks = new ObservableCollection <AttackSet>();

            foreach (AttackSet set in melee)
            {
                MeleeAttacks.Add((AttackSet)set.Clone());
            }

            RangedAttacks = new ObservableCollection <Attack>();
            foreach (Attack attack in ranged)
            {
                RangedAttacks.Add((Attack)attack.Clone());
            }

            //find melee weapon sets
            MeleeWeaponSets = new List <List <WeaponItem> >();

            NaturalAttacks = new ObservableCollection <WeaponItem>();

            _Hands = 2;

            foreach (AttackSet set in MeleeAttacks)
            {
                List <WeaponItem> weapons = new List <WeaponItem>();

                bool main = true;
                //find melee attacks
                foreach (Attack attack in set.WeaponAttacks)
                {
                    if (attack.Weapon != null)
                    {
                        WeaponItem item = new WeaponItem(attack);

                        int count = item.Count;
                        item.Count = 1;
                        for (int i = 0; i < count; i++)
                        {
                            WeaponItem newItem = (WeaponItem)item.Clone();

                            if (main)
                            {
                                newItem.MainHand = true;
                                main             = false;
                            }

                            weapons.Add(newItem);
                        }
                    }

                    _Hands = Math.Max(_Hands, set.Hands);
                }


                if (weapons.Count > 0)
                {
                    MeleeWeaponSets.Add(weapons);
                }

                ObservableCollection <WeaponItem> newAttacks = new ObservableCollection <WeaponItem>();

                //find natural attacks
                foreach (Attack attack in set.NaturalAttacks)
                {
                    if (attack.Weapon != null)
                    {
                        WeaponItem item = new WeaponItem(attack);

                        newAttacks.Add(item);
                    }
                }
                if (newAttacks.Count >= NaturalAttacks.Count)
                {
                    NaturalAttacks = newAttacks;
                }
            }


            //find ranged weapons
            RangedWeapons = new ObservableCollection <WeaponItem>();

            foreach (Attack attack in RangedAttacks)
            {
                if (attack.Weapon != null)
                {
                    WeaponItem item = new WeaponItem(attack);
                    RangedWeapons.Add(item);
                }
            }
        }