using Thousandto.Code.Center;
using Thousandto.Core.Asset;
using Thousandto.Core.Base;
using Thousandto.Plugins.Common;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
///
/// 预加载窗体节点
///
public class PreLoadFormRoot
{
#region//私有变量
private string _rootName = "[PreLoadForm]";
private string _uirootName = "UIRoot";
private GameObject _root = null;
private GameObject _uiRoot = null;
private List _waiteList = new List();
private Dictionary _dicPreShowForm = new Dictionary();
private List _waitResetForms = new List();
#endregion
#region//公共函数
public void Add(string name)
{
if (_root == null)
{
var go = new GameObject(_rootName);
_root = go;
_root.transform.parent = AppRoot.Transform;
_root.gameObject.SetActive(false);
}
if (!_dicPreShowForm.ContainsKey(name))
{
_dicPreShowForm.Add(name, null);
_waiteList.Add(name);
}
OpenForm();
}
public bool SetRealParent()
{
if (_uiRoot == null)
{
_uiRoot = GameObject.Find(_uirootName);
}
_waitResetForms.Clear();
if (_waiteList.Count != 0)
{
for (int i = _waiteList.Count - 1; i >= 0 ; i--)
{
if (_dicPreShowForm.ContainsKey(_waiteList[i]))
{
var form = _dicPreShowForm[_waiteList[i]];
if (form != null && form.transform.parent != _uiRoot.transform)
{
form.transform.parent = _uiRoot.transform;
UnityUtils.Reset(form.transform);
_dicPreShowForm.Remove(_waiteList[i]);
_waiteList.RemoveAt(i);
_waitResetForms.Add(form.name);
form.SendMessage("RefreshPanelDepth", SendMessageOptions.DontRequireReceiver);
}
}
}
//GameObject.Destroy(_root);
return true;
}
else
{
if (_root == null)
{
var trans = AppRoot.Transform.Find(_rootName);
if (trans)
{
_root = trans.gameObject;
}
else
{
return false;
}
}
for (int i = _root.transform.childCount-1; i >= 0; i--)
{
var child = _root.transform.GetChild(i);
if (child)
{
if (child.parent != _uiRoot.transform)
{
child.parent = _uiRoot.transform;
UnityUtils.Reset(child);
child.SendMessage("RefreshPanelDepth", SendMessageOptions.DontRequireReceiver);
}
}
}
return false;
}
}
public void SetForm(string name,GameObject form)
{
_dicPreShowForm[name] = form;
if (!string.Equals(name, "UIGuideForm"))
{
_dicPreShowForm[name].transform.parent = _root.transform;
}
}
public void RefreshNoticeAndCurveScreen()
{
for(int i = 0; i < _waitResetForms.Count; ++i)
{
GameCenter.PushFixEvent(Thousandto.Code.Global.LogicEventDefine.EID_EVENT_REFRESH_NOTCHANDCURVESCREEN, _waitResetForms[i]);
}
_waitResetForms.Clear();
}
public void Update()
{
for (int i = _waiteList.Count-1; i >= 0; i--)
{
if (_dicPreShowForm[_waiteList[i]] == null)
{
GameCenter.PushFixEvent(Thousandto.Code.Global.LogicEventDefine.EID_EVENT_SETPRELOADFORM, _waiteList[i]);
}
}
}
public List GetPreLoadFormNames()
{
return _waiteList;
}
#endregion
private void OpenForm()
{
GameCenter.PushFixEvent(Thousandto.Code.Global.LogicEventDefine.EID_EVENT_OPENPRELOADFORM, _waiteList);
}
}