コード例 #1
0
        internal static UIElement GetContainer(UIElement containee, int sortid)
        {
            UIElement container = new UISortableElement(sortid);

            container.Width.Set(0f, 1f);
            container.Height.Set(30f, 0f);
            //container.HAlign = 1f;
            container.Append(containee);
            return(container);
        }
コード例 #2
0
        internal void Populate()
        {
            int i = 0;

            foreach (var item in ConfigManager.Configs)
            {
                foreach (var config in item.Value)
                {
                    //if (config.Mode == ConfigScope.ClientSide)
                    {
                        string configDisplayName = ((LabelAttribute)Attribute.GetCustomAttribute(config.GetType(), typeof(LabelAttribute)))?.Label ?? config.Name;
                        UITextPanel <string> t   = new UITextPanel <string>(item.Key.DisplayName + ": " + configDisplayName);
                        //UIText t = new UIText(item.Key.DisplayName + ": " + item.Value.Count);
                        t.OnClick += (a, b) =>
                        {
                            Interface.modConfig.SetMod(item.Key, config);
                            Main.InGameUI.SetState(Interface.modConfig);
                        };
                        t.WithFadedMouseOver();
                        t.HAlign = 0.5f;
                        UIElement container = new UISortableElement(i++);
                        container.Width.Set(0f, 1f);
                        container.Height.Set(40f, 0f);
                        container.HAlign = 1f;
                        container.Append(t);
                        modList.Add(container);

                        if (config.Mode == ConfigScope.ServerSide)
                        {
                            t.BackgroundColor = Color.Pink * 0.7f;
                            t.OnMouseOver    += (a, b) => t.BackgroundColor = Color.Pink;
                            t.OnMouseOut     += (a, b) => t.BackgroundColor = Color.Pink * 0.7f;
                        }
                    }
                }
            }
        }
コード例 #3
0
        private void PopulateSortsAndFiltersPanel()
        {
            var availableSorts = new List <Sort>(sorts);

            availableFilters = new List <Filter>(filters);
            //sortsAndFiltersPanel.RemoveAllChildren();
            if (subCategorySortsFiltersGrid != null)
            {
                sortsAndFiltersPanel.RemoveChild(subCategorySortsFiltersGrid);
                sortsAndFiltersPanel.RemoveChild(lootGridScrollbar2);
            }

            bool doTopRow = false;

            if (categoriesGrid == null)
            {
                doTopRow = true;

                categoriesGrid = new UIHorizontalGrid();
                categoriesGrid.Width.Set(0, 1f);
                categoriesGrid.Height.Set(26, 0f);
                categoriesGrid.ListPadding    = 2f;
                categoriesGrid.OnScrollWheel += RecipeBrowserUI.OnScrollWheel_FixHotbarScroll;
                sortsAndFiltersPanel.Append(categoriesGrid);
                categoriesGrid.drawArrows = true;

                var lootGridScrollbar = new InvisibleFixedUIHorizontalScrollbar(RecipeBrowserUI.instance.userInterface);
                lootGridScrollbar.SetView(100f, 1000f);
                lootGridScrollbar.Width.Set(0, 1f);
                lootGridScrollbar.Top.Set(0, 0f);
                sortsAndFiltersPanel.Append(lootGridScrollbar);
                categoriesGrid.SetScrollbar(lootGridScrollbar);
            }

            subCategorySortsFiltersGrid = new UIHorizontalGrid();
            subCategorySortsFiltersGrid.Width.Set(0, 1f);
            subCategorySortsFiltersGrid.Top.Set(26, 0f);
            subCategorySortsFiltersGrid.Height.Set(26, 0f);
            subCategorySortsFiltersGrid.ListPadding    = 2f;
            subCategorySortsFiltersGrid.OnScrollWheel += RecipeBrowserUI.OnScrollWheel_FixHotbarScroll;
            sortsAndFiltersPanel.Append(subCategorySortsFiltersGrid);
            subCategorySortsFiltersGrid.drawArrows = true;

            lootGridScrollbar2 = new InvisibleFixedUIHorizontalScrollbar(RecipeBrowserUI.instance.userInterface);
            lootGridScrollbar2.SetView(100f, 1000f);
            lootGridScrollbar2.Width.Set(0, 1f);
            lootGridScrollbar2.Top.Set(28, 0f);
            sortsAndFiltersPanel.Append(lootGridScrollbar2);
            subCategorySortsFiltersGrid.SetScrollbar(lootGridScrollbar2);

            //sortsAndFiltersPanelGrid = new UIGrid();
            //sortsAndFiltersPanelGrid.Width.Set(0, 1);
            //sortsAndFiltersPanelGrid.Height.Set(0, 1);
            //sortsAndFiltersPanel.Append(sortsAndFiltersPanelGrid);

            //sortsAndFiltersPanelGrid2 = new UIGrid();
            //sortsAndFiltersPanelGrid2.Width.Set(0, 1);
            //sortsAndFiltersPanelGrid2.Height.Set(0, 1);
            //sortsAndFiltersPanel.Append(sortsAndFiltersPanelGrid2);

            int count = 0;

            var visibleCategories    = new List <Category>();
            var visibleSubCategories = new List <Category>();
            int left = 0;

            foreach (var category in categories)
            {
                category.button.selected = false;
                visibleCategories.Add(category);
                bool meOrChildSelected = SelectedCategory == category;
                foreach (var subcategory in category.subCategories)
                {
                    subcategory.button.selected = false;
                    meOrChildSelected          |= subcategory == SelectedCategory;
                }
                if (meOrChildSelected)
                {
                    visibleSubCategories.AddRange(category.subCategories);
                    category.button.selected = true;
                }
            }

            if (doTopRow)
            {
                foreach (var category in visibleCategories)
                {
                    var container = new UISortableElement(++count);
                    container.Width.Set(24, 0);
                    container.Height.Set(24, 0);
                    //category.button.Left.Pixels = left;
                    //if (category.parent != null)
                    //	container.OrderIndex
                    //	category.button.Top.Pixels = 12;
                    //sortsAndFiltersPanel.Append(category.button);
                    container.Append(category.button);
                    categoriesGrid.Add(container);
                    left += 26;
                }
            }

            //UISortableElement spacer = new UISortableElement(++count);
            //spacer.Width.Set(0, 1);
            //sortsAndFiltersPanelGrid2.Add(spacer);

            foreach (var category in visibleSubCategories)
            {
                var container = new UISortableElement(++count);
                container.Width.Set(24, 0);
                container.Height.Set(24, 0);
                container.Append(category.button);
                subCategorySortsFiltersGrid.Add(container);
                left += 26;
            }

            if (visibleSubCategories.Count > 0)
            {
                var container2 = new UISortableElement(++count);
                container2.Width.Set(24, 0);
                container2.Height.Set(24, 0);
                var image = new UIImage(RecipeBrowser.instance.GetTexture("Images/spacer"));
                //image.Left.Set(6, 0);
                image.HAlign = 0.5f;
                container2.Append(image);
                subCategorySortsFiltersGrid.Add(container2);
            }

            // add to sorts here
            if (SelectedCategory != null)
            {
                SelectedCategory.button.selected = true;
                SelectedCategory.ParentAddToSorts(availableSorts);
            }

            left = 0;
            foreach (var sort in availableSorts)
            {
                sort.button.selected = false;
                if (SelectedSort == sort)                 // TODO: SelectedSort no longwe valid
                {
                    sort.button.selected = true;
                }
                //sort.button.Left.Pixels = left;
                //sort.button.Top.Pixels = 24;
                //sort.button.Width
                //grid.Add(sort.button);
                var container = new UISortableElement(++count);
                container.Width.Set(24, 0);
                container.Height.Set(24, 0);
                container.Append(sort.button);
                subCategorySortsFiltersGrid.Add(container);
                //sortsAndFiltersPanel.Append(sort.button);
                left += 26;
            }
            if (!availableSorts.Contains(SelectedSort))
            {
                availableSorts[0].button.selected = true;
                SelectedSort = availableSorts[0];
                updateNeeded = false;
            }

            if (filters.Count > 0)
            {
                var container2 = new UISortableElement(++count);
                container2.Width.Set(24, 0);
                container2.Height.Set(24, 0);
                var image = new UIImage(RecipeBrowser.instance.GetTexture("Images/spacer"));
                image.HAlign = 0.5f;
                container2.Append(image);
                subCategorySortsFiltersGrid.Add(container2);

                foreach (var item in filters)
                {
                    var container = new UISortableElement(++count);
                    container.Width.Set(24, 0);
                    container.Height.Set(24, 0);
                    container.Append(item.button);
                    subCategorySortsFiltersGrid.Add(container);
                }
            }
        }
コード例 #4
0
ファイル: SharedUI.cs プロジェクト: duraz0rz/RecipeBrowser
        private void PopulateSortsAndFiltersPanel()
        {
            var availableSorts = new List <Sort>(sorts);

            availableFilters = new List <Filter>(filters);
            //sortsAndFiltersPanel.RemoveAllChildren();
            if (subCategorySortsFiltersGrid != null)
            {
                sortsAndFiltersPanel.RemoveChild(subCategorySortsFiltersGrid);
                sortsAndFiltersPanel.RemoveChild(lootGridScrollbar2);
            }

            if (categoriesGrid == null)
            {
                categoriesGrid = new UIHorizontalGrid();
                categoriesGrid.Width.Set(0, 1f);
                categoriesGrid.Height.Set(26, 0f);
                categoriesGrid.ListPadding    = 2f;
                categoriesGrid.OnScrollWheel += RecipeBrowserUI.OnScrollWheel_FixHotbarScroll;
                sortsAndFiltersPanel.Append(categoriesGrid);
                categoriesGrid.drawArrows = true;

                categoriesGridScrollbar = new InvisibleFixedUIHorizontalScrollbar(RecipeBrowserUI.instance.userInterface);
                categoriesGridScrollbar.SetView(100f, 1000f);
                categoriesGridScrollbar.Width.Set(0, 1f);
                categoriesGridScrollbar.Top.Set(0, 0f);
                sortsAndFiltersPanel.Append(categoriesGridScrollbar);
                categoriesGrid.SetScrollbar(categoriesGridScrollbar);
            }

            subCategorySortsFiltersGrid = new UIHorizontalGrid();
            subCategorySortsFiltersGrid.Width.Set(0, 1f);
            subCategorySortsFiltersGrid.Top.Set(26, 0f);
            subCategorySortsFiltersGrid.Height.Set(26, 0f);
            subCategorySortsFiltersGrid.ListPadding    = 2f;
            subCategorySortsFiltersGrid.OnScrollWheel += RecipeBrowserUI.OnScrollWheel_FixHotbarScroll;
            sortsAndFiltersPanel.Append(subCategorySortsFiltersGrid);
            subCategorySortsFiltersGrid.drawArrows = true;

            float oldRow2ViewPosition = lootGridScrollbar2?.ViewPosition ?? 0f;

            lootGridScrollbar2 = new InvisibleFixedUIHorizontalScrollbar(RecipeBrowserUI.instance.userInterface);
            lootGridScrollbar2.SetView(100f, 1000f);
            lootGridScrollbar2.Width.Set(0, 1f);
            lootGridScrollbar2.Top.Set(28, 0f);
            sortsAndFiltersPanel.Append(lootGridScrollbar2);
            subCategorySortsFiltersGrid.SetScrollbar(lootGridScrollbar2);

            //sortsAndFiltersPanelGrid = new UIGrid();
            //sortsAndFiltersPanelGrid.Width.Set(0, 1);
            //sortsAndFiltersPanelGrid.Height.Set(0, 1);
            //sortsAndFiltersPanel.Append(sortsAndFiltersPanelGrid);

            //sortsAndFiltersPanelGrid2 = new UIGrid();
            //sortsAndFiltersPanelGrid2.Width.Set(0, 1);
            //sortsAndFiltersPanelGrid2.Height.Set(0, 1);
            //sortsAndFiltersPanel.Append(sortsAndFiltersPanelGrid2);

            int count = 0;

            var visibleCategories    = new List <Category>();
            var visibleSubCategories = new List <Category>();
            int left = 0;

            foreach (var category in categories)
            {
                category.button.selected = false;
                visibleCategories.Add(category);
                bool meOrChildSelected = SelectedCategory == category;
                foreach (var subcategory in category.subCategories)
                {
                    subcategory.button.selected = false;
                    meOrChildSelected          |= subcategory == SelectedCategory;
                }
                if (meOrChildSelected)
                {
                    visibleSubCategories.AddRange(category.subCategories);
                    category.button.selected = true;
                }
                if (RecipeBrowserUI.instance.CurrentPanel == RecipeBrowserUI.RecipeCatalogue && category.name == ArmorSetFeatureHelper.ArmorSetsHoverTest)
                {
                    visibleCategories.Remove(category);
                }
            }

            float oldTopRowViewPosition = categoriesGridScrollbar?.ViewPosition ?? 0f;

            categoriesGrid.Clear();
            foreach (var category in visibleCategories)
            {
                var container = new UISortableElement(++count);
                container.Width.Set(24, 0);
                container.Height.Set(24, 0);
                //category.button.Left.Pixels = left;
                //if (category.parent != null)
                //	container.OrderIndex
                //	category.button.Top.Pixels = 12;
                //sortsAndFiltersPanel.Append(category.button);
                container.Append(category.button);
                categoriesGrid.Add(container);
                left += 26;
            }

            //UISortableElement spacer = new UISortableElement(++count);
            //spacer.Width.Set(0, 1);
            //sortsAndFiltersPanelGrid2.Add(spacer);

            foreach (var category in visibleSubCategories)
            {
                var container = new UISortableElement(++count);
                container.Width.Set(24, 0);
                container.Height.Set(24, 0);
                container.Append(category.button);
                subCategorySortsFiltersGrid.Add(container);
                left += 26;
            }

            if (visibleSubCategories.Count > 0)
            {
                var container2 = new UISortableElement(++count);
                container2.Width.Set(24, 0);
                container2.Height.Set(24, 0);
                var image = new UIImage(RecipeBrowser.instance.GetTexture("Images/spacer"));
                //image.Left.Set(6, 0);
                image.HAlign = 0.5f;
                container2.Append(image);
                subCategorySortsFiltersGrid.Add(container2);
            }

            // add to sorts and filters here
            if (SelectedCategory != null)
            {
                SelectedCategory.button.selected = true;
                SelectedCategory.ParentAddToSorts(availableSorts);
                SelectedCategory.ParentAddToFilters(availableFilters);
            }

            left = 0;
            foreach (var sort in availableSorts)
            {
                sort.button.selected = false;
                if (SelectedSort == sort)                 // TODO: SelectedSort no longwe valid
                {
                    sort.button.selected = true;
                }
                //sort.button.Left.Pixels = left;
                //sort.button.Top.Pixels = 24;
                //sort.button.Width
                //grid.Add(sort.button);
                var container = new UISortableElement(++count);
                container.Width.Set(24, 0);
                container.Height.Set(24, 0);
                container.Append(sort.button);
                subCategorySortsFiltersGrid.Add(container);
                //sortsAndFiltersPanel.Append(sort.button);
                left += 26;
            }
            if (!availableSorts.Contains(SharedUI.instance.SelectedSort))
            {
                availableSorts[0].button.selected = true;
                SharedUI.instance.SelectedSort    = availableSorts[0];
                updateNeeded = false;
            }

            if (availableFilters.Count > 0)
            {
                var container2 = new UISortableElement(++count);
                container2.Width.Set(24, 0);
                container2.Height.Set(24, 0);
                var image = new UIImage(RecipeBrowser.instance.GetTexture("Images/spacer"));
                image.HAlign = 0.5f;
                container2.Append(image);
                subCategorySortsFiltersGrid.Add(container2);

                foreach (var item in availableFilters)
                {
                    var container = new UISortableElement(++count);
                    container.Width.Set(24, 0);
                    container.Height.Set(24, 0);
                    container.Append(item.button);
                    subCategorySortsFiltersGrid.Add(container);
                }
            }

            // Restore view position after CycleFilter changes current filters.
            subCategorySortsFiltersGrid.Recalculate();
            lootGridScrollbar2.ViewPosition = oldRow2ViewPosition;
            categoriesGrid.Recalculate();
            //categoriesGridScrollbar.ViewPosition = oldTopRowViewPosition; // And after category disappears, not really needed since only 1 will disappear, unlike 2nd row. Test more if more special categories are added
        }