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); }
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 }); } }