Beispiel #1
0
        public NpcWindowViewModel(NpcWindowSettings settings) : base(settings)
        {
            _npcList = new TSObservableCollection <NPC>(Dispatcher);
            Bams     = CollectionViewFactory.CreateLiveCollectionView(_npcList,
                                                                      npc => npc.IsBoss && !npc.IsTower && npc.Visible,
                                                                      new[] { nameof(NPC.Visible), nameof(NPC.IsBoss) },
                                                                      new[] { new SortDescription(nameof(NPC.CurrentHP), ListSortDirection.Ascending) });
            Mobs = CollectionViewFactory.CreateLiveCollectionView(_npcList,
                                                                  npc => !npc.IsBoss && !npc.IsTower && npc.Visible,
                                                                  new[] { nameof(NPC.Visible), nameof(NPC.IsBoss) },
                                                                  new[] { new SortDescription(nameof(NPC.CurrentHP), ListSortDirection.Ascending) });
            GuildTowers = CollectionViewFactory.CreateLiveCollectionView(_npcList,
                                                                         npc => npc.IsTower,
                                                                         sortFilters: new[] { new SortDescription(nameof(NPC.CurrentHP), ListSortDirection.Ascending) });

            PendingAbnormalities = new List <PendingAbnormality>();
            InitFlushTimer();
            NpcListChanged                        += FlushCache;
            settings.AccurateHpChanged            += OnAccurateHpChanged;
            settings.HideAddsChanged              += OnHideAddsChanged;
            MonsterDatabase.OverrideChangedEvent  += RefreshOverride;
            MonsterDatabase.BlacklistChangedEvent += RefreshBlacklist;

            void InitFlushTimer()
            {
                var flushTimer = new DispatcherTimer {
                    Interval = TimeSpan.FromMilliseconds(500)
                };

                flushTimer.Tick += (_, __) => FlushCache();
                flushTimer.Start();
            }
        }
Beispiel #2
0
 public MergedInventoryViewModel()
 {
     MergedInventory     = new TSObservableCollection <MergedInventoryItem>();
     MergedInventoryView = CollectionViewFactory.CreateLiveCollectionView(MergedInventory,
                                                                          sortFilters: new[]
     {
         new SortDescription($"{nameof(MergedInventoryItem.Item)}.{nameof(InventoryItem.Item)}.{nameof(Item.Id)}", ListSortDirection.Ascending),
         new SortDescription($"{nameof(MergedInventoryItem.Item)}.{nameof(InventoryItem.Item)}.{nameof(Item.RareGrade)}", ListSortDirection.Ascending),
     });
 }
        public SystemMessagesConfigWindow()
        {
            InitializeComponent();
            DataContext    = this;
            HiddenMessages = new TSObservableCollection <SystemMessageViewModel>();
            ShowedMessages = new TSObservableCollection <SystemMessageViewModel>();

            App.Settings.UserExcludedSysMsg.ForEach(opc =>
            {
                HiddenMessages.Add(new SystemMessageViewModel(opc, Game.DB !.SystemMessagesDatabase.Messages[opc]));
            });
            Game.DB !.SystemMessagesDatabase.Messages.ToList().ForEach(keyVal =>
            {
                if (App.Settings.UserExcludedSysMsg.Contains(keyVal.Key))
                {
                    return;
                }
                ShowedMessages.Add(new SystemMessageViewModel(keyVal.Key, keyVal.Value));
            });

            HiddenMessages.CollectionChanged += (_, args) =>
            {
                switch (args.Action)
                {
                case System.Collections.Specialized.NotifyCollectionChangedAction.Add:
                    foreach (var item in args.NewItems !)
                    {
                        var opcode = ((SystemMessageViewModel?)item)?.Opcode;
                        if (opcode != null)
                        {
                            App.Settings.UserExcludedSysMsg.Add(opcode);
                        }
                    }
                    break;

                case System.Collections.Specialized.NotifyCollectionChangedAction.Remove:
                    foreach (var item in args.OldItems !)
                    {
                        var opcode = ((SystemMessageViewModel?)item)?.Opcode;
                        if (opcode != null)
                        {
                            App.Settings.UserExcludedSysMsg.Remove(opcode);
                        }
                    }
                    break;
                }
                App.Settings.Save();
            };

            ShowedMessagesView = CollectionViewFactory.CreateLiveCollectionView(ShowedMessages);
            HiddenMessagesView = CollectionViewFactory.CreateLiveCollectionView(HiddenMessages);
        }
Beispiel #4
0
 public DungeonInfo()
 {
     DungeonList         = Game.DB.DungeonDatabase.Dungeons.Values.Where(d => d.HasDef).Select(d => new DungeonCooldownData(d.Id)).ToList();
     VisibleDungeonsView = CollectionViewFactory.CreateLiveCollectionView(DungeonList,
                                                                          sortFilters: new[] { new SortDescription($"{nameof(Dungeon)}.{nameof(Dungeon.Index)}", ListSortDirection.Ascending) });
 }