public void ItemListViewItemDoubleClick(object sender, MouseEventArgs args)
        {
            if (!(sender is ListViewItem)) { return; }
            var listItem = (ListViewItem)sender;

            ActivityItem item = null;
            item = weaponsListView.ItemContainerGenerator.ItemFromContainer(listItem) as ActivityItem ??
                   actorsListView.ItemContainerGenerator.ItemFromContainer(listItem) as ActivityItem ??
                   craftListView.ItemContainerGenerator.ItemFromContainer(listItem) as ActivityItem;
            if (item == null) return;

            SelectedItem = item;

            Close();
        }
        public IEnumerable<ActivityItem> GetActivitiesFromFile(string file)
        {
            var includedFiles = new List<string>();

            StreamReader reader = null;
            for (var i = 0; i < 100; i++)
            {
                try
                {
                    reader = new StreamReader(file);
                    break;
                }
                catch (IOException ex)
                {
                    if (RetryFiles)
                    {
                        Thread.Sleep(10);
                        continue;
                    }
                    else
                    {
                        throw ex;
                    }
                }
                throw new IOException("Failed to load file after 100 tries.");
            }

            var commented = false;
            var loadLine = true;
            string line = "";

            while (!reader.EndOfStream)
            {
                if (loadLine)
                    line = reader.ReadLine();
                else
                    loadLine = true;
                if (lineStartsWithComment(line))
                {
                    commented = true;
                }
                if (commented && lineEndsWithComment(line))
                {
                    commented = false;
                }
                if (line.Contains('=') && hasInclude(line) && !commented)
                {
                    includedFiles.Add(getInclude(line));
                }
                else if (line.Contains('=') && hasItemEntry(line) && !commented)
                {
                    var activity = new ActivityItem();
                    try
                    {
                        activity.Group = getItemGroup(line);
                        activity.Type = getItemType(line);
                    }
                    catch (InvalidActivityItemException)
                    {
                        continue;
                    }

                    GroupTabs = tabIndex(line) + 1;

                    while (true)
                    {
                        if(reader.EndOfStream) break;

                        line = reader.ReadLine();

                        if (tabIndex(line) < GroupTabs)
                        {
                            loadLine = false;
                            break;
                        }

                        if (hasNameEntry(line))
                            activity.PresetName = getNameEntry(line);
                        if (hasDescriptionEntry(line))
                            activity.Description = getDescriptionEntry(line);
                        if (hasSpriteEntry(line))
                            activity.SpritePath = getSpriteEntry(line, reader);
                        if (hasBuyableLine(line))
                            activity.Buyable = getBuyableEntry(line);
                    }

                    if (activity.PresetName == null || activity.PresetName.Trim() == "") continue;

                    yield return activity;
                }
            }
            var ccDirectory = Grabber.Settings.Get().CCInstallDirectory;
            foreach (var includedFile in includedFiles)
            {
                foreach (var item in GetActivitiesFromFile(Path.Combine(ccDirectory, includedFile)))
                {
                    yield return item;
                }
            }
            reader.Close();
        }
Ejemplo n.º 3
0
        public IEnumerable <ActivityItem> GetActivitiesFromFile(string file)
        {
            var includedFiles = new List <string>();

            StreamReader reader = null;

            for (var i = 0; i < 100; i++)
            {
                try
                {
                    reader = new StreamReader(file);
                    break;
                }
                catch (IOException ex)
                {
                    if (RetryFiles)
                    {
                        Thread.Sleep(10);
                        continue;
                    }
                    else
                    {
                        throw ex;
                    }
                }
                throw new IOException("Failed to load file after 100 tries.");
            }

            var    commented = false;
            var    loadLine  = true;
            string line      = "";

            while (!reader.EndOfStream)
            {
                if (loadLine)
                {
                    line = reader.ReadLine();
                }
                else
                {
                    loadLine = true;
                }
                if (lineStartsWithComment(line))
                {
                    commented = true;
                }
                if (commented && lineEndsWithComment(line))
                {
                    commented = false;
                }
                if (line.Contains('=') && hasInclude(line) && !commented)
                {
                    includedFiles.Add(getInclude(line));
                }
                else if (line.Contains('=') && hasItemEntry(line) && !commented)
                {
                    var activity = new ActivityItem();
                    try
                    {
                        activity.Group = getItemGroup(line);
                        activity.Type  = getItemType(line);
                    }
                    catch (InvalidActivityItemException)
                    {
                        continue;
                    }

                    GroupTabs = tabIndex(line) + 1;

                    while (true)
                    {
                        if (reader.EndOfStream)
                        {
                            break;
                        }

                        line = reader.ReadLine();

                        if (tabIndex(line) < GroupTabs)
                        {
                            loadLine = false;
                            break;
                        }

                        if (hasNameEntry(line))
                        {
                            activity.PresetName = getNameEntry(line);
                        }
                        if (hasDescriptionEntry(line))
                        {
                            activity.Description = getDescriptionEntry(line);
                        }
                        if (hasSpriteEntry(line))
                        {
                            activity.SpritePath = getSpriteEntry(line, reader);
                        }
                        if (hasBuyableLine(line))
                        {
                            activity.Buyable = getBuyableEntry(line);
                        }
                    }

                    if (activity.PresetName == null || activity.PresetName.Trim() == "")
                    {
                        continue;
                    }

                    yield return(activity);
                }
            }
            var ccDirectory = Grabber.Settings.Get().CCInstallDirectory;

            foreach (var includedFile in includedFiles)
            {
                foreach (var item in GetActivitiesFromFile(Path.Combine(ccDirectory, includedFile)))
                {
                    yield return(item);
                }
            }
            reader.Close();
        }
 public InventoryItem(Activities.ActivityItem activityItem)
 {
     Name     = Enum.GetName(typeof(Activities.ActivityItemType), activityItem.Type);
     CopyOf   = activityItem.Mod.Folder.Remove(activityItem.Mod.Folder.IndexOf(".rte", StringComparison.OrdinalIgnoreCase)) + "/" + activityItem.PresetName;
     SubItems = new Inventory();
 }