private void _changePriority(HealerRule obj) { if (obj == null) { return; } ObservableCollection <HealerRule> collection = SpellHealerRules.Any(r => r.Equals(obj)) ? SpellHealerRules : ItemHealerRules; //fix priority int max = collection.Count - 1; if (obj.Priority > max) { obj.Priority = max; } //finds the item where the priority is the same as current item HealerRule oldPriorityItem = collection.FirstOrDefault(r => !r.Equals(obj) && r.Priority == obj.Priority); //checks if the olditem is the last based on priority or if the olditem.Priority is bigger than the currentItem bool increaseValue = oldPriorityItem?.Priority >= max || collection.Any(r => r.Priority == obj.Priority + 1); //checks if there if (oldPriorityItem == null) { return; } oldPriorityItem.Priority = increaseValue ? obj.Priority - 1 : obj.Priority + 1; }
public HealerViewModel() { _loadCollections(); _prepareViewSources(); _loadCommands(); CurrentHealerRule = new HealerRule(0, "", Spells.First(), HealItems.First(), 0, 110, 0, HealerConditions.Hitpoints, 500, 700, false, false, true); _healerService = new HealerService(this); }
private void _deleteRule(HealerRule obj) { if (_spellHealerRules.Any(r => r.Equals(obj))) { SpellHealerRules.Where(r => r.Priority > obj.Priority).ToList().ForEach(r => r.Priority--); SpellHealerRules.Remove(obj); } else { ItemHealerRules.Where(r => r.Priority > obj.Priority).ToList().ForEach(r => r.Priority--); ItemHealerRules.Remove(obj); } }
private void _addRule(string obj) { //check which collection to use ObservableCollection <HealerRule> collection = obj == "Spell" ? SpellHealerRules : ItemHealerRules; CollectionViewSource viewSource = obj == "Spell" ? SpellHealerRulesViewSource : ItemHealerRulesViewSource; //correct priority if (CurrentHealerRule.Priority > collection.Count) { CurrentHealerRule.Priority = collection.Count; } //remove triggers if its not a range trigger string condition = CurrentHealerRule.Condition.ToString(); if (!condition.Contains("Hitpoint") && !condition.Contains("Mana")) { CurrentHealerRule.MinTrigger = null; CurrentHealerRule.MaxTrigger = null; CurrentHealerRule.TriggerSplitter = ""; CurrentHealerRule.TriggerDecoration = ""; } else { CurrentHealerRule.MinTrigger = CurrentHealerRule.MinTrigger ?? 0; CurrentHealerRule.MaxTrigger = CurrentHealerRule.MaxTrigger ?? 100; CurrentHealerRule.TriggerSplitter = "~"; CurrentHealerRule.TriggerDecoration = condition.Contains("Percent") ? "%" : ""; } //check if the rule exists already based on id HealerRule ruleChecker = collection.FirstOrDefault(r => r.Equals(CurrentHealerRule)); if (ruleChecker == null) { //fix priority if its being added in the middle collection.Where(r => r.Priority >= CurrentHealerRule.Priority).ToList().ForEach(r => r.Priority++); collection.Add(CurrentHealerRule); } viewSource.View.Refresh(); CurrentHealerRule = new HealerRule(collection.Count, "", Spells.First(), HealItems.First(), 0, 110, collection.Count, HealerConditions.Hitpoints, 500, 700, false, false, true); AddButtonText = "ü"; AddButtonTooltip = "Add"; }
private bool _canDeleteRule(HealerRule arg) { return(arg != null); }
private bool _canChangePriority(HealerRule arg) { return(true); }
private void _editRule(HealerRule obj) { AddButtonText = "<"; AddButtonTooltip = "Save"; CurrentHealerRule = obj; }
private bool _canEditRule(HealerRule arg) { return(arg != null); }