public static void StartItemCooldown(uint i) { if (!Game.DB !.ItemsDatabase.TryGetItemSkill(i, out var itemSkill)) { return; } typeof(CooldownWindowViewModel) .GetMethod("RouteSkill", BindingFlags.Instance | BindingFlags.NonPublic)? .Invoke(WindowManager.ViewModels.CooldownsVM, new[] { new Cooldown(itemSkill, 60, CooldownType.Item) }); //WindowManager.ViewModels.CooldownsVM.RouteSkill(new Cooldown(itemSkill, 60, CooldownType.Item)); }
public void Drop(IDropInfo dropInfo) { var l = dropInfo.TargetCollection.TryGetList(); if (l.Cast <Cooldown>().Any(cd => { var ret = dropInfo.Data switch { Skill s => (cd.Skill.IconName == s.IconName), Item i => (cd.Skill.IconName == i.IconName), Abnormality a => (cd.Skill.IconName == a.IconName), _ => false }; return(ret); })) { return; } switch (dropInfo.Data) { case Skill s: l.Add(new Cooldown(s, false)); break; case Item i: Game.DB !.ItemsDatabase.TryGetItemSkill(i.Id, out var itemSkill); l.Add(new Cooldown(itemSkill, false, CooldownType.Item)); break; case Abnormality a: l.Add(new Cooldown(new Skill(a.Id, Class.None, a.Name, a.ToolTip) { IconName = a.IconName }, false, CooldownType.Passive)); break; } //dropInfo.DragInfo.SourceCollection.TryGetList().Remove(dropInfo.Data); }
public void Drop(IDropInfo dropInfo) { var target = (TSObservableCollection <Cooldown>)dropInfo.TargetCollection; switch (dropInfo.Data) { case Skill sk: if (target.All(x => x.Skill.IconName != sk.IconName)) { target.Insert(dropInfo.InsertIndex, new Cooldown(sk, false)); } break; case Abnormality ab: if (target.All(x => x.Skill.IconName != ab.IconName)) { target.Insert(dropInfo.InsertIndex, new Cooldown(new Skill(ab.Id, Class.None, ab.Name, ab.ToolTip) { IconName = ab.IconName }, false, CooldownType.Passive)); } break; case Item i: if (target.All(x => x.Skill.IconName != i.IconName)) { Game.DB !.ItemsDatabase.TryGetItemSkill(i.Id, out var s); target.Insert(dropInfo.InsertIndex, new Cooldown(s, false, CooldownType.Item)); } break; } var tmp = target.ToList(); //force correct order as it's not preserved target.Clear(); tmp.ForEach(x => target.Add(x)); const ulong delay = 500; //wait a bit and restart any running skill Task.Delay(TimeSpan.FromMilliseconds(delay)).ContinueWith(_ => { WindowManager.ViewModels.CooldownsVM.MainSkills.ToList().ForEach(x => { if (x.Seconds > 0) { x.Start(Convert.ToUInt64(x.Seconds * 1000 - delay)); } }); WindowManager.ViewModels.CooldownsVM.SecondarySkills.ToList().ForEach(x => { if (x.Seconds > 0) { x.Start(Convert.ToUInt64(x.Seconds * 1000 - delay)); } }); }); WindowManager.ViewModels.CooldownsVM.SaveConfig(); }