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); }
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; } } } } }
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); } } }
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 }