Пример #1
0
    void FlushOnBackButtonPressed()
    {
        EnumUI            e = instance.renderingPanelsStack.Peek();
        ScriptableUIPanel scriptableUiPanel = Array.Find(instance.panelsArray, UIPanel => UIPanel.id == e);

        instance.loadedPanels[scriptableUiPanel.id].OnBackButtonPressed();
    }
Пример #2
0
    public void ShowUI(EnumUI _ui, object _data = null)
    {
        switch (_ui)
        {
        case EnumUI.MainMenu:
            StopAllCoroutines();
            StartCoroutine(ShowMainMenu());
            break;

        case EnumUI.GameMenu:
            StopAllCoroutines();
            StartCoroutine(ShowGameMenu());
            break;

        case EnumUI.Pause:
            uis[2].OnShow();
            break;

        case EnumUI.RespawnDialog:
            uis[3].OnShow();
            break;

        case EnumUI.GameOver:
            uis[4].OnShow();
            break;

        case EnumUI.Settings:
            uis[5].OnShow();
            break;

        case EnumUI.Market:
            //uis[6].OnShow();
            uis[6].OnShow(_data);
            break;

        case EnumUI.Inventory:
            uis[7].OnShow();
            break;

        case EnumUI.Missions:
            uis[8].OnShow();        //TODO
            break;

        case EnumUI.ClaimDialog:
            uis[9].OnShow(_data);
            break;

        case EnumUI.Credits:
            uis[10].OnShow(_data);
            break;
        }
    }
Пример #3
0
    /// <summary>
    /// Hide the panel on the Top
    /// </summary>
    public static void FlushPanel(bool timeIndependantRendering = false)
    {
        EnumUI            e     = instance.renderingPanelsStack.Pop();
        ScriptableUIPanel panel = Array.Find(instance.panelsArray, UIPanel => UIPanel.id == e);

        instance._animationEndCanvasGroup           = panel.uiPanelBehaviour.canvasGroup;
        instance.loadedPanels[panel.id].EnumUiState = EnumUIState.Hidden;
        if (timeIndependantRendering)
        {
            instance.loadedPanels[panel.id].panel.SetActive(false);
        }
        else
        {
            instance.AnimateEnd(instance.loadedPanels[panel.id].panel, panel.endAnimation);
        }
    }
Пример #4
0
    /// <summary>
    /// Show the panel with the given id
    /// </summary>
    /// <param name="id">EnumUi id</param>
    /// <param name="timeIndependantRendering">set true to do rendering without animations</param>
    public static void RenderPanel(EnumUI id, bool timeIndependantRendering = false)
    {
        ScriptableUIPanel panel = Array.Find(instance.panelsArray, UIPanel => UIPanel.id == id);

        if (!instance.loadedPanels.ContainsKey(id))
        {
            GameObject       spawnedPanel     = Instantiate(panel.panelPrefab, instance.containerTransform);
            UIPanelBehaviour uiPanelBehaviour = panel.uiPanelBehaviour;
            uiPanelBehaviour.panel              = spawnedPanel;
            uiPanelBehaviour.canvasGroup        = spawnedPanel.gameObject.GetComponent <CanvasGroup>();
            instance._animationStartCanvasGroup = uiPanelBehaviour.canvasGroup;
            instance.loadedPanels.Add(panel.id, uiPanelBehaviour);
            instance.loadedPanels[id].EnumUiState = EnumUIState.Rendering;
            spawnedPanel.SetActive(true);
            spawnedPanel.transform.localScale = Vector3.one;
            spawnedPanel.transform.SetAsLastSibling();
            if (!timeIndependantRendering)
            {
                instance.AnimateStart(spawnedPanel, panel.startAnimation);
            }

            instance.renderingPanelsStack.Push(panel.id);
        }
        else if (instance.loadedPanels[id].EnumUiState == EnumUIState.Hidden)
        {
            GameObject loadedPanel = instance.loadedPanels[id].panel;
            instance._animationStartCanvasGroup       = instance.loadedPanels[id].canvasGroup;
            instance._animationStartCanvasGroup.alpha = 1f;
            instance.loadedPanels[id].EnumUiState     = EnumUIState.Rendering;
            loadedPanel.SetActive(true);
            loadedPanel.transform.localScale = Vector3.one;
            loadedPanel.transform.SetAsLastSibling();
            if (!timeIndependantRendering)
            {
                instance.AnimateStart(loadedPanel, panel.startAnimation);
            }

            instance.renderingPanelsStack.Push(panel.id);
        }
        else if (instance.loadedPanels[id].EnumUiState == EnumUIState.Rendering)
        {
            Debug.Log("The panel " + panel.panelName + " is already Rendering");
        }
    }