/// <summary> /// Refresh the mission items /// </summary> public void RefreshMissionItems(long agentId) { // Clear out old items MissionItems.Clear(); BringMissionItem = string.Empty; var mission = GetAgentMission(agentId); if (mission == null) { return; } var missionName = FilterPath(mission.Name); var missionXmlPath = Path.Combine(Settings.Instance.MissionsPath, missionName + ".xml"); if (!File.Exists(missionXmlPath)) { return; } try { var xdoc = XDocument.Load(missionXmlPath); var items = ((IEnumerable)xdoc.XPathEvaluate("//action[(translate(@name, 'LOT', 'lot')='loot') or (translate(@name, 'LOTIEM', 'lotiem')='lootitem')]/parameter[translate(@name, 'TIEM', 'tiem')='item']/@value")).Cast <XAttribute>().Select(a => ((string)a ?? string.Empty).ToLower()); MissionItems.AddRange(items); BringMissionItem = (string)xdoc.Root.Element("bring") ?? string.Empty; BringMissionItem = BringMissionItem.ToLower(); } catch (Exception ex) { Logging.Log("Error loading mission XML file [" + ex.Message + "]"); } }
/// <summary> /// Refresh the mission items /// </summary> public void RefreshMissionItems(long agentId) { // Clear out old items MissionItems.Clear(); BringMissionItem = string.Empty; var mission = GetAgentMission(agentId); if (mission == null) { return; } if (factionName == null || factionName == "") { factionName = "Default"; } if (Settings.Instance.UseFittingManager) { //Set fitting to default DefaultFitting = (string)Settings.Instance.DefaultFitting.Fitting; Fitting = DefaultFitting; MissionShip = ""; ChangeMissionShipFittings = false; if (Settings.Instance.MissionFitting.Any(m => m.Mission.ToLower() == mission.Name.ToLower())) //priority goes to mission-specific fittings { string _missionFit; string _missionShip; MissionFitting _missionFitting; // if we've got multiple copies of the same mission, find the one with the matching faction if (Settings.Instance.MissionFitting.Any(m => m.Faction.ToLower() == factionName.ToLower() && (m.Mission.ToLower() == mission.Name.ToLower()))) { _missionFitting = Settings.Instance.MissionFitting.FirstOrDefault(m => m.Faction.ToLower() == factionName.ToLower() && (m.Mission.ToLower() == mission.Name.ToLower())); } else //otherwise just use the first copy of that mission { _missionFitting = Settings.Instance.MissionFitting.FirstOrDefault(m => m.Mission.ToLower() == mission.Name.ToLower()); } _missionFit = (string)_missionFitting.Fitting; _missionShip = (string)_missionFitting.Ship; if (!(_missionFit == "" && !(_missionShip == ""))) // if we've both specified a mission specific ship and a fitting, then apply that fitting to the ship { ChangeMissionShipFittings = true; Fitting = _missionFit; } else if (!((factionFit == null) || (factionFit == ""))) { Fitting = factionFit; } Logging.Log("Cache: Mission: " + _missionFitting.Mission + " - Faction: " + factionName + " - Fitting: " + _missionFit + " - Ship: " + _missionShip + " - ChangeMissionShipFittings: " + ChangeMissionShipFittings); MissionShip = _missionShip; } else if (!((factionFit == null) || (factionFit == ""))) // if no mission fittings defined, try to match by faction { Fitting = factionFit; } if (Fitting == "") // otherwise use the default { Fitting = DefaultFitting; } } var missionName = FilterPath(mission.Name); var missionXmlPath = Path.Combine(Settings.Instance.MissionsPath, missionName + ".xml"); if (!File.Exists(missionXmlPath)) { return; } try { var xdoc = XDocument.Load(missionXmlPath); var items = ((IEnumerable)xdoc.XPathEvaluate("//action[(translate(@name, 'LOT', 'lot')='loot') or (translate(@name, 'LOTIEM', 'lotiem')='lootitem')]/parameter[translate(@name, 'TIEM', 'tiem')='item']/@value")).Cast <XAttribute>().Select(a => ((string)a ?? string.Empty).ToLower()); MissionItems.AddRange(items); BringMissionItem = (string)xdoc.Root.Element("bring") ?? string.Empty; BringMissionItem = BringMissionItem.ToLower(); //load fitting setting from the mission file //Fitting = (string)xdoc.Root.Element("fitting") ?? "default"; } catch (Exception ex) { Logging.Log("Error loading mission XML file [" + ex.Message + "]"); } }