Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
            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();
            }