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); }
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(); } }
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; }
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; } }
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(); } }
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; }
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(); } } }
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(); } }
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); }
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); }
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; } }
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"); } }
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(); } }
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(); }
public WeaponSpecialAbilityItem(bool Checked, WeaponSpecialAbility Special, WeaponItem WeaponItem) { this._Checked = Checked; this._Special = Special; this._WeaponItem = WeaponItem; }
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); } } }