/// <summary> /// Base constructor. /// </summary> /// <param name="identity"></param> /// <param name="guid"></param> private CCPCharacter(CharacterIdentity identity, Guid guid) : base(identity, guid) { m_queue = new SkillQueue(this); m_marketOrders = new MarketOrderCollection(this); m_industryJobs = new IndustryJobCollection(this); m_researchPoints = new ResearchPointCollection(this); m_eveMailMessages = new EveMailMessagesCollection(this); m_eveMailingLists = new EveMailingListsCollection(this); m_eveNotifications = new EveNotificationsCollection(this); m_monitors = new QueryMonitorCollection(); // Initializes the query monitors m_charSheetMonitor = new CharacterQueryMonitor<SerializableAPICharacterSheet>(this, APIMethods.CharacterSheet); m_charSheetMonitor.Updated += OnCharacterSheetUpdated; m_monitors.Add(m_charSheetMonitor); m_skillQueueMonitor = new CharacterQueryMonitor<SerializableAPISkillQueue>(this, APIMethods.SkillQueue); m_skillQueueMonitor.Updated += OnSkillQueueUpdated; m_monitors.Add(m_skillQueueMonitor); m_charMarketOrdersMonitor = new CharacterQueryMonitor<SerializableAPIMarketOrders>(this, APIMethods.MarketOrders); m_charMarketOrdersMonitor.Updated += OnCharacterMarketOrdersUpdated; m_monitors.Add(m_charMarketOrdersMonitor); m_corpMarketOrdersMonitor = new CharacterQueryMonitor<SerializableAPIMarketOrders>(this, APIMethods.CorporationMarketOrders); m_corpMarketOrdersMonitor.Updated += OnCorporationMarketOrdersUpdated; m_monitors.Add(m_corpMarketOrdersMonitor); m_charIndustryJobsMonitor = new CharacterQueryMonitor<SerializableAPIIndustryJobs>(this, APIMethods.IndustryJobs); m_charIndustryJobsMonitor.Updated += OnCharacterJobsUpdated; m_monitors.Add(m_charIndustryJobsMonitor); m_corpIndustryJobsMonitor = new CharacterQueryMonitor<SerializableAPIIndustryJobs>(this, APIMethods.CorporationIndustryJobs); m_corpIndustryJobsMonitor.Updated += OnCorporationJobsUpdated; m_monitors.Add(m_corpIndustryJobsMonitor); m_charResearchPointsMonitor = new CharacterQueryMonitor<SerializableAPIResearch>(this, APIMethods.ResearchPoints); m_charResearchPointsMonitor.Updated += OnCharacterResearchPointsUpdated; m_monitors.Add(m_charResearchPointsMonitor); m_charEVEMailMessagesMonitor = new CharacterQueryMonitor<SerializableAPIMailMessages>(this, APIMethods.MailMessages); m_charEVEMailMessagesMonitor.Updated += OnCharacterEVEMailMessagesUpdated; m_monitors.Add(m_charEVEMailMessagesMonitor); m_charEVENotificationsMonitor = new CharacterQueryMonitor<SerializableAPINotifications>(this, APIMethods.Notifications); m_charEVENotificationsMonitor.Updated += OnCharacterEVENotificationsUpdated; m_monitors.Add(m_charEVENotificationsMonitor); // We enable only the monitors that require a limited api key, // full api key required monitors will be enabled individually // through each character's enabled full api key feature foreach (var monitor in m_monitors) { monitor.Enabled = !monitor.IsFullKeyNeeded; } }
/// <summary> /// Initializes a new instance of the <see cref="CharacterDataQuerying"/> class. /// </summary> /// <param name="ccpCharacter">The CCP character.</param> internal CharacterDataQuerying(CCPCharacter ccpCharacter) { // Initializes the query monitors m_ccpCharacter = ccpCharacter; m_characterQueryMonitors = new List<IQueryMonitorEx>(); m_charSheetMonitor = new CharacterQueryMonitor<SerializableAPICharacterSheet>(ccpCharacter, CCPAPICharacterMethods.CharacterSheet, OnCharacterSheetUpdated); IQueryMonitorEx skillQueueMonitor = new CharacterQueryMonitor<SerializableAPISkillQueue>(ccpCharacter, CCPAPICharacterMethods.SkillQueue, OnSkillQueueUpdated); IQueryMonitorEx charStandingsMonitor = new CharacterQueryMonitor<SerializableAPIStandings>(ccpCharacter, CCPAPICharacterMethods.Standings, OnStandingsUpdated) { QueryOnStartup = true }; IQueryMonitorEx charContactsMonitor = new CharacterQueryMonitor<SerializableAPIContactList>(ccpCharacter, CCPAPICharacterMethods.ContactList, OnContactsUpdated) { QueryOnStartup = true }; IQueryMonitorEx charFacWarStatsMonitor = new CharacterQueryMonitor<SerializableAPIFactionalWarfareStats>(ccpCharacter, CCPAPICharacterMethods.FactionalWarfareStats, OnFactionalWarfareStatsUpdated) { QueryOnStartup = true }; IQueryMonitorEx charMedalsMonitor = new CharacterQueryMonitor<SerializableAPIMedals>(ccpCharacter, CCPAPICharacterMethods.Medals, OnMedalsUpdated) { QueryOnStartup = true }; IQueryMonitorEx charKillLogMonitor = new CharacterQueryMonitor<SerializableAPIKillLog>(ccpCharacter, CCPAPICharacterMethods.KillLog, OnKillLogUpdated) { QueryOnStartup = true }; IQueryMonitorEx charAssetsMonitor = new CharacterQueryMonitor<SerializableAPIAssetList>(ccpCharacter, CCPAPICharacterMethods.AssetList, OnAssetsUpdated) { QueryOnStartup = true }; m_charMarketOrdersMonitor = new CharacterQueryMonitor<SerializableAPIMarketOrders>(ccpCharacter, CCPAPICharacterMethods.MarketOrders, OnMarketOrdersUpdated) { QueryOnStartup = true }; m_charContractsMonitor = new CharacterQueryMonitor<SerializableAPIContracts>(ccpCharacter, CCPAPICharacterMethods.Contracts, OnContractsUpdated) { QueryOnStartup = true }; IQueryMonitorEx charWalletJournalMonitor = new CharacterQueryMonitor<SerializableAPIWalletJournal>(ccpCharacter, CCPAPICharacterMethods.WalletJournal, OnWalletJournalUpdated) { QueryOnStartup = true }; IQueryMonitorEx charWalletTransactionsMonitor = new CharacterQueryMonitor<SerializableAPIWalletTransactions>(ccpCharacter, CCPAPICharacterMethods.WalletTransactions, OnWalletTransactionsUpdated) { QueryOnStartup = true }; m_charIndustryJobsMonitor = new CharacterQueryMonitor<SerializableAPIIndustryJobs>(ccpCharacter, CCPAPICharacterMethods.IndustryJobs, OnIndustryJobsUpdated) { QueryOnStartup = true }; IQueryMonitorEx charResearchPointsMonitor = new CharacterQueryMonitor<SerializableAPIResearch>(ccpCharacter, CCPAPICharacterMethods.ResearchPoints, OnResearchPointsUpdated) { QueryOnStartup = true }; IQueryMonitorEx charEVEMailMessagesMonitor = new CharacterQueryMonitor<SerializableAPIMailMessages>(ccpCharacter, CCPAPICharacterMethods.MailMessages, OnEVEMailMessagesUpdated) { QueryOnStartup = true }; IQueryMonitorEx charEVENotificationsMonitor = new CharacterQueryMonitor<SerializableAPINotifications>(ccpCharacter, CCPAPICharacterMethods.Notifications, OnEVENotificationsUpdated) { QueryOnStartup = true }; IQueryMonitorEx charUpcomingCalendarEventsMonitor = new CharacterQueryMonitor<SerializableAPIUpcomingCalendarEvents>(ccpCharacter, CCPAPICharacterMethods.UpcomingCalendarEvents, OnUpcomingCalendarEventsUpdated) { QueryOnStartup = true }; IQueryMonitorEx charPlanetaryColoniesMonitor = new CharacterQueryMonitor<SerializableAPIPlanetaryColonies>(ccpCharacter, CCPAPIGenericMethods.PlanetaryColonies, OnPlanetaryColoniesUpdated) { QueryOnStartup = true }; // Add the monitors in an order as they will appear in the throbber menu m_characterQueryMonitors.AddRange(new[] { m_charSheetMonitor, skillQueueMonitor, charStandingsMonitor, charContactsMonitor, charFacWarStatsMonitor, charMedalsMonitor, charKillLogMonitor, charAssetsMonitor, m_charMarketOrdersMonitor, m_charContractsMonitor, charWalletJournalMonitor, charWalletTransactionsMonitor, m_charIndustryJobsMonitor, charPlanetaryColoniesMonitor, charResearchPointsMonitor, charEVEMailMessagesMonitor, charEVENotificationsMonitor, charUpcomingCalendarEventsMonitor }); m_characterQueryMonitors.ForEach(monitor => ccpCharacter.QueryMonitors.Add(monitor)); m_basicFeaturesMonitors = m_characterQueryMonitors .Select(monitor => new { monitor, method = (CCPAPICharacterMethods)monitor.Method }) .Where(monitor => (long)monitor.method == ((long)monitor.method & (long)CCPAPIMethodsEnum.BasicCharacterFeatures)) .Select(basicFeature => basicFeature.monitor) .ToList(); if (ccpCharacter.ForceUpdateBasicFeatures) m_basicFeaturesMonitors.ForEach(monitor => monitor.ForceUpdate(true)); EveMonClient.TimerTick += EveMonClient_TimerTick; }