public void AddUI(SimpleAdditionalUI additionalUI, int index, bool useButtonAsTab) { if (additionalUI == null) { return; } bool alreadyInList = additionalUIs.Contains(additionalUI); if (moveAdditionalUIToAdditionalPanel) { additionalUI.transform.SetParent(additionalUIPanel); additionalUI.transform.SetSiblingIndex(index); } bool createTabButton = autoCreateTabButton; if (additionalUI != null) { if (additionalUI.HasSelectable && useButtonAsTab) { additionalUI.VisibilitySelectable.transform.SetParent(tabsPanel); additionalUI.VisibilitySelectable.transform.SetSiblingIndex(index); createTabButton = false; } } if (createTabButton) { GameObject tabButton = CreateTabButton(prefabTabButton, index); additionalUI.AddVisibilityControlSelectable(tabButton, true); } else { additionalUI.RemoveVisibilityControlSelectable(); additionalUI.AddVisibilityControlSelectable(); } if (alreadyInList == false) { if (index < additionalUIs.Count) { if (index < 0) { index = 0; } additionalUIs.Insert(index, additionalUI); } else { index = additionalUIs.Count; additionalUIs.Add(additionalUI); } additionalUI.OnChangedVisibility += AdditionalUI_OnChangedVisibility; } VerifyIfShowSomething(); }
private void AdditionalUI_OnChangedVisibility(BaseAdditionalUI addUI) { SimpleAdditionalUI simpleUI = addUI as SimpleAdditionalUI; if (addUI.IsVisible == true) { currentVisibleAdditionalUIs.Add(simpleUI); if (additionalUIAreExclusive == false) { return; } //Se i pannelli sono esclusivi nascondi gli altri. //Da notare che impostando i pannelli a non visibili, questo handler verrà richiamato, andando così nel blocco else. foreach (var sAddUI in additionalUIs) { if (sAddUI != simpleUI) { sAddUI.IsVisible = false; } } } else { bool wasVisible = currentVisibleAdditionalUIs.Remove(simpleUI); if (alwaysShowSomething == false) { return; } //Verifica se c'è ancora qualche pannello visibile con il tab/bottone/toggle visibile. if (additionalUIs.Exists(ui => ui.IsVisible) == false) { //Se il multipanel deve sempre mostrare almeno un pannello if (alwaysShowSomething) { //Click su un pannello già visibile quindi, //Reimposto a visibile quello appena cliccato (se ha ancora il tab/bottone/toggle visibile) //Altrimenti cerco il primo... if (wasVisible) { simpleUI.IsVisible = true; } else { additionalUIs.First()?.SetVisible(true); } } } } }
public bool RemoveUI(SimpleAdditionalUI additionalUI, bool hide = true) { if (additionalUIs.Contains(additionalUI) == false) { return(false); } additionalUIs.Remove(additionalUI); currentVisibleAdditionalUIs.Remove(additionalUI); additionalUI.OnChangedVisibility -= AdditionalUI_OnChangedVisibility; if (hide) { additionalUI.SetVisibleAll(false); } VerifyIfShowSomething(); return(true); }
public void AddUI(SimpleAdditionalUI additionalUI) { AddUI(additionalUI, additionalUIs.Count, true); }