private void Start() { canvasTransform = GameObject.Find("UICanvas").transform; uIPageHolder = canvasTransform.gameObject.GetComponent <UIPageHolder>(); uIPageHolder.AddPage(this); gameObject.AddComponent <CoroutineToolMethods>(); coroutineToolMethods = gameObject.GetComponent <CoroutineToolMethods>(); foreach (UIPanel panel in uIPage.panels) { GameObject newPanel = null; //InitializePanel //Load prefab panel if given if (panel.panelPreset != null) { newPanel = UIToolMethods.AddUIPanel(gameObject.transform, panel.panelName, panel.panelPreset.name); } else { newPanel = UIToolMethods.AddUIPanel(gameObject.transform, panel.panelName); //Add Layout if nessecary AddPanelLayout(newPanel, panel); } initializedUIPanels.Add(newPanel); //Set panel properties(size, position) if (panel.usesCustomTransformProperty) { RectTransform panelTransform = newPanel.GetComponent <RectTransform>(); panelTransform.anchoredPosition = panel.panelPosition; panelTransform.localScale = new Vector3(panel.panelSize.x, panel.panelSize.y, 0); } //Initialize UI elements //Initialize buttons. if (panel.uIButtons.Count > 0) { for (int i = 0; i < panel.uIButtons.Count; i++) { initializedUIElements.Add(AddButton(newPanel, panel.uIButtons[i])); } } } }
public override void HandleInput() { //If current ui element is no longer being edited //Check for focused ui element which is is an interface bool that becomes true when on edit event is received //and false when oncancel event is recevied. //The page stores all focusable ui elements and the currently focused element. if (!InputToolMethod.IsInputRepeated() && Input.GetAxis("Cancel") != 0) { //Close current panel bool returnToStartPage = true; foreach (UIPage uiPage in uIPageHolder.initializedUIPages) { if (uiPage.isActive) { foreach (IFocusUIElement focusElement in uiPage.FocusedUIElements) { bool focused = focusElement.IsThisElementInFocus(); if (focused) { returnToStartPage = false; break; } } } } if (returnToStartPage) { foreach (UIPage uiPage in uIPageHolder.initializedUIPages) { if (uiPage.GetComponent <IFocusUIElement>() == null) { uiPage.gameObject.SetActive(false); } } UIToolMethods.OpenUIPanel(uIPageHolder.startPage.canvasTransform, uIPageHolder.startPage.gameObject.name); } } // Change to In game state //Condition // inputHandlerUpdaterAttachedTo.CurrentInputHandler = (InputHandle rState)inputStateFactory.CreateProduct( //(int)FactoriesProducts.InputstateProducts.UINavigatorInGameState,this ); }
private GameObject AddButton(GameObject panel, UIButton uIButton) { GameObject newButton = UIToolMethods.AddUIButton(panel.transform, uIButton.buttonName); //Add functionality switch (uIButton.buttonFunction) { case UIButton.ButtonFunctions.ClosePanel: newButton.GetComponent <Button>().onClick.AddListener(delegate { UIToolMethods.DisableGameObject(uIButton.panelToOpen.name); }); break; case UIButton.ButtonFunctions.OpenPanel: newButton.GetComponent <Button>().onClick.AddListener(delegate { UIToolMethods.OpenUIPanel(canvasTransform, uIButton.panelToOpen.name); }); break; case UIButton.ButtonFunctions.LoadScene: newButton.GetComponent <Button>().onClick.AddListener(delegate { StartCoroutine(coroutineToolMethods.LoadScene(uIButton.sceneToOpen)); }); break; case UIButton.ButtonFunctions.ExitGame: newButton.GetComponent <Button>().onClick.AddListener(delegate { UIToolMethods.ExitGame(); }); break; case UIButton.ButtonFunctions.OpenUIPage: newButton.GetComponent <Button>().onClick.AddListener(delegate { UIToolMethods.OpenUIPanel(canvasTransform, uIButton.panelToOpen.name); UIToolMethods.DisableGameObject(gameObject.name); }); break; //Complex UI functions can be added through adding a script component. } if (uIButton.usesCustomTransformProperty) { RectTransform buttonTransform = newButton.GetComponent <RectTransform>(); buttonTransform.anchoredPosition = uIButton.buttonPosition; buttonTransform.localScale = new Vector3(uIButton.buttonSize.x, uIButton.buttonSize.y, 0); } return(newButton); }