using DevelopEngine; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using XFramework; //全局动态数据管理单例类 public class StudentStateManager :Singleton { //网络链接状态 private bool networkConnections; public event UnityAction NetworkConnectionChangeEvent; public bool NetworkConnections { set { networkConnections = value; if(!networkConnections) { SceneSystem.Instance.SetScene(new StudentLoginScene(LoadSceneType.unLogin)); } NetworkConnectionChangeEvent?.Invoke(networkConnections); } get { return networkConnections; } } //当前学习状态 训练/考核 private LearnState learnState; public LearnState LearnState { set { learnState = value; } get { return learnState; } } } /// /// 车载物体关系记录管理类 /// public class OnboardManager : Singleton { public XDictionary onboardDic; } //导调信息管理类 记录确定后不在变化的数据,梳理开始导调时的变化数据 记录导调状态 允许进入导调数据时出现 超出导调数据时销毁 public class AdjustingManager:Singleton { //是否导调中 bool adjusting; public bool Adjusting { set { adjusting = value; } get { return adjusting; } } NetAdjustingInitData initData = new NetAdjustingInitData();//记录导调初始化数据 //学员端获取导调数据 public NetAdjustingInitData GetInitData() { CardingCarData(); return initData; } /// /// 注入导航路径信息 首选路线+备选路线 /// /// public void InjectLinesDataSources(Dictionary> lines) { initData.linesDic = new XDictionary>(); foreach (var item in lines) { initData.linesDic.Add(item.Key, new List()); for (int i = 0; i < item.Value.Count; i++) { RectTransform lineTrans = item.Value[i].GetComponent(); LineTransData lineTransData; lineTransData.anchorPos = new VectorTwo(lineTrans.anchoredPosition); lineTransData.sizeX = lineTrans.sizeDelta.x*lineTrans.localScale.x;//获取实际像素值 lineTransData.angleZ = lineTrans.localEulerAngles.z; initData.linesDic[item.Key].Add(lineTransData); } } } /// /// 注入地图名称 /// public void InjectMapName(string mapName) { initData.mapName = mapName; } //注入初始化突发信息 public void InjectTuFaData(List tuFaDatas) { initData.tufaList = tuFaDatas; } //当删除或新增突发事件信息时 public void ChangeTuFaData(TuFaData tuFa,bool isAdd) { if (isAdd) { initData.tufaList.Add(tuFa); } else { int index = -1; for (int i = 0; i < initData.tufaList.Count; i++) { if (initData.tufaList[i].ID == tuFa.ID) index = i; } if (index != -1) { initData.tufaList.RemoveAt(index); } else { Debug.Log("导调信息记录类中,待移除的突发事件ID不存在"); } } } /// /// 梳理车辆信息 和当前角度位置 /// void CardingCarData() { List cars= GameObjectManager.Instance.GetCarList(); initData.carIconInitDatas = new List(); for (int i = 0; i < cars.Count; i++) { AdjustingCarIconData carIconData = new AdjustingCarIconData(); Vector2 anchoredpos = cars[i].iconBase_thisIcon.GetComponent().anchoredPosition; carIconData.anchorPos = new VectorTwo(anchoredpos); carIconData.angle = cars[i].iconBase_thisIcon.transform.localEulerAngles.z; carIconData.carName = cars[i].name; carIconData.groupingEnum = ((CarIconInstanceCtrl)cars[i].iconBase_thisIcon).GetGroup(); initData.carIconInitDatas.Add(carIconData); } } }