using AX.MessageSystem; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class ToolsPanelManager : MonoBehaviour { private Transform MovePanel; private UIMoveManager moveManager; private Toggle MyToggle; private WeatherSettingManager weatherSettingManager; private Toggle weatherToggle; private Button TeamNameBtn; private Toggle ShowNameToggle; private Button ClearAllBtn; private Button backScene; private float timmer; private void Start() { MovePanel = transform.Find("MovePanel"); moveManager = MovePanel.GetComponent<UIMoveManager>(); MovePanel.GetComponent<ToolsMovePanelManager>().Init(); MyToggle = transform.parent.Find("ToolsToggle").GetComponent<Toggle>(); MyToggle.onValueChanged.AddListener(MyToggleValueChanged); moveManager.SetMoving(); weatherSettingManager = GameObject.Find("Canvas").transform.Find("WeatherSettingPanel").GetComponent<WeatherSettingManager>(); weatherToggle = MovePanel.Find("SettingToggle").GetComponent<Toggle>(); weatherToggle.onValueChanged.AddListener(weatherToggleValueChanged); weatherSettingManager.Init(weatherToggle); TeamNameBtn = MovePanel.Find("TeamNameBtn").GetComponent<Button>(); TeamNameBtn.onClick.AddListener(TeamName); ShowNameToggle = MovePanel.Find("ShowNameToggle").GetComponent<Toggle>(); ShowNameToggle.onValueChanged.AddListener(ShowName); ClearAllBtn = MovePanel.Find("ClearAllBtn").GetComponent<Button>(); ClearAllBtn.onClick.AddListener(ClearAll); backScene = MovePanel.Find("ReturnBtn").GetComponent<Button>(); backScene.onClick.AddListener(BackTo); MessageDispatcher.AddListener("ReplayFrame", ReplayFrameWeatherSetting); MessageDispatcher.AddListener("ReplayEvent", ReplayEventWeatherSetting); MessageDispatcher.AddListener("FloorsOn", FloorsOnChanged); } private void FloorsOnChanged(IMessage obj) { if (MyToggle.isOn) MyToggle.isOn = false; } private void BackTo() { ResourceLoadWindow.Instance.LoadTipWindow("确定返回上级菜单吗?", BackToMenu, null); } private void BackToMenu() { EntitiesManager.Instance.Reset(); GlobalVariable.FloorsOn = true; GlobalVariable.ToolsOn = false; ReplaySetting.PlayStatus = PlayStatus.normal; SceneManager.LoadScene("StartScene"); } private void ClearAll() { if (ReplaySetting.PlayStatus == PlayStatus.isReplay) { ResourceLoadWindow.Instance.LoadTextHintWindow("当前正在回放,请结束后再操作!", 2f); return; } ResourceLoadWindow.Instance.LoadTipWindow("确定清空场景吗?", ClearAllObjects, null); } private void ClearAllObjects() { if (ReplaySetting.PlayStatus == PlayStatus.isEditor && RecordManager.Instance.recordStatus == RecordStatus.normal) { var eventData = new EventData(); eventData.time = RecordManager.Instance.RecordTimer; eventData.cloneObjType = CloneObjType.None; eventData.eventType = RecordEventType.ClearAll; RecordManager.Instance.jsonData.eventDataList.Add(eventData); } MessageDispatcher.SendMessage("ClearObject"); } private void ShowName(bool arg0) { GlobalVariable.InfoActive = arg0; MessageDispatcher.SendMessage("ShowHideInfo"); } private void TeamName() { TeamNameSetting.GetInstance.gameObject.SetActive(true); } private void OnDestroy() { GlobalVariable.FloorsOn = true; GlobalVariable.ToolsOn = false; MessageDispatcher.RemoveListener("ReplayFrame", ReplayFrameWeatherSetting); MessageDispatcher.RemoveListener("ReplayEvent", ReplayEventWeatherSetting); MessageDispatcher.RemoveListener("FloorsOn", FloorsOnChanged); } private void ReplayEventWeatherSetting(IMessage obj) { var eventData = (EventData)obj.Data; if (eventData.eventType == RecordEventType.WeatherSetting) { weatherSettingManager.TianQiSettingData = JsonUtility.FromJson<TianQiSetting>(eventData.json); //if (!MyToggle.isOn) //{ // MyToggle.isOn = true; //} //if (!weatherToggle.isOn) //{ // weatherToggle.isOn = true; //} weatherSettingManager.InitTianQi(); //StartCoroutine(HideTianQiPanel(1f)); } else if (eventData.eventType == RecordEventType.ToolsOn) { MyToggle.isOn = bool.Parse(eventData.json); } else if (eventData.eventType == RecordEventType.ClearAll) { ClearAllObjects(); } } private void ReplayFrameWeatherSetting(IMessage obj) { var objectData = (ObjectData)obj.Data; if (objectData.cloneObjType == CloneObjType.Weather) { weatherSettingManager.TianQiSettingData = JsonUtility.FromJson<TianQiSetting>(objectData.json); //if (!MyToggle.isOn) //{ // MyToggle.isOn = true; //} //if (!weatherToggle.isOn) //{ // weatherToggle.isOn = true; //} weatherSettingManager.InitTianQi(); //StartCoroutine(HideTianQiPanel(1f)); } else if (objectData.cloneObjType == CloneObjType.ToolsOn) { MyToggle.isOn = bool.Parse(objectData.json); } } private void MyToggleValueChanged(bool IsOn) { MyToggle.interactable = false; if (IsOn) { StartCoroutine(InMethord(moveManager.MoveTime + 0.01f)); GlobalVariable.ToolsOn = true; MessageDispatcher.SendMessage("ToolsOn"); } else { StartCoroutine(OutMethord(moveManager.MoveTime + 0.01f)); GlobalVariable.ToolsOn = false; } if (ReplaySetting.PlayStatus == PlayStatus.isEditor && RecordManager.Instance.recordStatus == RecordStatus.normal) { var eventData = new EventData(); eventData.time = RecordManager.Instance.RecordTimer; eventData.cloneObjType = CloneObjType.None; eventData.eventType = RecordEventType.ToolsOn; eventData.json = IsOn.ToString(); RecordManager.Instance.jsonData.eventDataList.Add(eventData); } } IEnumerator InMethord(float time) { moveManager.gameObject.SetActive(true); moveManager.MoveIn_Click(); yield return new WaitForSeconds(time); MyToggle.interactable = true; } IEnumerator OutMethord(float time) { moveManager.MoveOut_Click(); yield return new WaitForSeconds(time); MyToggle.interactable = true; moveManager.gameObject.SetActive(false); } IEnumerator HideTianQiPanel(float time) { yield return new WaitForSeconds(time); if (MyToggle.isOn) { MyToggle.isOn = false; } } private void weatherToggleValueChanged(bool IsOn) { weatherSettingManager.gameObject.SetActive(IsOn); } // Update is called once per frame void Update() { if (weatherSettingManager.HasNeightChange)//如果有昼夜交替 { weatherSettingManager.NeightTimeInput.interactable = false; weatherSettingManager.DateTimeSlider.value = weatherSettingManager.skyController.TIME_of_DAY / 24 * ReplayManager.playSpeed; } else { weatherSettingManager.NeightTimeInput.interactable = true; } } }