Beispiel #1
0
        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;
        }
Beispiel #2
0
 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);
 }
Beispiel #3
0
 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);
     }
 }
Beispiel #4
0
        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";
        }
Beispiel #5
0
 private bool _canDeleteRule(HealerRule arg)
 {
     return(arg != null);
 }
Beispiel #6
0
 private bool _canChangePriority(HealerRule arg)
 {
     return(true);
 }
Beispiel #7
0
 private void _editRule(HealerRule obj)
 {
     AddButtonText     = "<";
     AddButtonTooltip  = "Save";
     CurrentHealerRule = obj;
 }
Beispiel #8
0
 private bool _canEditRule(HealerRule arg)
 {
     return(arg != null);
 }