上海杨浦大连路地铁站单机版电子沙盘
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

172 lines
6.1 KiB

using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Xml;
using UnityEngine;
public class RecordManager : MonoBehaviour
{
public static RecordManager Instance;
public RecordStatus recordStatus;
public float RecordTimer = 0;
public JsonData jsonData;
private Transform parent;
void Awake()
{
if (Instance == null)
{
Instance = this;
}
}
// Use this for initialization
void Start()
{
parent = GameObject.Find("P_AllParent").transform;
}
// Update is called once per frame
void Update()
{
}
void FixedUpdate()
{
if (ReplaySetting.PlayStatus == PlayStatus.isEditor && recordStatus == RecordStatus.normal)
{
RecordTimer += Time.deltaTime;
}
}
/// <summary>
/// 记录状态数据
/// </summary>
public void RecordFrame()
{
var frameData = new FrameData();
frameData.time = RecordTimer;
AddData(parent, frameData.objectDataList);
{//添加相机初始化信息
ObjectData data = new ObjectData();
data.cloneObjType = CloneObjType.Camera;
data.json = JsonUtility.ToJson(Camera.main.GetComponent<CameraManager>().GetNowCameraData());
frameData.objectDataList.Add(data);
}
{//添加天气初始化信息
ObjectData data = new ObjectData();
data.cloneObjType = CloneObjType.Weather;
WeatherSettingManager manager = GameObject.Find("Canvas").transform.Find("WeatherSettingPanel").GetComponent<WeatherSettingManager>();
data.json = JsonUtility.ToJson(manager.GetNowSettingData());
frameData.objectDataList.Add(data);
}
//{//添加场景中自动水炮初始化信息
// foreach (Transform item in GameObject.Find("Scene").transform.Find("XFSS"))
// {
// if (item.GetComponent<CloneGameObjInfo>())
// {
// if (item.GetComponent<CloneGameObjInfo>().gameObjType== CloneObjType.ZDSP)
// {
// ObjectData data = new ObjectData();
// data.cloneObjType = CloneObjType.ZDSP;
// data.json = JsonUtility.ToJson(item.GetComponent<FCGSPControl>().GetData());
// frameData.objectDataList.Add(data);
// }
// }
// }
//}
{//添加选中状态记录
//if (SelectedObjs.selectedObj != null)
//{
// ObjectData data = new ObjectData();
// data.cloneObjType = CloneObjType.Selected;
// data.json = SelectedObjs.selectedObj.name;
// frameData.objectDataList.Add(data);
//}
//else if (SelectedObjs.selectedCharacters.Count > 0)
//{
// ObjectData data = new ObjectData();
// data.cloneObjType = CloneObjType.Selected;
// foreach (var item in SelectedObjs.selectedCharacters)
// {
// data.json += (item.name + "&");
// }
// frameData.objectDataList.Add(data);
//}
}
{//添加场景中罐区消防系统
var StorageTankSystem = GameObject.Find("P_AllParent").GetComponentsInChildren<StorageTankSystem>();
foreach (StorageTankSystem item in StorageTankSystem)
{
ObjectData data = new ObjectData();
data.cloneObjType = CloneObjType.StorageTankSystem;
data.json = JsonUtility.ToJson(item.AddRecordFrameData());
frameData.objectDataList.Add(data);
}
}
{//添加场景中楼层选中情况
ObjectData data = new ObjectData();
data.cloneObjType = CloneObjType.UIFloor;
data.json = JsonUtility.ToJson(GlobalVariable.CurrentFloor);
frameData.objectDataList.Add(data);
}
{//添加工具栏显示情况
ObjectData data = new ObjectData();
data.cloneObjType = CloneObjType.ToolsOn;
data.json = GlobalVariable.ToolsOn.ToString();
frameData.objectDataList.Add(data);
}
{//添加楼层信息显示情况
ObjectData data = new ObjectData();
data.cloneObjType = CloneObjType.FloorsOn;
data.json = GlobalVariable.FloorsOn.ToString();
frameData.objectDataList.Add(data);
}
{//添加楼层信息显示滑动条情况
ObjectData data = new ObjectData();
data.cloneObjType = CloneObjType.FloorsScrollBar;
data.json = GlobalVariable.FloorsScrollBarValue.ToString();
frameData.objectDataList.Add(data);
}
jsonData.frameDataList.Add(frameData);
}
/// <summary>
/// 添加所有克隆对象数据
/// </summary>
/// <param name="trs"></param>
/// <param name="objectData"></param>
private void AddData(Transform trs, List<ObjectData> objectData)
{
if (trs.GetComponent<CloneBase>())
{
trs.GetComponent<CloneBase>().AddRecordFrame(objectData);
}
foreach (Transform child in trs)
{
AddData(child, objectData);
}
}
/// <summary>
/// 保存数据文件
/// </summary>
/// <param name="nodeName"></param>
public void SaveRecord(string nodeName)
{
string path = Application.dataPath + @"/Data/" + DisasterManager.disaster.Id + "/File/XmlData/";
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
string filePath = path + nodeName + ".xml";
if (File.Exists(filePath))
{
File.Delete(filePath);
}
XmlDocument document = new XmlDocument();
XmlDeclaration xmldecl = document.CreateXmlDeclaration("1.0", "UTF-8", "yes");
document.AppendChild(xmldecl);
XmlElement record = document.CreateElement("Record");
record.InnerText = JsonUtility.ToJson(jsonData);
document.AppendChild(record);
document.Save(filePath);
}
}