void OnTrackingWindowHidden(WindowController window) { if (_windows.Contains(window)) { OnHide(window); } }
void OnHide(WindowController window) { if (_windows.Count < 1) { return; } var currentWindow = CurrentWindow; _windows.Pop(); var prevWindow = CurrentWindow; if (prevWindow) { _canvas.SetupLayers(prevWindow, Background, HasWindowsWithBackground, false); OnTopWindowChanged(prevWindow); _canvas.MoveToFirstPlane(window); if (prevWindow.IsSuspended) { prevWindow.WakeUp(); } return; } if (Background) { Background.Hide(!window.WithBackground); } }
void OnShow(WindowController window, bool force) { _canvas.CheckLayers(window, CurrentWindow); _windows.Push(window); _canvas.SetupLayers(window, Background, HasWindowsWithBackground, force); OnTopWindowChanged(window); }
void OpenWindow <T>(WindowController window, object component, Action <T> init) where T : MonoBehaviour { var type = typeof(T); if (!window) { Debug.LogErrorFormat("WindowManager.OpenWindow({0}): no WindowController.", type.Name); return; } if (component == null) { Debug.LogErrorFormat("WindowManager.OpenWindow({0}): no component.", type.Name); return; } _canvas.Attach(window); var tComponent = component as T; if (init != null) { init(tComponent); } else { window.Show(); } }
bool IsClosableByBackButton(WindowController window) { if (!window) { return(false); } return(window.HideByMisclick); }
public void MoveToFirstPlane(WindowController window) { if (!window) { Debug.LogError("UICanvas.MoveToFirstPlane: window is null."); return; } window.CachedTransform.SetAsLastSibling(); }
public void RemoveActiveWindow(WindowController controller) { if (!controller) { Debug.LogError("WindowManager.RemoveActiveWindow: Controller is null."); return; } _activeWindows.Remove(controller); }
public void Attach(WindowController window) { if (!window) { Debug.LogError("UICanvas.Attach: window is null."); return; } var trans = window.CachedTransform; RectTransformUtils.UpdateLocalPosition(trans, Vector2.zero); }
public void CheckLayers(WindowController newWindow, WindowController oldWindow) { if (!oldWindow) { return; } if (!newWindow) { Debug.LogError("UICanvas.CheckLayers: newWindow is null."); return; } var oldOrderMin = 0; if (oldWindow.OverrideCanvas) { oldOrderMin = oldWindow.OverrideCanvas.sortingOrder; } var oldOrderMax = oldWindow.MaxOrderInLayer; var newOrder = 0; if (newWindow.OverrideCanvas) { newOrder = newWindow.OverrideCanvas.sortingOrder; } if (newOrder < oldOrderMin) { Debug.LogWarningFormat( "UICanvas.CheckLayers: New window order = {0} < current min window order = {1} (new: {2}, old: {3})", newOrder, oldOrderMin, newWindow, oldWindow ); } if (newOrder < oldOrderMax) { Debug.LogWarningFormat( "UICanvas.CheckLayers: New window order = {0} < current max window order = {1} (new: {2}, old: {3})", newOrder, oldOrderMax, newWindow, oldWindow ); } }
public void SetupLayers(WindowController window, WindowBackground background, bool hasWindowsWithBackground, bool force) { if (!window) { Debug.LogError("UICanvas.SetupLayers: window is null"); return; } if (background) { if (window.WithBackground) { background.Show(force, window.BgColor); MoveToFirstPlane(background); SetupOrderInLayer(window, background); } else if (!hasWindowsWithBackground) { background.Resetup(); } } MoveToFirstPlane(window); }
void SetupOrderInLayer(WindowController window, WindowBackground background) { if (!window) { Debug.LogError("UICanvas.SetupOrderInLayer: window is null."); return; } var windowOrder = 0; if (window.OverrideCanvas) { windowOrder = window.OverrideCanvas.sortingOrder; } if (!background) { Debug.LogError("UICanvas.SetupOrderInLayer: background is null."); return; } if (background.OverrideCanvas) { background.OverrideCanvas.overrideSorting = windowOrder > 0; background.OverrideCanvas.sortingOrder = windowOrder - 1; } }
void OnTopWindowChanged(WindowController newWindow) { EventManager.Fire(new Event_WindowTopWindowChange(newWindow)); }