Example #1
0
    public bool HandleEscapeKey()
    {
        if (uiPopupList.Count > 0)
        {
            UiCtrlBase ui = uiPopupList[uiPopupList.Count - 1];

            if (ui != null && ui.isActiveAndEnabled)
            {
                string uiName  = ui.name;
                bool   handled = ui.HandleEscapeKey();

                if (handled)
                {
                    Debug.Log("EscapeKey has handled by PopupUi[" + uiName + "].");
                    return(handled);
                }
            }
        }

        if (_currUi != null)
        {
            _currUi.OnClickEscapeKey();
            return(false);
        }

        return(true);
    }
Example #2
0
    public void CloseUi(UiCtrlBase uiCtrlBase, UiResult result = null)
    {
        UiCtrl uiCtrl = (UiCtrl)uiCtrlBase as UiCtrl;

        if (uiCtrl == null)
        {
            return;
        }

        if (uiCtrl._uiState == UiState.WillDestroy)
        {
            return;
        }

        if (_currUi == uiCtrl)
        {
            _currUi = null;
        }

        UiCtrl popup_ui = GetUi(uiPopupList, uiCtrl.uiId);

        if (popup_ui != null)
        {
            uiPopupList.Remove(popup_ui);
        }

        uiCtrl._Deactivate();
        uiCtrl._OnWillDestroy();

        Delegate resultCbD = uiCtrl._resultCbD;

        if (uiCtrl._resultCbD != null)
        {
            if (result == null)
            {
                result      = uiCtrl.uiResult;
                result.btId = ButtonId.Cancel;
            }
            else
            {
                if (result.GetType() != uiCtrl.GetResultType())
                {
                    Debug.Assert(false, @"ResultType must be '" + uiCtrl.GetResultType() + @"' not '" + result.GetType() + @"'.");
                }
            }
            result.uiCtrl = uiCtrl;
        }

        if (uiCtrl._resultCbD != null)
        {
            if (result == null)
            {
                result      = uiCtrl.uiResult;
                result.btId = ButtonId.Cancel;
            }
            else
            {
                if (result.GetType() != uiCtrl.GetResultType())
                {
                    Debug.Assert(false, @"ResultType must be '" + uiCtrl.GetResultType() + @"' not '" + result.GetType() + @"'.");
                }
            }
            result.uiCtrl = uiCtrl;
        }

        if (resultCbD != null)
        {
            resultCbD.DynamicInvoke(new object[] { result });
        }
    }