using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
///
/// 断线
///
public class Disconnected : MonoBehaviour
{
public static Disconnected ins;
[SerializeField] int Timer;
public string fileName;
public DisconnectedData DisconnectedData;
[SerializeField] Transform PlayerTrans;
[SerializeField] string name;
private void Awake()
{
//if (ins == null)
//{
// ins = this;
//}
//else
//{
// Destroy(ins);
// return;
//}
//try
//{
// PlayerTrans = GameManager.Instance.Player.transform;
DisconnectedData = new DisconnectedData();
DisconnectedData.PlayerPosition = new pos();
DisconnectedData.PlayerRotions = new pos();
DisconnectedData.toolsName = new List();
DisconnectedData.keyValuePairs = new Dictionary();
DateTime currentTime = DateTime.Now;
// fileName = Application.streamingAssetsPath + "/" + currentTime.Year.ToString() + currentTime.Month.ToString() + currentTime.Day.ToString() + ".json";
// StartCoroutine(LoadJSON(fileName));
//}
//catch (Exception ex)
//{
// Debug.LogError(ex.Message);
// throw;
//}
}
// Start is called before the first frame update
void Start()
{
//try
//{
// StartCoroutine(Starts());
//}
//catch (System.Exception ex)
//{
// Debug.LogError("异常" + ex);
// throw;
//}
}
private void OnTriggerEnter(Collider other)
{
if (other.name.Equals(name))
{
//OnBackUp();
}
}
private void OnTriggerExit(Collider other)
{
if (other.name.Equals(name))
{
//UIManager.Instance.Reconnection.isDuanDianok = true;
}
}
void OnBackUp()
{
//Debug.Log("开始备份");
DisconnectedData.toolsPos = new List();
DisconnectedData.toolsRot = new List();
int tempInt = UIManager.Instance.toolsItemManager.toolItems.Count;
for (int i = 0; i < tempInt; i++)
{
pos pos = new pos();
pos.x = ToolsItemManager.Instance.toolItems[i].originPos.x;
pos.y = ToolsItemManager.Instance.toolItems[i].originPos.y;
pos.z = ToolsItemManager.Instance.toolItems[i].originPos.z;
DisconnectedData.toolsPos.Add(pos);
}
for (int i = 0; i < tempInt; i++)
{
pos pos = new pos();
pos.x = ToolsItemManager.Instance.toolItems[i].originAngle.x;
pos.y = ToolsItemManager.Instance.toolItems[i].originAngle.y;
pos.z = ToolsItemManager.Instance.toolItems[i].originAngle.z;
DisconnectedData.toolsRot.Add(pos);
}
DisconnectedData.PlayerPosition.x = PlayerTrans.position.x;
DisconnectedData.PlayerPosition.y = PlayerTrans.position.y;
DisconnectedData.PlayerPosition.z = PlayerTrans.position.z;
DisconnectedData.PlayerRotions.x = PlayerTrans.localEulerAngles.x;
DisconnectedData.PlayerRotions.y = PlayerTrans.localEulerAngles.y;
DisconnectedData.PlayerRotions.z = PlayerTrans.localEulerAngles.z;
DisconnectedData.SceneName = GameManager.Instance.SceneName;
DisconnectedData.UserID = UIManager.Instance.loginController.PassWord;
DisconnectedData.UserName = UIManager.Instance.loginController.userName;
DisconnectedData.userBianHao = GlobalFlag.userId;
DisconnectedData.toolsName = new List();
DisconnectedData.timuAnd = new timuAndOptoin();
DisconnectedData.timuAnd = UIManager.Instance.jobCardController.hide();
DisconnectedData.Timer = UIManager.Instance.time.countTime;
foreach (var item in WorkingPersonnel.instance.keyValuePairs)
{
if (DisconnectedData.keyValuePairs.ContainsKey(item.Key))
{
DisconnectedData.keyValuePairs[item.Key] = item.Value;
}
else
{
DisconnectedData.keyValuePairs.Add(item.Key, item.Value);
}
}
if (ToolsItemManager.Instance.currentTool)
{
DisconnectedData.HandGameObject = ToolsItemManager.Instance.currentTool.name;
}
for (int i = 0; i < ToolsItemManager.Instance.toolItems.Count; i++)
{
DisconnectedData.toolsName.Add(ToolsItemManager.Instance.toolItems[i].toolName);
}
WriteToLocal(DisconnectedData.UserID, DisconnectedData.UserName, DisconnectedData);
gameObject.GetComponent().enabled = false;
}
public void WriteToLocal(string id, string name, T monoBehaviour)
{
// 将数据对象序列化为JSON
string json = JsonConvert.SerializeObject(monoBehaviour, Formatting.Indented);
//File.WriteAllText(path, json);
ExaminationLoad load = new ExaminationLoad();
StartCoroutine(load.LoadAsyncPost(name, id, json));
}
IEnumerator LoadJSON(string fileName)
{
string sPath = fileName;
using (UnityWebRequest oReq = UnityWebRequest.Get(sPath))
{
yield return oReq.SendWebRequest();
if (!string.IsNullOrEmpty(oReq.error))
{
Debug.Log("获取配置信息失败!");
yield break;
}
string json = oReq.downloadHandler.text;
DisconnectedData settings = JsonConvert.DeserializeObject(json);
}
}
}
[Serializable]
public class DisconnectedData
{
///
/// 用户名称
///
public string UserName;
///
/// 用户身份证
///
public string UserID;
///
/// 用户编号
///
public string userBianHao;
///
/// 场景名称
///
public string SceneName;
///
/// 当前玩家位置
///
public pos PlayerPosition;
///
/// 当前玩家位置
///
public pos PlayerRotions;
///
/// 玩家手上工具
///
public string HandGameObject;
///
/// 工具集合
///
public List toolsName;
///
/// 工具位置
///
public List toolsPos;
///
/// 工具旋转
///
public List toolsRot;
///
/// 当前是否要出现感叹号
///
public Dictionary keyValuePairs;
public timuAndOptoin timuAnd;
public float Timer;//时间
}
[Serializable]
public class pos
{
public float x;
public float y;
public float z;
}
[Serializable]
public class timuAndOptoin
{
public string userSum;
///
/// 字典
///
public Dictionary keyValuePairs;
///
/// 用户编号
///
public List userID;
///
/// 客户名称
///
public List userName;
///
/// 工作地点
///
public List workSpace;
///
/// 注意事项及安全措施
///
public List aqcss;
///
/// 现场风险点分析
///
public List fxdfx;
///
/// 打钩框
///
public List bools;
}