Beispiel #1
0
        private void AddFilter()
        {
            //Loads the RealChute parachutes icon
            Texture2D normal = new Texture2D(32, 32), selected = new Texture2D(32, 32);

            normal.LoadImage(File.ReadAllBytes(Path.Combine(RCUtils.pluginDataURL, "FilterIcon.png")));
            selected.LoadImage(File.ReadAllBytes(Path.Combine(RCUtils.pluginDataURL, "FilterIcon_selected.png")));
            PartCategorizer.Icon icon = new PartCategorizer.Icon("RC_Parachutes", normal, selected);

            //Adds the Parachutes filter to the Filter by Function category
            PartCategorizer.Category filterByFunction = PartCategorizer.Instance.filters
                                                        .Find(f => f.button.categoryName == "Filter by Function");
            PartCategorizer.AddCustomSubcategoryFilter(filterByFunction, "Parachutes", icon,
                                                       p => p.moduleInfos.Any(m => m.moduleName == "RealChute" || m.moduleName == "Parachute"));

            //Sets the buttons in the Filter by Module category
            List <PartCategorizer.Category> modules = PartCategorizer.Instance.filters
                                                      .Find(f => f.button.categoryName == "Filter by Module").subcategories;

            modules.Remove(modules.Find(m => m.button.categoryName == "Procedural Chute"));
            modules.Select(m => m.button).Single(b => b.categoryName == "RealChute").SetIcon(icon);

            //Apparently needed to make sure the buttons in Filter by Function show when the editor is loaded
            RUIToggleButtonTyped button = filterByFunction.button.activeButton;

            button.SetFalse(button, RUIToggleButtonTyped.ClickType.FORCED);
            button.SetTrue(button, RUIToggleButtonTyped.ClickType.FORCED);
        }
Beispiel #2
0
 void add_filter()
 {
     //load the icon
     if(!PartCategorizer.Instance.iconDictionary.ContainsKey(ICON))
     {
         var _icon   = GameDatabase.Instance.GetTexture("Hangar/Icons/"+ICON, false);
         var _icon_s = GameDatabase.Instance.GetTexture("Hangar/Icons/"+ICON+"_selected", false);
         var pc_icon = new PartCategorizer.Icon(ICON, _icon, _icon_s, true);
         PartCategorizer.Instance.icons.Add(pc_icon);
         PartCategorizer.Instance.iconDictionary.Add(ICON, pc_icon);
     }
     var icon = PartCategorizer.Instance.GetIcon(ICON);
     //add custom function filter
     var filter = PartCategorizer.Instance.filters
         .Find(f => f.button.categoryName == "Filter by Function");
     PartCategorizer.AddCustomSubcategoryFilter(filter, CATEGORY, icon,
         p => p.moduleInfos.Any(m => is_hangar(m.moduleName)));
     //set icon(s) for all the modules
     PartCategorizer.Instance.filters
         .Find(f => f.button.categoryName == "Filter by Module")
         .subcategories.FindAll(s => is_hangar(s.button.categoryName))
         .ForEach(c => c.button.SetIcon(icon));
     //Apparently needed to make sure the icon actually shows at first
     var button = filter.button.activeButton;
     button.SetFalse(button, RUIToggleButtonTyped.ClickType.FORCED);
     button.SetTrue(button, RUIToggleButtonTyped.ClickType.FORCED);
 }
Beispiel #3
0
        public void initialise()
        {
            if (categoryName == null)
            {
                return;
            }
            PartCategorizer.Icon icon = Core.getIcon(iconName);
            if (icon == null)
            {
                icon = PartCategorizer.Instance.fallbackIcon;
            }
            PartCategorizer.AddCustomFilter(categoryName, icon, colour);

            PartCategorizer.Category category = PartCategorizer.Instance.filters.Find(c => c.button.categoryName == categoryName);
            category.displayType     = EditorPartList.State.PartsList;
            category.exclusionFilter = PartCategorizer.Instance.filterGenericNothing;
        }
Beispiel #4
0
        private void IRCustomFilter()
        {
            const string ICON_FILE            = "R&D_node_icon_robotics";
            const string FILTER_CATEGORY      = "Filter by Function";
            const string CUSTOM_CATEGORY_NAME = "Robotic Parts";

            PartCategorizer.Icon icon = PartCategorizer.Instance.GetIcon(ICON_FILE);

            //Adding our own subcategory to main filter
            PartCategorizer.Category filter = PartCategorizer.Instance.filters.Find(f => f.button.categoryName == FILTER_CATEGORY);
            PartCategorizer.AddCustomSubcategoryFilter(filter, CUSTOM_CATEGORY_NAME, icon, p => availableParts.Contains(p));

            RUIToggleButtonTyped button = filter.button.activeButton;

            button.SetFalse(button, RUIToggleButtonTyped.ClickType.FORCED);
            button.SetTrue(button, RUIToggleButtonTyped.ClickType.FORCED);
        }
Beispiel #5
0
        private void Edit_Delete(string title, bool delete, PartCategorizer.Icon icon)
        {
            PartCategorizer.Category        category      = PartCategorizer.Instance.filters.Find(f => f.button.categoryName == this.category);
            List <PartCategorizer.Category> subCategories = category.subcategories;

            if (delete)
            {
                subCategories.Remove(subCategories.Find(m => m.button.categoryName == title));
            }
            else
            {
                PartCategorizerButton but = subCategories.FirstOrDefault(sC => sC.button.categoryName == title).button;
                if (but != null)
                {
                    but.categoryName = subCategoryTitle;
                    if (icon != PartCategorizer.Instance.fallbackIcon)
                    {
                        but.SetIcon(icon);
                    }
                }
            }
        }
Beispiel #6
0
        private void AddFilter()
        {
            /*
             * Texture2D normal = new Texture2D(1, 1), selected = new Texture2D(1, 1);
             * normal.LoadImage(File.ReadAllBytes(Path.Combine(RCUtils.pluginDataURL, "filterIcon.png")));
             * selected.LoadImage(File.ReadAllBytes(Path.Combine(RCUtils.pluginDataURL, "filterIcon_selected.png")));
             * PartCategorizer.Icon icon = new PartCategorizer.Icon("RealChute", normal, selected);
             */

            //Will replace with custom icons once sumghai does them
            PartCategorizer.Icon icon = PartCategorizer.Instance.GetIcon("R&D_node_icon_survivability");

            PartCategorizer.Category filterByFunction = PartCategorizer.Instance.filters.Find(f => f.button.categoryName == "Filter by Function");
            PartCategorizer.AddCustomSubcategoryFilter(filterByFunction, "Parachutes", icon, p => p.moduleInfos.Any(m => m.moduleName == "RealChute"));
            PartCategorizer.Instance.filters.Find(f => f.button.categoryName == "Filter by Module")
            .subcategories.Find(s => s.button.categoryName == "RealChute").button.SetIcon(icon);

            //Apparently needed to make sure the icon actually shows at first
            RUIToggleButtonTyped button = filterByFunction.button.activeButton;

            button.SetFalse(button, RUIToggleButtonTyped.ClickType.FORCED);
            button.SetTrue(button, RUIToggleButtonTyped.ClickType.FORCED);
        }
Beispiel #7
0
        private static void loadIcons()
        {
            List <GameDatabase.TextureInfo> texList = GameDatabase.Instance.databaseTexture.Where(t => t.texture != null &&
                                                                                                  t.texture.height <= 40 && t.texture.width <= 40 &&
                                                                                                  t.texture.width >= 25 && t.texture.height >= 25
                                                                                                  ).ToList();

            Dictionary <string, GameDatabase.TextureInfo> texDict = new Dictionary <string, GameDatabase.TextureInfo>();

            // using a dictionary for looking up _selected textures. Else the list has to be iterated over for every texture
            foreach (GameDatabase.TextureInfo t in texList)
            {
                if (!texDict.ContainsKey(t.name))
                {
                    texDict.Add(t.name, t);
                }
                else
                {
                    int i = 1;
                    while (texDict.ContainsKey(t.name + i.ToString()) && i < 1000)
                    {
                        i++;
                    }
                    if (i != 1000)
                    {
                        texDict.Add(t.name + i.ToString(), t);
                        Log(t.name + i.ToString());
                    }
                }
            }

            foreach (GameDatabase.TextureInfo t in texList)
            {
                Texture2D selectedTex = null;

                if (texDict.ContainsKey(t.name + "_selected"))
                {
                    selectedTex = texDict[t.name + "_selected"].texture;
                }
                else
                {
                    selectedTex = t.texture;
                }

                string name = t.name.Split(new char[] { '/', '\\' }).Last();
                if (iconDict.ContainsKey(name))
                {
                    int i = 1;
                    while (iconDict.ContainsKey(name + i.ToString()) && i < 1000)
                    {
                        i++;
                    }
                    if (i != 1000)
                    {
                        name = name + i.ToString();
                    }
                    Log("Duplicated texture name by texture " + t.name + ". New reference is: " + name);
                }

                PartCategorizer.Icon icon = new PartCategorizer.Icon(name, t.texture, selectedTex, false);

                // shouldn't be neccesary to check, but just in case...
                if (!iconDict.ContainsKey(icon.name))
                {
                    iconDict.Add(icon.name, icon);
                }
            }
        }