/// <summary> /// Handles the Click event of the showInBrowserMenuItem control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> private void showInBrowserMenuItem_Click(object sender, EventArgs e) { if (m_selectedItem == null) { return; } Ship ship = m_selectedItem as Ship; Blueprint blueprint = StaticBlueprints.GetBlueprintByID(m_selectedItem.ID); Skill skill = m_killLog.Character.Skills[m_selectedItem.ID]; if (skill == Skill.UnknownSkill) { skill = null; } PlanWindow planWindow = PlanWindow.ShowPlanWindow(m_killLog.Character); if (ship != null) { planWindow.ShowShipInBrowser(ship); } else if (blueprint != null) { planWindow.ShowBlueprintInBrowser(blueprint); } else if (skill != null) { planWindow.ShowSkillInBrowser(skill); } else { planWindow.ShowItemInBrowser(m_selectedItem); } }
/// <summary> /// Populates the serialization object job with the info from the API. /// </summary> /// <param name="src">The source.</param> /// <param name="issuedFor">Whether this jobs was issued for the corporation or /// character.</param> /// <param name="character">The character owning this job.</param> private void PopulateJobInfo(EsiJobListItem src, IssuedFor issuedFor, CCPCharacter character = null) { ID = src.JobID; InstallerID = src.InstallerID; InstalledItem = StaticBlueprints.GetBlueprintByID(src.BlueprintTypeID); Runs = src.Runs; Cost = src.Cost; Probability = src.Probability; SuccessfulRuns = src.SuccessfulRuns; StartDate = src.StartDate; EndDate = src.EndDate; PauseDate = src.PauseDate; IssuedFor = issuedFor; m_installedItemLocationID = src.FacilityID; UpdateLocation(character); UpdateInstallation(character); if (Enum.IsDefined(typeof(BlueprintActivity), src.ActivityID)) { Activity = (BlueprintActivity)Enum.ToObject(typeof(BlueprintActivity), src.ActivityID); } OutputItem = GetOutputItem(src.ProductTypeID); }
/// <summary> /// Populates the serialization object job with the info from the API. /// </summary> /// <param name="src">The source.</param> private void PopulateJobInfo(SerializableJobListItem src) { ID = src.JobID; InstallerID = src.InstallerID; InstalledItem = StaticBlueprints.GetBlueprintByID(src.BlueprintTypeID); Runs = src.Runs; SolarSystem = StaticGeography.GetSolarSystemByID(src.SolarSystemID); Cost = src.Cost; Probability = src.Probability; SuccessfulRuns = src.SuccessfulRuns; //InstalledTime = src.InstallTime; //InstalledME = src.InstalledItemMaterialLevel; //InstalledPE = src.InstalledItemProductivityLevel; StartDate = src.StartDate; EndDate = src.EndDate; PauseDate = src.PauseDate; IssuedFor = src.IssuedFor; m_installedItemLocationID = src.StationID; UpdateInstallation(); if (Enum.IsDefined(typeof(BlueprintActivity), src.ActivityID)) { Activity = (BlueprintActivity)Enum.ToObject(typeof(BlueprintActivity), src.ActivityID); } OutputItem = GetOutputItem(src.ProductTypeID); //if (Enum.IsDefined(typeof(BlueprintType), src.InstalledItemCopy)) // BlueprintType = (BlueprintType)Enum.ToObject(typeof(BlueprintType), src.InstalledItemCopy); }
/// <summary> /// Gets the output item by its ID (can be a blueprint or an item). /// </summary> /// <param name="id">The itemID of the blueprint.</param> /// <returns>The output item from the bluperint.</returns> private Item GetOutputItem(int id) { switch (Activity) { case BlueprintActivity.Manufacturing: return(StaticBlueprints.GetBlueprintByID(InstalledItem.ID).ProducesItem ?? StaticItems.GetItemByID(0)); case BlueprintActivity.ResearchingMaterialEfficiency: case BlueprintActivity.ResearchingTimeEfficiency: case BlueprintActivity.Copying: return(InstalledItem); case BlueprintActivity.Invention: case BlueprintActivity.ReverseEngineering: return(StaticBlueprints.GetBlueprintByID(id) ?? StaticItems.GetItemByID(0)); case BlueprintActivity.SimpleReactions: case BlueprintActivity.Reactions: return(StaticItems.GetItemByID(InstalledItem?.ReactionOutcome?.Item?.ID ?? 0)); default: return(StaticItems.GetItemByID(0)); } }
/// <summary> /// Gets the output item by its ID (can be a blueprint or an item). /// </summary> /// <param name="id">The itemID of the blueprint.</param> /// <returns>The output item from the bluperint.</returns> private static Item GetOutputItem(long id) { // Is it a blueprint ? Item item = StaticBlueprints.GetBlueprintByID(id); // Then it's an item if (item == null) { item = StaticItems.GetItemByID(id); } return(item); }
/// <summary> /// Loads the static data. /// </summary> public static async Task LoadAsync() { // Quit if the client has been shut down if (EveMonClient.Closed) { return; } // This is the time optimal loading order // (min order to follow : // skills before anything else, // properties before items, // items before blueprints, reprocessing and certificates, // certs before masteries) EveMonClient.Trace("Datafiles.Load - begin", printMethod: false); // Must always run first // It will have finished loading until static skills finish Task properties = TaskHelper.RunIOBoundTaskAsync(() => StaticProperties.Load()); // Must always run before items Task skills = TaskHelper.RunIOBoundTaskAsync(() => StaticSkills.Load()); await Task.WhenAll(skills, properties); // Must always run synchronously as blueprints, reprocessing and certificates depend on it await TaskHelper.RunIOBoundTaskAsync(() => StaticItems.Load()); // Must always run synchronously as masteries depend on it await TaskHelper.RunIOBoundTaskAsync(() => StaticCertificates.Load()); // Must always run synchronously as ID to name depends on it await TaskHelper.RunIOBoundTaskAsync(() => StaticGeography.Load()); // Non critical loadings as all dependencies have been loaded Task blueprints = TaskHelper.RunIOBoundTaskAsync(() => StaticBlueprints.Load()); Task reprocessing = TaskHelper.RunIOBoundTaskAsync(() => StaticReprocessing.Load()); await TaskHelper.RunIOBoundTaskAsync(() => StaticMasteries.Load()); EveMonClient.Trace("Datafiles.Load - done", printMethod: false); }
/// <summary> /// Handles the Opening event of the contextMenuStrip control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.ComponentModel.CancelEventArgs" /> instance containing the event data.</param> private void contextMenuStrip_Opening(object sender, CancelEventArgs e) { e.Cancel = m_selectedItem == null; if (e.Cancel || m_selectedItem == null) { return; } Ship ship = m_selectedItem as Ship; Blueprint blueprint = StaticBlueprints.GetBlueprintByID(m_selectedItem.ID); Skill skill = m_killLog.Character.Skills[m_selectedItem.ID]; if (skill == Skill.UnknownSkill) { skill = null; } string text = ship != null ? "Ship" : blueprint != null ? "Blueprint" : skill != null ? "Skill" : "Item"; showInBrowserMenuItem.Text = $"Show In {text} Browser..."; }
/// <summary> /// Initializes paths, static objects, check and load datafiles, etc. /// </summary> /// <remarks>May be called more than once without causing redundant operations to occur.</remarks> public static void Initialize() { lock (s_initializationLock) { if (s_initialized) { return; } s_initialized = true; Trace("EveClient.Initialize() - begin"); // Members instantiations HttpWebService = new HttpWebService(); APIProviders = new GlobalAPIProviderCollection(); MonitoredCharacters = new GlobalMonitoredCharacterCollection(); CharacterIdentities = new GlobalCharacterIdentityCollection(); Notifications = new GlobalNotificationCollection(); Characters = new GlobalCharacterCollection(); Datafiles = new GlobalDatafileCollection(); Accounts = new GlobalAccountCollection(); EVEServer = new EveServer(); // Load static datas (min order to follow : skills before anything else, items before certs) Trace("Load Datafiles - begin"); StaticProperties.Load(); StaticSkills.Load(); StaticItems.Load(); StaticCertificates.Load(); StaticBlueprints.Load(); Trace("Load Datafiles - done"); // Network monitoring (connection availability changes) NetworkMonitor.Initialize(); Trace("EveClient.Initialize() - done"); } }
/// <summary> /// Constructor from the API. /// </summary> /// <param name="src"></param> internal IndustryJob(SerializableJobListItem src) { m_state = GetState(src); m_jobID = src.JobID; m_installedItemID = src.InstalledItemTypeID; m_installedItem = StaticBlueprints.GetBlueprintByID(src.InstalledItemTypeID); m_outputItemID = src.OutputTypeID; m_outputItem = GetOutputItem(src.OutputTypeID); m_runs = src.Runs; m_activity = (BlueprintActivity)Enum.ToObject(typeof(BlueprintActivity), src.ActivityID); m_blueprintType = (BlueprintType)Enum.ToObject(typeof(BlueprintType), src.InstalledItemCopy); m_installation = GetInstallation(src.OutputLocationID); m_solarSystem = StaticGeography.GetSystem(src.SolarSystemID); m_installedTime = src.InstallTime; m_installedItemME = src.InstalledItemMaterialLevel; m_installedItemPE = src.InstalledItemProductivityLevel; m_beginProductionTime = src.BeginProductionTime; m_endProductionTime = src.EndProductionTime; m_pauseProductionTime = src.PauseProductionTime; m_lastStateChange = DateTime.UtcNow; m_issuedFor = src.IssuedFor; m_activeJobState = GetActiveJobState(); }
/// <summary> /// Constructor from an object deserialized from the settings file. /// </summary> /// <param name="src"></param> internal IndustryJob(SerializableJob src) { m_ignored = src.Ignored; m_jobID = src.JobID; m_state = src.State; m_installedItemID = src.InstalledItemID; m_installedItem = StaticBlueprints.GetBlueprintByID(src.InstalledItemID); m_outputItemID = src.OutputItemID; m_outputItem = GetOutputItem(src.OutputItemID); m_runs = src.Runs; m_activity = src.Activity; m_blueprintType = src.BlueprintType; m_installation = src.ItemLocation; m_solarSystem = StaticGeography.GetSystem(src.SolarSystemID); m_installedTime = src.InstalledTime; m_installedItemME = src.InstalledItemME; m_installedItemPE = src.InstalledItemPE; m_beginProductionTime = src.BeginProductionTime; m_endProductionTime = src.EndProductionTime; m_pauseProductionTime = src.PauseProductionTime; m_lastStateChange = src.LastStateChange; m_issuedFor = src.IssuedFor; m_activeJobState = GetActiveJobState(); }
/// <summary> /// Gets the type of the blueprint. /// </summary> /// <param name="rawQuantity">The raw quantity.</param> /// <returns></returns> private string GetTypeOfBlueprint(int rawQuantity) => Item != null && StaticBlueprints.GetBlueprintByID(Item.ID) != null && !Item.MarketGroup.BelongsIn(DBConstants.AncientRelicsMarketGroupID) ? rawQuantity == -2 ? BlueprintType.Copy.ToString() : BlueprintType.Original.ToString() : String.Empty;
/// <summary> /// Gets the type of the blueprint. /// </summary> /// <param name="isBPC">Whether ESI reported it as a BPC.</param> /// <returns></returns> private string GetTypeOfBlueprint(bool isBPC) => (Item != null && StaticBlueprints.GetBlueprintByID(Item.ID) != null && !Item.MarketGroup.BelongsIn( DBConstants.AncientRelicsMarketGroupID)) ? (isBPC ? BlueprintType.Copy.ToString() : BlueprintType.Original.ToString()) : string.Empty;