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(); } }
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); }
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) }); }