public UIPanelInstance CreatePanelInstanceAndAddToListIfNess(UIPanelInfo panel) { if (GetPanelInstance(panel.panelName) != null) { return(GetPanelInstance(panel.panelName)); } if (panel.uiObjectReference == null) { panel.uiObjectReference = ResourceManager.Instance.LoadAsset <UnityEngine.Object>(panel.objectPath); } if (panel.uiObjectReference == null) { QLogger.LogErrorAndThrowException("Panel object not found!"); } GameObject instance = GameObject.Instantiate(panel.uiObjectReference, new Vector3(9999, 9999, 9999), Quaternion.identity, transform) as GameObject; instance.SetActive(false); instance.transform.localPosition = panel.localPosition; UIPanelInstance panelInstance = null; if (panel.type == UIPanelInfo.Type.Screen) { panelInstance = new ScreenPanelInstance(); } else if (panel.type == UIPanelInfo.Type.Popup) { panelInstance = new PopupPanelInstance(); } else if (panel.type == UIPanelInfo.Type.Alert) { panelInstance = new AlertPanelInstance(); } else if (panel.type == UIPanelInfo.Type.GamePlay) { panelInstance = new GamePlayScreenPanelInstance(); } else { QLogger.LogErrorAndThrowException("Should not be here !"); } panelInstance.panelInfo = panel; panelInstance.instance = instance; panelInstance.uiPanel = instance.GetComponent <UIPanel>(); if (panelInstance.uiPanel == null) { QLogger.LogErrorAndThrowException("Ui panel instance not found "); } panelsInMemory.Add(panelInstance); return(panelInstance); }
public UIPanel PushScreen(string screenName, bool visible) { UIPanelInstance panelInstance = GetPanelInstance(screenName); if (panelInstance == null) { UIPanelInfo panelInfo = GetPanelReference(screenName); if (panelInfo == null) { QLogger.LogErrorAndThrowException("No screen found with name:" + screenName); } if (panelInfo.type != UIPanelInfo.Type.Screen) { QLogger.LogErrorAndThrowException("This panel is not a screen type"); } panelInstance = CreatePanelInstanceAndAddToListIfNess(panelInfo); if (panelInstance == null) { QLogger.LogErrorAndThrowException("Panel instance was not created!"); } } if (!(panelInstance is ScreenPanelInstance)) { QLogger.LogErrorAndThrowException("This panel is not screen type - 2"); } ScreenPanelInstance screenInstance = panelInstance as ScreenPanelInstance; if (screenPanelStack.Count > 0) { screenPanelStack.Peek().uiPanel.OnPusedBack(); screenPanelStack.Peek().instance.SetActive(false); } screenPanelStack.Push(screenInstance); panelInstance.instance.SetActive(visible); return(panelInstance.uiPanel); }