private void OnCreate(IUIPanel panel) { if (this.onCreate != null) { onCreate(panel); } }
private void CreateUI_Internal(GameObject go, UIInfoBase uiNode, Bridge bridge, Transform parent, IUIPanel parentPanel) { if (go == null) { return; } var parentDic = GetParentDic(parent); Utility.SetTranform(go.transform, uiNode.type.layer, uiNode.type.layerIndex, Trans, parent, parentDic, transRefDic); go.name = uiNode.panelName; go.SetActive(true); IUIPanel panel = GetPanelFromPool(go); InitPanelInformation(panel, uiNode); panel.Binding(go); panel.HandleData(bridge); transRefDic.Add(go.transform.GetInstanceID(), panel); createdPanels.Add(panel); if (parentPanel != null) { parentPanel.RecordChild(panel); } if (bridge != null) { bridge.OnCreatePanel(panel); } HandBridgeOptions(panel, bridge); }
public IEnumerator CreateView(IUIPanel uiPanel) { string assetPath = uiPanel.GetPanelAssetPath(); Logger.d($"[DeftauleUISystem.Create] UI预制体加载 assetPath={assetPath}"); var loader = Addressables.InstantiateAsync(assetPath, _uiPanelRoot, false); yield return(loader); if (loader.Status == AsyncOperationStatus.Succeeded) { UIPanelData panelData = new UIPanelData(); _uiPanelDatas.Add(panelData); panelData.PanelGO = loader.Result; panelData.UIPanel = uiPanel; panelData.PanelGO.GetComponent <Canvas>().enabled = false; panelData.PanelGO.GetComponent <GraphicRaycaster>().enabled = false; uiPanel.OnInit(loader.Result); } else { Logger.e($"[DeftauleUISystem.Create] UI预制体加载失败 assetPath={assetPath}"); } }
void OpenMainUI(object obj) { m_curUIType = (LoginUIType)obj; CloseAllPanel(); IUIPanel uiPanel = null; if (UIList.TryGetValue(m_curUIType, out uiPanel)) { uiPanel.Show(); m_curUIPanel = uiPanel.gameObject; } else { uiPanel = GetPanel(m_curUIType); m_curUIPanel = uiPanel.gameObject; uiPanel.Show(); UIList.Add(m_curUIType, uiPanel); } if (m_curUIType == LoginUIType.CreatRole) { SetCamera(); } if (m_curUIType == LoginUIType.CreatRole || m_curUIType == LoginUIType.SelectRole) { //SoundManager.Instance.StopBGM(0.0f); //SoundManager.Instance.PlayBGM("Music_UIBG_LoginCharacter", 0.0f); } }
/// <summary> /// 建立遮罩 /// </summary> /// <param name="panel"></param> /// <param name="info"></param> protected void TryMakeCover(IUIPanel panel, BridgeInfo info) { if (info.showModel.cover) { panel.Cover(); } }
/// <summary> /// 处理面板打开规则 /// </summary> /// <param name="panel"></param> /// <param name="bridge"></param> protected void HandBridgeOptions(IUIPanel panel, Bridge bridge) { TryChangeParentState(panel, bridge.Info); TryHandleMutexPanels(panel, bridge.Info); TryHideGroup(panel, bridge.Info); TryAutoOpen(panel.Content, panel); }
public void Open(IUIPanel parentPanel, string panelName, object data = null) { mainThreadActions.Enqueue(new Action(() => { uiFacade.Open(parentPanel, panelName, data); })); }
internal Bridge Allocate(BridgeInfo info, IUIPanel parentPanel = null) { var bridge = innerPool.Allocate(); bridge.Reset(info, parentPanel); return(bridge); }
/// <summary> /// 获取可用的bridge /// </summary> /// <param name="parentPanel"></param> /// <param name="panelName"></param> /// <returns></returns> protected Bridge GetBridgeClamp(IUIPanel parentPanel, string panelName, int index) { Bridge bridge = null; var parentName = parentPanel == null ? "" : parentPanel.Name; var mayInfos = Bridges.FindAll(x => x.outNode == panelName && (x.index == index || index == -1)); //所有可能的 var baseInfos = mayInfos.FindAll(x => x.inNode == parentName); //所有父级名相同的 BridgeInfo?bridgeInfo = null; if (baseInfos.Count > 0) { bridgeInfo = baseInfos[0]; } else { var usefulInfos = mayInfos.FindAll(x => string.IsNullOrEmpty(x.inNode)); if (usefulInfos.Count > 0) { bridgeInfo = usefulInfos[0]; } } if (bridgeInfo == null) { var show = new ShowMode(); var info = new BridgeInfo(parentName, panelName, show, null, 0); bridge = bridgePool.Allocate(info, parentPanel); } else { bridge = bridgePool.Allocate((BridgeInfo)bridgeInfo, parentPanel); } return(bridge); }
protected void OnRemoveChild(IUIPanel childPanel, bool remove) { if (childPanels != null && childPanels.Contains(childPanel) && remove) { childPanels.Remove(childPanel); } }
void OpenMainUI(object obj) { PlatformLoginBehaviour.message += " For91 OpenUI:"; var loginUIType = (LoginUIType)obj; CloseAllPanel(); IUIPanel uiPanel = null; if (UIList.TryGetValue(loginUIType, out uiPanel)) { uiPanel.Show(); } else { uiPanel = GetPanel(loginUIType); uiPanel.Show(); UIList.Add(loginUIType, uiPanel); } if (loginUIType == LoginUIType.CreatRole) { SetCamera(); } if (loginUIType == LoginUIType.CreatRole || loginUIType == LoginUIType.SelectRole) { //SoundManager.Instance.StopBGM(0.0f); //SoundManager.Instance.PlayBGM("Music_UIBG_LoginCharacter", 0.0f); } }
private void OnCallBack(IUIPanel panel, object target) { if (this.onCallBack != null) { onCallBack(panel, target); } }
private void OnClose(IUIPanel panel) { if (this.onClose != null) { this.onClose.Invoke(panel); } }
/// <summary> /// 互斥面板自动隐藏 /// </summary> /// <param name="childPanel"></param> /// <param name=""></param> /// <param name="bridge"></param> protected void TryHideMutexPanels(IUIPanel childPanel, BridgeInfo bridge) { if (bridge.showModel.mutex != MutexRule.NoMutex) { if (bridge.showModel.mutex == MutexRule.SameParentAndLayer) { var mayBridges = Bridges.FindAll(x => x.inNode == bridge.inNode); foreach (var bg in mayBridges) { var mayPanels = createdPanels.FindAll(x => x.Name == bg.outNode && x.UType.layer == childPanel.UType.layer && x != childPanel && !IsChildOfPanel(childPanel, x)); foreach (var mayPanel in mayPanels) { if (mayPanel != null && mayPanel.IsShowing) { HidePanelInteral(childPanel, mayPanel); } } } } else if (bridge.showModel.mutex == MutexRule.SameLayer) { var mayPanels = createdPanels.FindAll(x => x.UType.layer == childPanel.UType.layer && x != childPanel && !IsChildOfPanel(childPanel, x)); foreach (var mayPanel in mayPanels) { if (mayPanel != null && mayPanel.IsShowing) { HidePanelInteral(childPanel, mayPanel); } } } } }
/// <summary> /// 找到信息源和bridge /// </summary> /// <param name="parentPanel"></param> /// <param name="panelName"></param> /// <param name="bridgeObj"></param> /// <param name="uiNode"></param> /// <returns></returns> protected bool TryMatchPanel(IUIPanel parentPanel, string panelName, int index, out Bridge bridgeObj, out UIInfoBase uiNode) { uiNode = Nodes.Find(x => x.panelName == panelName); if (uiNode != null) { if (uiNode.type.form == UIFormType.Fixed) { var oldPanel = createdPanels.Find(x => x.Name == panelName && x.Parent == parentPanel); if (oldPanel != null) { bridgeObj = bridgeDic[oldPanel]; if (!oldPanel.IsShowing) { oldPanel.UnHide(); HandBridgeOptions(oldPanel, bridgeObj); } return(false); } } } if (uiNode == null) { bridgeObj = null; return(false); } bridgeObj = GetBridgeClamp(parentPanel, panelName, index); return(uiNode != null && bridgeObj != null); }
public Bridge InstencePanel(IUIPanel parentPanel, string panelName, int index, Transform root) { Bridge bridge = null; UIInfoBase uiNode = null; if (TryMatchPanel(parentPanel, panelName, index, out bridge, out uiNode)) { uiNode.OnCreate = (go) => { Utility.SetTranform(go.transform, uiNode.type.layer, uiNode.type.layerIndex, root == null ? Trans : root); go.SetActive(true); var panel = go.GetComponent <IUIPanel>(); if (panel != null) { createdPanels.Add(panel); if (parentPanel != null) { parentPanel.RecordChild(panel); } bridgeDic.Add(panel, bridge); InitPanel(panel, bridge, uiNode); HandBridgeOptions(panel, bridge); } }; creater.CreatePanel(uiNode); } return(bridge); }
/// <summary> /// 找到信息源和bridge /// </summary> /// <param name="parentPanel"></param> /// <param name="panelName"></param> /// <param name="bridgeObj"></param> /// <param name="uiNode"></param> /// <returns></returns> protected bool NeedCreatePanel(IUIPanel parentPanel, string panelName, int index, out Bridge bridgeObj, out UIInfoBase uiNode) { Nodes.TryGetValue(panelName, out uiNode); if (uiNode != null) { if (uiNode.type.form == UIFormType.Fixed) { var oldPanel = createdPanels.Find(x => x.Name == panelName && x.Parent == parentPanel); if (oldPanel != null) { bridgeObj = createdBridges.Find(x => x.InPanel == parentPanel && x.OutPanel == oldPanel); if (!oldPanel.IsShowing) { oldPanel.UnHide(); HandBridgeOptions(oldPanel, bridgeObj); } return(false); } } } if (uiNode == null) { bridgeObj = null; return(false); } bridgeObj = GetBridgeClamp(parentPanel, panelName, index); createdBridges.Add(bridgeObj); return(uiNode != null && bridgeObj != null); }
private void Open_Internal(UIHandle handle, IUIPanel parent, string panelName, int index, object data = null) { var currentGroup = parent == null ? null : parent.Group; var openOK = false; if (currentGroup != null)//限制性打开 { openOK = InternalOpen(parent, currentGroup, handle, panelName, index); } else { var groupList = Utility.GetActivePanelGroups(); foreach (var group in groupList) { openOK |= InternalOpen(parent, group, handle, panelName, index); } } if (openOK) { if (data != null) { handle.Send(data); } } else { #if UNITY_EDITOR Debug.Log("未打开成功,请检查配制信息"); #endif } handle.Dispose(); }
public IUIHandle Open(IUIPanel parent, string panelName, int index, object data = null) { var handle = handlePool.Allocate(panelName); var currentGroup = parent == null ? null : parent.Group; if (currentGroup != null)//限制性打开 { InternalOpen(parent, currentGroup, handle, panelName, index); } else { foreach (var group in groupList) { InternalOpen(parent, group, handle, panelName, index); } } if (data != null) { handle.Send(data); } return(handle); }
public void CallBack(IUIPanel panel, object data) { if (onCallBack != null) { onCallBack.Invoke(panel, data); } }
internal void OnCreatePanel(IUIPanel panel) { OutPanel = panel; if (onCreate != null) { onCreate.Invoke(panel); } }
public void Initialize(IUIPanel view) { this.view = view; m_close.onClick.AddListener(this.view.Close); m_body.onClick.AddListener(OpenPopPanel); Debug.Log("Initialize" + this); }
/// <summary> /// 处理面板打开规则 /// </summary> /// <param name="panel"></param> /// <param name="bridge"></param> protected void HandBridgeOptions(IUIPanel panel, Bridge bridge) { Debug.Assert(bridge != null, "信息不应当为空,请检查!"); TryChangeParentState(panel, bridge.Info); TryHandleMutexPanels(panel, bridge.Info); TryHideGroup(panel, bridge.Info); TryAutoOpen(panel); }
public void Push(IUIPanel view) { if (view != null) { mUIStack.Push(view.PanelInfo); view.Close(); mAllUI.Remove(view.Transform.name); } }
public void OpenRegistedPanel(IUIPanel panel, int key, object data = null) { var bindingItem = FindBindingItem(panel.Name, key); if (bindingItem != null && bindingItem.openAction != null) { bindingItem.openAction.Invoke(panel, data); } }
/// <summary> /// 隐藏UI /// </summary> /// <param name="uiBehaviourName"></param> public void HideUI(string uiBehaviourName) { IUIPanel iuiPanel = null; if (mAllUI.TryGetValue(uiBehaviourName, out iuiPanel)) { iuiPanel.Hide(); } }
public void Initialize(IUIPanel diffusePanel) { if (!Initialized) { this.view = diffusePanel; Initialized = true; OnInitialize(); } }
public void Recover() { if (Initialized) { Initialized = false; OnRecover(); view = null; } }
public void CloseRegistedPanel(IUIPanel panel, int key) { var bindingItem = FindBindingItem(panel.Name, key); if (bindingItem != null && bindingItem.closeAction != null) { bindingItem.closeAction.Invoke(); } }
private void OnBridgeCallBack(IUIPanel panel, object data) { var array = onCallBack.ToArray(); foreach (var item in array) { item.Invoke(panel, data); } }