Example #1
0
        /// <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 + "]");
            }
        }
        public void MissionHeaderClick()
        {
            if (MissionItems.Count == 0)
            {
                return;
            }

            MissionItems = new BindableCollection <MissionModel>(MissionItems.Reverse());
            NotifyOfPropertyChange(() => MissionItems);

            IsOrdered = !IsOrdered;
        }
        public async Task DownloadMission()
        {
            if (IsStopDownloadVisible == Visibility.Visible)
            {
                MessageBox.Show("Only one download instance is allowed!", "Information", MessageBoxButton.OK, MessageBoxImage.Information);
                return;
            }

            foreach (var item in MissionItems.ToList())
            {
                if (item.IsSelected)
                {
                    await Download.FileAsync(item.FileId, item, Helper.CtsStopDownloading.Token);
                }
            }
        }
        public void ItemDropLv(DragEventArgs dragArgs)
        {
            if (!dragArgs.Data.GetDataPresent(typeof(List <MissionModel>)))
            {
                return;
            }

            var droppedItems = dragArgs.Data.GetData(typeof(List <MissionModel>)) as List <MissionModel>;

            foreach (var droppedItem in droppedItems)
            {
                if (IgnoredItems.Any(item => item.FileId == droppedItem.FileId))
                {
                    continue;
                }

                IgnoredItems.Add(new IgnoredModel()
                {
                    Item   = droppedItem.Mission,
                    FileId = droppedItem.FileId
                });

                MissionItems.Remove(droppedItem);

                if (IsDeleteIgnoredMfChecked)
                {
                    try
                    {
                        File.Delete(Properties.GetArma3MissionFolderPath + droppedItem.Mission);
                    }
                    catch (IOException e)
                    {
                        MessageBox.Show(e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                }
            }
        }
Example #5
0
        /// <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 + "]");
            }
        }