Beispiel #1
0
    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 );
 }
Beispiel #3
0
    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);
    }