using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; using DG.Tweening; using Assets.Scripts.UI.Prefab.Login; using Newtonsoft.Json; using UnityEngine.UI; using Assets.Scripts.UI.Control; using Assets.Scripts; using Assets.Scripts.Apis.Models; using System.Linq; using Newtonsoft.Json.Linq; using System; public class UIManager : MonoBehaviour { [SerializeField] private PFUIPanel mMainPanel; public PFUIPanel MainPanel { get { return this.mMainPanel; } set { this.mMainPanel = value; } } public GameObject Root; private HomeController mHomePanel; public HomeController HomePanel { get { return this.GetPanelInstance("HomePanel", ref this.mHomePanel); } } private UserInfoController mUserInfoPanel; public UserInfoController UserInfoPanel { get { return this.GetPanelInstance("UserInfoPanel", ref this.mUserInfoPanel); } } private DeviceController mDeviceController; public DeviceController DevicePanel { get { return this.GetPanelInstance("DevicePanel", ref this.mDeviceController); } } private SettingContoller mSettingContoller; public SettingContoller SettingModal { get { return this.GetPanelInstance("SettingModal", ref this.mSettingContoller); } } private FeedbackController mfeedbackController; public FeedbackController FeedbackModal { get { return this.GetPanelInstance("FeedbackModal", ref this.mfeedbackController); } } private NewsController mNewsContoller; public NewsController NewsModal { get { return this.GetPanelInstance("NewsModal", ref this.mNewsContoller); } } private DownloadController mDownloadModal; public DownloadController DownloadModal { get { return this.GetPanelInstance("DownloadModal", ref this.mDownloadModal); } } private MapListController mMapListController; public MapListController MapListPanel { get { return this.GetPanelInstance("MapListPanel", ref this.mMapListController); } } private MapDetailController mMapDetailController; public MapDetailController MapDetailPanel { get { return this.GetPanelInstance("MapDetailPanel", ref this.mMapDetailController); } } private CyclingController mCyclingController; public CyclingController CyclingController { get { return this.GetPanelInstance("CyclingController", ref this.mCyclingController); } } private EditUserController mEditUserController; public EditUserController EditUserPanel { get { return this.GetPanelInstance("EditUserPanel", ref this.mEditUserController); } } private PFUIPanel mModalsPanel; public PFUIPanel ModalsPanel { get { return this.mModalsPanel; } set { this.mModalsPanel = value; } } public static UIManager Instance; private static Stack stack; public static void PushHome() { stack.Clear(); stack.Push(UIManager.Instance.HomePanel); } private void Awake() { UIManager.Instance = this; stack = new Stack(); loginRegOptions = new LoginRegOptions(); var userInfosJson = PlayerPrefs.GetString("UserInfos"); userInfos = JsonConvert.DeserializeObject>(userInfosJson); if (userInfos == null) userInfos = new List(); var settingsJson = PlayerPrefs.GetString("Settings"); settings = JsonConvert.DeserializeObject(settingsJson); if (settings == null) settings = new Settings(); userInfoIndex = PlayerPrefs.GetInt("UserInfoIndex"); collectDict = new Dictionary { { false,Resources.Load("Images/p-4灰")}, { true,Resources.Load("Images/p-4")}, }; var a = Resources.Load("UI/simpleCountry"); var clist = JsonConvert.DeserializeObject>(a.text); if(_now == null) { InitNow(); } } // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } private T GetPanelInstance(string prefabName, ref T internalComponent) { if (internalComponent == null) { UnityEngine.Object @object = Resources.Load("UI/Prefab/Panel/" + prefabName); if (@object != null) { GameObject gameObject = (GameObject)UnityEngine.Object.Instantiate(@object, base.transform.parent, false); if (gameObject != null) { internalComponent = gameObject.GetComponent(); } } } return internalComponent; } private T GetInstance(string prefabName, ref T internalComponent) { if (internalComponent == null) { UnityEngine.Object @object = Resources.Load("UI/Prefab/Common/" + prefabName); if (@object != null) { GameObject gameObject = (GameObject)UnityEngine.Object.Instantiate(@object, base.transform.parent, false); if (gameObject != null) { internalComponent = gameObject.GetComponent(); } } } return internalComponent; } private static PFUIPanel prePanel = null; private static PFUIPanel currentPanel = null; public static void Show(PFUIPanel panelToShow, PFUIPanel parent = null, bool modal = false) { if (UIManager.Instance == null || panelToShow == null) { return; } if (modal) { parent = UIManager.Instance.ModalsPanel; } else { var root = UIManager.Instance.Root; for (int i = 0; i < root.transform.childCount; i++) { var panel1 = root.transform.GetChild(i).GetComponent(); if (panel1 != null) { panel1.Close(); } } if (currentPanel != null) { currentPanel.Close(); } //prePanel = panelToShow; prePanel = currentPanel; currentPanel = panelToShow; stack.Push(panelToShow); } if (parent != null && parent.IsActive() == false) { parent.gameObject.SetActive(true); } //foreach (Transform child in parent.transform) //{ // //GameObject.Destroy(child); // //GameObject.Destroy(child.gameObject); // child.gameObject.SetActive(false); //} //var panel = UIManager.Instance.MainPanel; //UIManager.Instance.MainCanvasTransform.transform.Find("Panel"); //panel.gameObject.AddComponent(panelToShow.gameObject); //panelToShow.transform.SetParent(parent.transform); parent.AddChild(panelToShow); //panelToShow.gameObject.SetActive(true); panelToShow.Show(); //panelToShow.transform.position = new Vector3(0, 0, 0); panelToShow.transform.localPosition = new Vector3(0, 0, 0); //panelToShow.transform.localRotation = new Quaternion(0, 0, 0, 0); //if (modal == false) { panelToShow.transform.GetComponent().offsetMin = new Vector2(0, 0); panelToShow.transform.GetComponent().offsetMax = new Vector2(0, 0); } panelToShow.transform.localScale = parent.transform.localScale; } public static void ShowCustom(PFUIPanel panelToShow, GameObject parent = null, bool modal = false) { if (UIManager.Instance == null || panelToShow == null) { return; } if (modal) { parent = UIManager.Instance.ModalsPanel.gameObject; } else { if (prePanel != null) { prePanel.Close(); } prePanel = panelToShow; } foreach (Transform child in parent.transform) { //GameObject.Destroy(child); //GameObject.Destroy(child.gameObject); child.gameObject.SetActive(false); } //var panel = UIManager.Instance.MainPanel; //UIManager.Instance.MainCanvasTransform.transform.Find("Panel"); //panel.gameObject.AddComponent(panelToShow.gameObject); //panelToShow.transform.SetParent(parent.transform); panelToShow.transform.parent = parent.transform; //panelToShow.gameObject.SetActive(true); panelToShow.Show(); //panelToShow.transform.position = new Vector3(0, 0, 0); panelToShow.transform.localPosition = new Vector3(0, 0, 0); //panelToShow.transform.localRotation = new Quaternion(0, 0, 0, 0); //if (modal == false) { panelToShow.transform.GetComponent().offsetMin = new Vector2(0, 0); panelToShow.transform.GetComponent().offsetMax = new Vector2(0, 0); } panelToShow.transform.localScale = parent.transform.localScale; } //public static void ShowHomePanel() //{ // UIManager.Show(UIManager.Instance.PanelHome, UIManager.Instance.MainPanel); //} public static void ShowUserInfoPanel() { UIManager.Instance.UserInfoPanel.Reset(); UIManager.Show(UIManager.Instance.UserInfoPanel, UIManager.Instance.MainPanel); } public static void ShowHomePanel() { stack.Clear(); UIManager.Show(UIManager.Instance.HomePanel, UIManager.Instance.MainPanel); } public static void ShowDevicePanel() { UIManager.Show(UIManager.Instance.DevicePanel, null, true); } public static void ShowSettingModal() { UIManager.Show(UIManager.Instance.SettingModal, null, true); } public static void ShowNewsModal() { UIManager.Show(UIManager.Instance.NewsModal, null, true); } public static void ShowDownloadModal() { UIManager.Show(UIManager.Instance.DownloadModal, null, true); } public static void ShowFeedBackModal() { UIManager.Show(UIManager.Instance.FeedbackModal, null, true); } public static void ShowEditUserPanel() { UIManager.Show(UIManager.Instance.EditUserPanel, UIManager.Instance.MainPanel); } //LoadingPf loading; public static void ShowLoadingDialogBox() { if (UIManager.Instance == null) { return; } //if(UIManager.Instance.loading == null) //{ // UIManager.Instance.loading = UIManager.Instance.GetInstance("Loading", ref UIManager.Instance.loading); // UIManager.Instance.loading.GetComponent().position = new Vector3(Screen.width / 2, Screen.height / 2, 0); // //var rect = UIManager.Instance.loading.GetComponent().rect; // //rect.width = 154; // //rect.height = 111; // UIManager.Instance.loading.GetComponent().sizeDelta = new Vector2(154, 111); // //var rrr = UIManager.Instance.loading.GetComponent(); // UIManager.Instance.loading.Initial(); // UIManager.Show(UIManager.Instance.loading, null, true); //} //else //{ // UIManager.Instance.loading.Show(); //} Utils.showLoading(UIManager.Instance.ModalsPanel.gameObject); } public static void HideLoadingDialogBox() { if (UIManager.Instance == null) { return; } Utils.hideLoading(UIManager.Instance.ModalsPanel.gameObject); } public static void ShowMapListPanel() { Debug.Log("清空"); //App.propTextureCache["recordCache"].Clear(); UIManager.Instance.MapListPanel.ResetPanel(); UIManager.Show(UIManager.Instance.MapListPanel, UIManager.Instance.MainPanel); } public static void ShowMapDetailPanel(int id) { var ctrl = UIManager.Instance.MapDetailPanel; ctrl.id = id; UIManager.Show(UIManager.Instance.MapDetailPanel, UIManager.Instance.MainPanel); } public static void PopStack(int count = 1) { for (int i = 0; i < count && stack.Count>0; i++) { stack.Pop(); } } public static void ShowPrePanel() { stack.Pop(); var panel = stack.Pop(); if (panel == null) { if (App.pageName == "map") { ShowBigMapPanel(); } else if (App.pageName == "earth") { ShowEarthPanel(); } } else { UIManager.Show(panel, UIManager.Instance.MainPanel); } //if (prePanel.name.Contains("EditUserPanel")) //{ // UIManager.Show(UIManager.Instance.HomePanel, UIManager.Instance.MainPanel); //} //else //{ // UIManager.Show(prePanel, UIManager.Instance.MainPanel); //} } public static void ShowBigMapPanel(double lat = 0, double lon = 0) { UIManager.Instance.MainPanel.gameObject.SetActive(false); var obj = Resources.Load("UI/Prefab/Panel/BigMapPanel"); //var root = UIManager.Instance.MainPanel.transform.parent.parent; var bigMap = (GameObject)Instantiate(obj, UIManager.Instance.Root.transform); bigMap.GetComponent().Show(lat, lon); stack.Push(null); App.pageName = "map"; //prePanel = bigMap.GetComponent(); } static GameObject earthPanel = null; public static void ShowEarthPanel(double lat = 0, double lon = 0) { if (UIManager.Instance.MainPanel != null) { UIManager.Instance.MainPanel.gameObject.SetActive(false); } if (earthPanel == null) { var obj = Resources.Load("UI/Prefab/Panel/EarthPanel"); //var root = UIManager.Instance.MainPanel.transform.parent.parent; earthPanel = (GameObject)Instantiate(obj, UIManager.Instance.Root.transform); } stack.Push(null); App.pageName = "earth"; earthPanel.GetComponent().Show(lat, lon); } static Texture2D cursor; public static void RemoveEvent(GameObject gameObject) { EventTrigger et = gameObject.GetComponent(); if (et == null) return; et.triggers.RemoveAll(x => true); } public static void AddEvent(GameObject gameObject, EventTriggerType eventTriggerType, UnityAction call) { EventTrigger et = gameObject.GetComponent(); EventTrigger.Entry pointerEvent = null; if (et == null) { et = gameObject.AddComponent(); } foreach (EventTrigger.Entry entry2 in et.triggers) { if(entry2.eventID == eventTriggerType) { pointerEvent = entry2; break; } } if (pointerEvent == null) { pointerEvent = new EventTrigger.Entry(); pointerEvent.eventID = eventTriggerType; et.triggers.Add(pointerEvent); } //pointerEvent.callback.RemoveAllListeners(); pointerEvent.callback.AddListener((e)=> { if (gameObject == null || gameObject.activeInHierarchy == false) return; var btn = gameObject.GetComponent