private void OnChange(object sender, AbilityEventArgs args) { List <AbilityDraw> abilities; if (!drawnAbilities.TryGetValue(args.Hero, out abilities)) { drawnAbilities.Add(args.Hero, new List <AbilityDraw>()); } var drawnAbility = abilities?.FirstOrDefault(x => x.Name == args.Name); if (drawnAbility == null) { drawnAbility = new AbilityDraw(args.Hero, args.Name); drawnAbilities[args.Hero].Add(drawnAbility); } drawnAbility.SaveSettings(args.Red, args.Green, args.Blue, args.RadiusOnly); if (!args.Redraw) { return; } if (args.Enabled) { drawnAbility.Disabled = false; if (!drawnAbility.IsValid) { drawnAbility.FindAbility(); if (!drawnAbility.IsValid && drawnAbility.CustomRange == CustomRange.None) { return; } } Redraw(drawnAbility); } else { if (drawnAbility.ParticleEffect != null) { drawnAbility.ParticleEffect.Dispose(); drawnAbility.ParticleEffect = null; } drawnAbility.Disabled = true; } }
private void OnChange(object sender, AbilityEventArgs args) { List<AbilityDraw> abilities; if (!drawedAbilities.TryGetValue(args.Hero, out abilities)) { drawedAbilities.Add(args.Hero, new List<AbilityDraw>()); } var drawedAbility = abilities?.FirstOrDefault(x => x.Name == args.Name); if (drawedAbility == null) { drawedAbility = new AbilityDraw(args.Hero, args.Name); drawedAbilities[args.Hero].Add(drawedAbility); } drawedAbility.SaveSettings(args.Red, args.Green, args.Blue, args.RadiusOnly); if (!args.Redraw) { return; } if (args.Enabled) { drawedAbility.Disabled = false; if (!drawedAbility.IsValid) { drawedAbility.FindAbility(); if (!drawedAbility.IsValid && drawedAbility.CustomRange == CustomRange.None) { return; } } Redraw(drawedAbility); } else { if (drawedAbility.ParticleEffect != null) { drawedAbility.ParticleEffect.Dispose(); drawedAbility.ParticleEffect = null; } drawedAbility.Disabled = true; } }