Ejemplo n.º 1
0
        private void SaveTrackerProcessesToStorage()
        {
            var list = new List <QuestItem>();

            foreach (var tracker in availableTrackers)
            {
                var item = new QuestItem
                {
                    Id         = tracker.Id,
                    Type       = tracker.Type,
                    Name       = tracker.Name,
                    IsTracking = tracker.IsTracking
                };

                DateTime dT;
                questsStartTracking.TryGetValue(tracker.Id, out dT);
                item.TrackingStart = dT;

                item.ProcessStorageString = tracker.SerializeData();

                list.Add(item);
            }

            QuestFS.SaveQuests(list.ToArray());
        }
Ejemplo n.º 2
0
        private void RegisterAllTrackers()
        {
            Assembly.GetExecutingAssembly()
            .GetTypes()
            .ToList()
            .Where(t => t.Namespace == "Grabacr07.KanColleViewer.Plugins.Trackers")
            .ToList()
            .ForEach(i => availableTrackers.Add((ITracker)Activator.CreateInstance(i)));

            availableTrackers = new ObservableCollection <ITracker>(availableTrackers.OrderBy(i => i.Id));

            // read storage info for all trackers
            var storage = QuestFS.GetQuests();

            availableTrackers.ToList().ForEach(tracker =>
            {
                if (!storage.Any(qi => qi.Id == tracker.Id))
                {
                    return;
                }

                var questItem = storage.Where(qi => qi.Id == tracker.Id).First();

                // if the tracking is still available, restore the pervious process.
                if (IsTrackingAvailable(questItem.Type, questItem.TrackingStart))
                {
                    questsStartTracking.Add(questItem.Id, questItem.TrackingStart);

                    tracker.IsTracking = questItem.IsTracking;

                    tracker.DeserializeData(questItem.ProcessStorageString);
                }
            });

            OnEventProcessChanged(new EventArgs());
        }