using UnityEngine;
using System.IO;
using System;
using System.Xml.Serialization;
using AX.MessageSystem;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
namespace AX.TrackRecord
{
struct sss_
{
EventRecordItem_two h;// = new EventRecordItem_two();
}
///
/// 轨迹记录加载类
///
///
public class LoadManager : MonoBehaviour
{
public static LoadManager Instance;
[HideInInspector]
public Record_One_root record_Load = new Record_One_root();
[HideInInspector]
public bool IsPlayBacking = false;
[HideInInspector]
public int EventIndex = 0;
//public static RecordManager Instance = new RecordManager();
[HideInInspector]
public string filename = "filename2.xml";
public GameObject TheShowUI;
//[HideInInspector]
//public bool RecorControl = true;
[HideInInspector]
public float LoadTimer = 0; //时间累加
[HideInInspector]
public GameObject TheTime;
[HideInInspector]
public GameObject reload;
[HideInInspector]
public bool isChanged = false;
private GameObject oneClickCanle;
//[HideInInspector]
//public bool has = false;
[HideInInspector]
public bool IsPause = false;
private bool StartTimerFlag = false;
[HideInInspector]
public int LoadSpeed = 1;//快进速度
[HideInInspector]
public string FileName;
public bool RecordBtn = true;//点击按钮时候控制进度
private Transform RecordFather;//时间轴预设父物体
//private GameObject ADDTagBtn;//添加标签按钮
[HideInInspector]
public int index;
[HideInInspector]
public bool IsMakeScore = false;//打分时,播放结束,不隐藏时间轴,等待手动点击保存评分时关闭时间轴等
public event EventHandler PlayBackOverEvent;//回放完毕事件
public BuildType buildType = BuildType.TypeA;
public Dictionary> eventListDic = new Dictionary>();
public string Format = "F1";
public int speedFactor = 1;
void Awake()
{
if (Instance == null)
{
Instance = this;
}
RecordFather = GameObject.Find("Canvas").transform.Find("时间轴/father");
PlayBackOverEvent += PlayBackOverFunc;
MessageDispatcher.AddListener("ProcessSkipEvent", ProcessSkipEvent);
}
void Start()
{
}
void OnDestroy()
{
PlayBackOverEvent -= PlayBackOverFunc;
MessageDispatcher.RemoveListener("ProcessSkipEvent", ProcessSkipEvent);
AgentRecord.speedFactor = 1;
}
void FixedUpdate()
{
//开始按时间顺序回放记录
if (RecordBtn)
{
if (IsPlayBacking && !IsPause && StartTimerFlag)
{
LoadTimer += Time.deltaTime * LoadSpeed;
if (LoadTimer <= record_Load.SumTime)
{
eventListDic.ExecuteEventFromDict(LoadTimer, false);
}
else////////回放结束
{
PlayBackOver();
}
}
}
}
private void PlayBackOver()
{
LoadSpeed = 1;
AgentRecord.speedFactor = 1;
PlayBackOverEvent(this, new PlayBackEventArgs(IsMakeScore));
MessageDispatcher.SendMessage("ShowToolbar", (object)this.name);
MessageDispatcher.SendMessage("CLOSE", (object)"杂物清理界面", "CUBE");
MessageDispatcher.SendMessage("CLOSE", (object)"自动评判", "CUBE");
MessageDispatcher.SendMessage("CLOSE", (object)"PoChaiUI", "CUBE");
MessageDispatcher.SendMessage("CLOSE", (object)"AddScoreTag", "CUBE");
}
private void ProcessSkipEvent(IMessage msg)
{
var time = (SkipEventAttri)msg.Data;
RecordBtn = false;
//if (time.to < time.from)//往回执行
//{
// LoadObjSetToOriginalTrans(record_Load);//重新加载物体
// eventListDic.ExecuteEvents(0, time.to);
//}
//else//继续往后执行
//{
// eventListDic.ExecuteEvents(time.from, time.to);
//}
LoadTimer = time.to + DictProcessHelpClass.threshold;
Time.timeScale = 1;
//StartCoroutine(SetLoadTimer(time.to));
//RecordBtn = true;
//if (Mathf.Approximately(time.to, record_Load.SumTime))
//{
// IsPause = false;
//}
}
IEnumerator SetLoadTimer(float timer)
{
yield return new WaitForSeconds((Frames + 1f) * Time.deltaTime);
LoadTimer = timer;
}
public void ExePlayBackOverEvent(bool IsMakeScore)
{
PlayBackOverFunc(this, new PlayBackEventArgs(IsMakeScore));
GameObject.Find("Canvas").transform.Find("时间轴").gameObject.SetActive(false);
}
public void ChangeIntro(EventRecordItem_two eventI, string intro)//修改简介方法
{
foreach (var item in record_Load.EventList)
{
if (item.Equals(eventI))
{
item.objAttriList[0].TaskName = intro;
break;
}
}
var key = DictProcessHelpClass.GetKeyFromTimer(eventI.timer);
if (eventListDic.ContainsKey(key))//key确定的查找
{
foreach (var item in eventListDic[key])
{
if (item.Equals(eventI))
{
item.objAttriList[0].TaskName = intro;
break;
}
}
}
}
public void ChangeBiaoQian(EventRecordItem_two eventI)//修改标签方法
{
foreach (var item in record_Load.EventList)
{
if (item.Equals(eventI))
{
item.objAttriList[0].TaskName = eventI.objAttriList[0].TaskName;
item.objAttriList[0].ObjName = eventI.objAttriList[0].ObjName;
item.objAttriList[0].VideoFile = eventI.objAttriList[0].VideoFile;
item.objAttriList[0].PictureFile = eventI.objAttriList[0].PictureFile;
item.objAttriList[0].modeadd = eventI.objAttriList[0].modeadd;
break;
}
}
var key = DictProcessHelpClass.GetKeyFromTimer(eventI.timer);
if (eventListDic.ContainsKey(key))//key确定的查找
{
foreach (var item in eventListDic[key])
{
if (item.Equals(eventI))
{
item.objAttriList[0].TaskName = eventI.objAttriList[0].TaskName;
item.objAttriList[0].ObjName = eventI.objAttriList[0].ObjName;
item.objAttriList[0].VideoFile = eventI.objAttriList[0].VideoFile;
item.objAttriList[0].PictureFile = eventI.objAttriList[0].PictureFile;
item.objAttriList[0].modeadd = eventI.objAttriList[0].modeadd;
break;
}
}
}
}
int AlterID;
float deltaTime_Lat = -0.2f;
private void PlayBackOverFunc(object sender, EventArgs e)
{
if (!((PlayBackEventArgs)e).IsMakeScore)
{
IsPlayBacking = false;
if (isChanged)
{
TrackRecordHelpClass.SerializeRecordToXML(ExamInfoHelpClass.CurrentWorkPath+NodeSet.Instance.RecordFileName, record_Load);
isChanged = false;
}
}
else//打分模式下
{
//重置状态,EventIndex=0,时间轴复位到原点,等待再次点击播放,以便添加记录
//ToDo...
LoadTimer = 0;
IsPlayBacking = true;
EventIndex = 0;
IsPause = true;//置于暂停状态,等待播放
//MakeSorceSet.instance.MakeSorceSetTime();//右下时间清零
TheBackView.instance.EndBtn.SetActive(false);
//TrackRecordHelpClass.LoadObjSetToOriginalTrans(record_Load);
}
}
///
/// 获取Record_Load
///
///
public void GetRecord_Load(string filename)
{
FileName = filename;
if (RecordManager.Instance.IsRecording)
{
Debug.Log("Please Stop the record first!");
return;
}
record_Load = null;
//string filename_ = "recordList/" + ((int)ExamInfoHelpClass.selectSceneID).ToString() + "/" + filename;
record_Load = TrackRecordHelpClass.LoadRecord_DeserializeXMLToRecord(filename);
}
public void StartPlayBack(string filename)
{
//未停止记录前不能开始回放
FileName = filename;
if (RecordManager.Instance.IsRecording)
{
Debug.Log("Please Stop the record first!");
return;
}
record_Load = null;
//string filename_ = "recordList/" + ((int)ExamInfoHelpClass.selectSceneID).ToString() + "/" + filename;
record_Load = TrackRecordHelpClass.LoadRecord_DeserializeXMLToRecord(filename);
if (record_Load != null)
{
MessageDispatcher.SendMessage("CloseToolbar", (object)this.name);
MessageDispatcher.SendMessage("ResettingButton", (object)this.name);
MessageDispatcher.SendMessage("RESET_OILTANKDISASTER_ATRRI", (object)"All");//重置罐体属性
MessageDispatcher.SendMessage("ResetTheScene");
MessageDispatcher.SendMessage("ShuiPaoMessage");
//GameObject.Find("Main Camera").GetComponent().enabled = false;
//GameObject.Find("Main Camera").GetComponent().Reset();
//Debug.Log(record_Load.EventList[0].eventType + "to" + record_Load.EventList[0].Navto);
//BackView.gameObject.SetActive(true);
AgentRecord.speedFactor = 1;
LoadTimer = 0;
IsPlayBacking = true;
EventIndex = 0;
IsPause = false;
StartTimerFlag = false;//在加载完初始物体前禁用计时标志,加载完成后再开始计时,避免错过。
TheBackView.instance.BoFang();
LoadObjSetToOriginalTrans(record_Load);
//TrackRecordHelpClass.LoadObjSetToOriginalTrans(record_Load);
eventListDic.GetDicFromEventList(record_Load.EventList);//首先获取字典
TheBackView.instance.CheckCount();//遍历字典生成标签
}
}
private IEnumerator ILoadObjSetToOriginalTrans(Record_One_root record_Load)
{
yield return null;
TrackRecordHelpClass.LoadObjSetToOriginalTrans(record_Load);
//加载完初始物体开始计时顺次执行事件
StartTimerFlag = true;
}
public void LoadObjSetToOriginalTrans(Record_One_root record_Load)
{
MessageDispatcher.SendMessage("DestroyObj", (object)"All");
StartCoroutine(ILoadObjSetToOriginalTrans(record_Load));
}
public void LoadObjSetToOriginalTransTag()
{
var eventItems = eventListDic[eventListDic.Keys.Last()];
var eventItem = eventItems[0];
foreach (EventRecordItem_two item in eventItems)
{
if (item.eventType == eventTypeRecord.None)
{
eventItem = item;
break;
}
}
StartCoroutine(LoadObjSetToOriginalTransTag(eventItem/*record_Load.EventList[record_Load.EventList.Count - 1]*/));
}
private IEnumerator LoadObjSetToOriginalTransTag(EventRecordItem_two eventAttri)
{
MessageDispatcher.SendMessage("DestroyObj", (object)"All");
MessageDispatcher.SendMessage("RESET_OILTANKDISASTER_ATRRI", (object)"All");//重置所有
MessageDispatcher.SendMessage("ShuiPaoMessage");
InputManager.Instance_.characters.Clear();
yield return null;
TrackRecordHelpClass.LoadObjSetToOriginalTransTag(eventAttri);
}
public void SubmitScore(string filename)
{
//评分结束,停止回放,保存为Xml文件
TrackRecordHelpClass.SerializeRecordToXML(filename, record_Load);
}
public void AddLoadTagEvent(string name_, string intro_,string show, GameObject game, float Time, ModelADD modle, string VideoPath, string PicturePath)
{
EventRecordItem_two EventAttribute = new EventRecordItem_two();
EventAttribute.eventType = eventTypeRecord.AddLoadTag;
RecordManager.Instance.RecordBasicEventAttri(ref EventAttribute);
ObjAttribute objAttri = new ObjAttribute();
objAttri.ObjName = name_;//记录Tag名称
objAttri.TaskName = intro_;//记录Tag简介
objAttri.TopName = show;
objAttri.modeadd = modle;//判断是什么模式 图片或者视频
objAttri.VideoFile = VideoPath;
objAttri.PictureFile = PicturePath;
if (Time > 0 && ExamInfoHelpClass.applicationMode == ExamInfoHelpClass.ApplicationMode.PATHFINDING)
{
EventAttribute.timer = Time + 0.5f;
if (game.name.Equals("zidong_ZJ"))
{
EventAttribute.eventType = eventTypeRecord.ZongJiePingPanTag; //总结自动评判
}
else
{
EventAttribute.eventType = eventTypeRecord.AddGpcAUTOTag;//高喷车自动评判
}
EventAttribute.PingPan = true;
}
CameraAttribute camAttribute = MouseFollowRotation.Instance.CameraAttri;
EventAttribute.orthographic = Camera.main.orthographic;//使用pingpan字段来记录相机顶视图Flag
EventAttribute.size = Camera.main.orthographicSize;//使用size字段来记录相机顶视图orthographicSize
EventAttribute.camAttributeList.Add(camAttribute);
EventAttribute.objAttriList.Add(objAttri);
TrackRecordHelpClass.RecordAboutTag(ref EventAttribute);
AddToLoadEventList(EventAttribute, game);
game.GetComponent().EventItem = EventAttribute;////////////////
EventIndex++;//待测试是否有必要
IsPause = false;//添加标签完毕,继续开始计时
}
private void AddToLoadEventList(EventRecordItem_two eventItem, GameObject Game)
{
//index = 0;
//int id = 0;
//float min = 100000;
//for (int i = record_Load.EventList.Count - 1; i >= 0; i--)
//{
// float delta = record_Load.EventList[i].timer - eventItem.timer;
// float deltaAbs = Mathf.Abs(delta);
// if (deltaAbs < min)
// {
// if (delta > 0)
// {
// id = i;
// }
// else
// {
// id = i + 1;
// }
// min = deltaAbs;
// index = i;
// }
//}
//foreach (Transform child in RecordFather)
//{
// int Id = child.GetComponent().ID;
// if (Id >= id)
// {
// child.GetComponent().ID = Id + 1;
// }
//}
//Game.GetComponent().ID = id;
//Game.GetComponent().Timer = LoadTimer;
record_Load.EventList.Add(eventItem);
eventListDic.AddEventToDict(eventItem);
eventListDic.DictSort();
}
private int Frames = 0;
private int Frames_Count = 0;
GameObject Car;
public void SetFrames(float multiple)//multiple代表需要快进的倍数
{
Frames = 0;
Frames_Count = 0;
TheBackView.instance.ExeSpeedChangeEvent((int)multiple + 1);//倍速播放
}
public void ExecuteEventFromDict(float key, bool flag)
{
Frames++;
Frames_Count++;
Debug.Log("Frames++" + Frames+ " LoadTimer:" + LoadTimer);
StartCoroutine(ExecuteEventFromDict_Coroutine(key, flag));
}
private IEnumerator ExecuteEventFromDict_Coroutine(float key, bool flag)
{
yield return null;
eventListDic.ExecuteEventFromDict(key, true);
Frames_Count--;
Debug.Log("Frames_Count++" + Frames_Count + " LoadTimer:" + LoadTimer);
if (Frames_Count == 0)//
{
AgentRecord.speedFactor = 1;
Debug.Log("execute events over!Sum of events:"+ Frames);
//TheBackView.instance.ExeSpeedChangeEvent(LoadSpeed);//恢复播放速度
}
}
///
/// 回放一件事
///
public void ExcuteEventFromRecord(EventRecordItem_two eventItem, bool IsShowTiShi)
{
//TheBackView.instance.BackApect(EventIndex);(停用)
switch (eventItem.eventType)
{
case eventTypeRecord.None:
if (eventItem.camAttributeList.Count != 0)
{
MouseFollowRotation.Instance.CameraAttri = eventItem.camAttributeList[0];
}
break;
case eventTypeRecord.Instantiate:
string pName = TrackRecordHelpClass.GetParentName(eventItem.objAttriList[0].ObjName);
MessageDispatcher.SendMessage(pName, "LoadInstantiateEvent", eventItem.objAttriList[0]);//触发实例化事件,发送一个EventRecordItem_two类型数据,会不会很耗费资源,有待测试改进
//GetTheJieDian.lock_ = false;
break;
case eventTypeRecord.TaskChange:
MessageDispatcher.SendMessage("LoadTaskChangeEvent", eventItem);
//TheBackView.instance.BackApect(eventItem);
break;
case eventTypeRecord.TopNameChange:
MessageDispatcher.SendMessage("LoadTopNameChangeEvent", eventItem);
//TheBackView.instance.BackApect(eventItem);
break;
case eventTypeRecord.PathFinding:
MessageDispatcher.SendMessage("LoadPathFindingEvent", eventItem);
break;
case eventTypeRecord.TriggerEvent:
var triggerType = eventItem.CreatName;
switch (triggerType)
{
case "UpAndDownAttack":
//Debug.Log("bbbbbbbb:" + eventItem.TheFloor);//TheFoor为-1时,表示记录开始时透明主体已经被显示出来了
//if (eventItem.TheFloor == -1)
//{
// GameObject.Find("SceneAll").transform.Find("toumingzhuti").gameObject.SetActive(true);
//}
StartCoroutine(delayActive());
break;
case "MoveUpFloor":
int cengID = eventItem.TheFloor;
MessageDispatcher.SendMessage("MoveUpFloor", (object)cengID);
break;
case "MoveDownFloor":
MessageDispatcher.SendMessage("MoveDownFloor", (object)"");
break;
case "NameControl":
PrePareModeSet.instance.TheShowText.text = eventItem.PingPan ? "显示名称" : "隐藏名称";
PrePareModeSet.instance.TheHideNameWay(eventItem.PingPan);
break;
case "DoubleClick":
SubwayControl.Instance.SetTop(eventItem.PingPan);//
break;
case "ShowHideSmoke":
SubwayControl.Instance.SetSmoke(eventItem.PingPan);//ShowHideSmoke
break;
default:
break;
}
break;
case eventTypeRecord.MaskChange:
MessageDispatcher.SendMessage("LOADMASKCHANGEEVENT", eventItem.objAttriList[0]);
break;
case eventTypeRecord.ChangeTextMesh:
MessageDispatcher.SendMessage("LoadTextMesh", eventItem.objAttriList[0]);
break;
case eventTypeRecord.RescueWounded:
YingjiuRenYuan.Instance.PlayVideo(eventItem.CreatName);//营救伤员:CreatName,伤员名
break;
case eventTypeRecord.EditGCSEvent:
MessageDispatcher.SendMessage("LoadEditGCSEvent", eventItem.objAttriList[0]);
break;
case eventTypeRecord.Delete://使用TaskName字段记录的父物体名
//MessageDispatcher.SendMessage(eventItem.objAttriList[0].TaskName, "DestroyObj", (object)eventItem.objAttriList[0].ObjName);
//该处直接删除物体,不调用DestroyObj事件,避免与其他情况冲突而不执行删除
var parent = GameObject.Find(eventItem.objAttriList[0].TaskName).transform;
foreach (Transform child in parent)
{
if (child.name == eventItem.objAttriList[0].ObjName)
{
if (child.name.Contains("rline") && LoadManager.Instance.IsPlayBacking)
{
Car=null;
if (child.GetComponent().GuanXianList.Count > 1)
{
if (child.GetComponent().End.name.Contains("pmc"))
{
Car = child.GetComponent().End;
}
else if (child.GetComponent().End.name.Contains("sgc"))
{
Car = child.GetComponent().End;
}
else if (child.GetComponent().Begin.name.Contains("pmc"))
{
Car = child.GetComponent().Begin;
}
else if (child.GetComponent().Begin.name.Contains("sgc"))
{
Car = child.GetComponent().Begin;
}
MessageDispatcher.SendMessage(child.name, "CheckConnectCar", Car);
}
child.GetComponent().DeletGuanXian();
}
if (child.name.Contains("xiaofangche") && LoadManager.Instance.IsPlayBacking)
{
MessageDispatcher.SendMessage("DeleteShuiYuan", child.gameObject);
}
if (InputManager.Instance_.characters.Contains(child.gameObject))
{
InputManager.Instance_.characters.Remove(child.gameObject);
}
if (InputManager.Instance_.GetSelectedCharacters().Contains(child.gameObject))
{
InputManager.Instance_.GetSelectedCharacters().Remove(child.gameObject);
}
//if(child.name.Contains("shangyuan") && child.GetComponent())//回放营救伤员视频
//{
// child.GetComponent().PlayVideo();
//}
Destroy(child.gameObject);
break;
}
}
break;
case eventTypeRecord.ActiveWater:
MessageDispatcher.SendMessage(eventItem.objAttriList[0].ObjName, "LoadActiveWaterEvent", eventItem.objAttriList[0]);
break;
case eventTypeRecord.StopWater:
MessageDispatcher.SendMessage("LoadStopWaterEvent", (object)eventItem.objAttriList[0].ObjName);
break;
case eventTypeRecord.ChangeJiJieQu:
MessageDispatcher.SendMessage("LoadJiJieSET", (object)eventItem.objAttriList[0]);
break;
case eventTypeRecord.ChangeLineSize:
MessageDispatcher.SendMessage("LoadChangeLineSize", (object)eventItem.objAttriList[0]);
break;
case eventTypeRecord.ChangeSmogAlpha:
MessageDispatcher.SendMessage("LoadSmogAlpha", (object)eventItem.objAttriList[0]);
break;
//case eventTypeRecord.GetOffCar:
// MessageDispatcher.SendMessage("LOADGETOFFCAR", (object)eventItem.objAttriList[0]);
// break;
case eventTypeRecord.ControlJuBi:
MessageDispatcher.SendMessage("LoadControlJuBiEvent", eventItem.objAttriList[0]);
//TheBackView.instance.BackApect(EventIndex);
break;
case eventTypeRecord.EditFire:
MessageDispatcher.SendMessage("LoadEditFireEvent", eventItem.objAttriList[0]);
break;
case eventTypeRecord.EditOilTankAttri:
MessageDispatcher.SendMessage("LOAD_EDITOILTANKATTRI_EVENT", eventItem.objAttriList[0]);
break;
case eventTypeRecord.OilTankStartExplosion:
MessageDispatcher.SendMessage("LoadOilTankStartExplosionEventF", eventItem.objAttriList[0]);
break;
case eventTypeRecord.ResetOilTank:
MessageDispatcher.SendMessage("LoadResetOilTankEvent", (object)eventItem.objAttriList[0].ObjName);
break;
case eventTypeRecord.OilTankTimer:
MessageDispatcher.SendMessage("LoadOilTankTimerEvent", eventItem.objAttriList[0]);
break;
case eventTypeRecord.EditFluvio:
MessageDispatcher.SendMessage("LoadEditFluvioEvent", eventItem.objAttriList[0]);
break;
case eventTypeRecord.RecordStartPosOfLine:
//obj.GetComponent().GetTheLine(eventItem.Navto);
break;
case eventTypeRecord.LatiAttri:
MessageDispatcher.SendMessage("LoadControlLatiEvent", eventItem.objAttriList[0]);
break;
case eventTypeRecord.AddLineToXFY:
//MessageDispatcher.SendMessage("LoadAddLineToXFYEvent", eventItem.objAttriList[0]);
var lineName = eventItem.objAttriList[0].ObjName;
var XFY_XFC = eventItem.objAttriList[0].TaskName;
var begin = GameObject.Find(eventItem.objAttriList[0].TopName);
var end = GameObject.Find(eventItem.objAttriList[0].OtherAttri);
GameObject line = GameObject.Find(lineName) as GameObject;
if(line && GameObject.Find(XFY_XFC))
{
line.GetComponent().GetTheMessage(begin, end);
//line.GetComponent().cengID = eventItem.objAttriList[0].CengID;
//line.GetComponent().CengIDBuildType = eventItem.objAttriList[0].buildTpye;
GameObject.Find(XFY_XFC).GetComponent().LineList_GameObject.Add(line);
GameObject.Find(XFY_XFC).GetComponent().isConnectCar = true;
CorrectLine(line);//矫正下管线
}
break;
case eventTypeRecord.StartPractice:
MessageDispatcher.SendMessage("LoadStartPracticeEvent");
break;
case eventTypeRecord.FireStartSpread:
MessageDispatcher.SendMessage("LoadFireStartSpreadEvent", (object)eventItem.objAttriList[0].ObjName);
break;
case eventTypeRecord.ResetFire:
MessageDispatcher.SendMessage("LoadResetFireEvent", (object)eventItem.objAttriList[0].ObjName);
break;
case eventTypeRecord.StartAttack:
MessageDispatcher.SendMessage("LoadStartAttackEvent");
break;
case eventTypeRecord.SwitchingFloor:
InputManager.Instance_.ClearSelectedCharacters();
if (eventItem.objAttriList.Count != 0)
{
for (int i = 0; i < eventItem.objAttriList[0].AllMembers.Count; i++)
{
var xiaofangyuan = GameObject.Find("pxiaofangyuan").transform.Find(eventItem.objAttriList[0].AllMembers[i]);
if (xiaofangyuan!=null)
InputManager.Instance_.addItem(xiaofangyuan.gameObject);
}
}
MessageDispatcher.SendMessage(eventItem.BuildTYPE, "SELECTFLOOR_EVENT", (object)eventItem.TheFloor);
BuildItem build = new BuildItem();
build.buildType = eventItem.BuildTYPE;
build.floor = eventItem.TheFloor;
MessageDispatcher.SendMessage("ChangeFloor", build);
if (eventItem.camAttributeList.Count != 0)
{
MouseFollowRotation.Instance.CameraAttri = eventItem.camAttributeList[0];
}
break;
case eventTypeRecord.AddRecordTag://不用做什么处理
TheBackView.instance.BackApect(eventItem);
break;
case eventTypeRecord.AddFilterTag://不用做什么处理
TheBackView.instance.BackApect(eventItem);
break;
case eventTypeRecord.AddLoadTag://不用做什么处理
TheBackView.instance.BackApect(eventItem);
break;
case eventTypeRecord.AddGpcAUTOTag://不用做什么处理
if (ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.CheckScore ||
ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.MakeScore)
{
TheBackView.instance.BackApect(eventItem);
}
break;
//case eventTypeRecord.ZongJiePingPanTag:
// if (ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.CheckScore ||
// ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.MakeScore)
// {
// TheBackView.instance.BackApect(eventItem);
// }
//break;
case eventTypeRecord.FineTuning:
TheBackView.instance.BackApect(eventItem);
MessageDispatcher.SendMessage("LoadFineTuningEvent", eventItem.objAttriList[0]);
break;
case eventTypeRecord.RecordZhiJiaBack:
MessageDispatcher.SendMessage("LoadZhiJiaBack", (object)eventItem.objAttriList[0].ObjName);
break;
case eventTypeRecord.EditWeather:
MessageDispatcher.SendMessage("LoadEditWeatherEvent", eventItem.weatherAttriList[0]);
break;
case eventTypeRecord.EditInsiderUI:
MessageDispatcher.SendMessage("LoadEditInsiderEvent", eventItem.insderUIAttriList[0]);
break;
//case eventTypeRecord.CompleteAttack:
// obj.GetComponent().GetDestroy();
// EventIndex++;
// break;
case eventTypeRecord.OpenEquipWin:
TrackRecordHelpClass.LoadOpenEquipWinEvent(eventItem);
break;
case eventTypeRecord.CloseEquipWin:
TrackRecordHelpClass.LoadCloseEquipWinEvent(eventItem);
break;
case eventTypeRecord.RecordQUYU:
TrackRecordHelpClass.LoadPolygonDian(eventItem);
break;
case eventTypeRecord.RecordPolygonThreeList:
TrackRecordHelpClass.LoadPolygonDianThreeList(eventItem);
break;
case eventTypeRecord.SubmitEquip:
TrackRecordHelpClass.LoadSubmitEquipEvent(eventItem.objAttriList[0]);
break;
case eventTypeRecord.OpenUI:
TrackRecordHelpClass.OpenUIEvent(eventItem,EventIndex);
break;
case eventTypeRecord.CloseUI:
TrackRecordHelpClass.CloseUIEvent(eventItem, EventIndex);
break;
case eventTypeRecord.EditZaWurUI:
TrackRecordHelpClass.EditZaWuEvent(eventItem);
break;
case eventTypeRecord.PoChaiUI:
break;
case eventTypeRecord.StairGo:
TrackRecordHelpClass.LoadGoStairEvent(eventItem);
break;
case eventTypeRecord.Y:
MessageDispatcher.SendMessage("Y",(object)eventItem.TheFloor);
break;
case eventTypeRecord.EseCameraPos:
if (MySceneManager.GetActiveScene().name.Equals("1") || MySceneManager.GetActiveScene().name.Equals("3"))//处理城市综合体超高层
{
if (GameObject.Find("YueTanShangSha"))
{
MouseFollowRotation.Instance.CameraAttri = eventItem.camAttributeList[0];
}
}
break;
default: return;
}
if (IsShowTiShi)
{
EventIndex++;
}
}
IEnumerator delayActive()
{
// GameObject.Find("Canvas/RightSet/备课模式/Grid/辅助工具").GetComponent().isOn = true;
yield return new WaitForEndOfFrame();
UPAndDownAttack.Instance.UpAndDownAttack(false);//此bool值在此无意义
// GameObject.Find("Canvas/RightSet/备课模式/Grid/辅助工具").GetComponent().isOn = false;
}
public void CorrectLine(GameObject line)
{
var begin = line.GetComponent().Begin;
var end = line.GetComponent().End;
if ((end && end.name.Contains("xiaofangche")) && (begin && begin.name.Contains("xiaofangche")))
{
return;
}
if (end && end.name.Contains("xiaofang"))//管线结尾链接的是消防员/车,矫正下终点位置
{
var lineCount = line.transform.childCount;
if (lineCount > 0)
{
var line_correct = line.transform.GetChild(lineCount - 1);
var p1 = line_correct.GetComponent().beginP;
var p2 = end.transform.position;
CorrectLine(line_correct, p1, p2);
}
}
if (begin && begin.name.Contains("xiaofang"))//管线结尾链接的是消防员/车,矫正下终点位置
{
var lineCount = line.transform.childCount;
if (lineCount > 0)
{
var line_correct = line.transform.GetChild(0);
var p2 = line_correct.GetComponent().endP;
var p1 = begin.transform.position;
CorrectLine(line_correct, p1, p2);
}
}
}
private void CorrectLine(Transform line_correct, Vector3 p1,Vector3 p2)
{
Vector3 tempPos = (p1 + p2) / 2;//计算两个点的中点坐标,
line_correct.position = tempPos;
line_correct.up = (-(p2 - p1)).normalized;//改变线条的朝向
float distance = Vector3.Distance(p1, p2);//计算两点的距离
line_correct.localScale = new Vector3(5f, distance * 18, 5f);//延长线条,连接两点。
line_correct.GetComponent().SetPos(p1, p2);//记录该节管线的首尾点坐标,用于后期管线位置矫正
}
}
public class PlayBackEventArgs : EventArgs
{
public bool IsMakeScore;
public PlayBackEventArgs(bool isMakeScore)
{
IsMakeScore = isMakeScore;
}
}
}