ShanxiKnowledgeBase/SXElectricalInspection/Assets/GuYuan/DisconnectedReconnection/Disconnected.cs

253 lines
7.5 KiB
C#

using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
/// <summary>
/// ¶ÏÏß
/// </summary>
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<string>();
DisconnectedData.keyValuePairs = new Dictionary<string, bool>();
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<pos>();
DisconnectedData.toolsRot = new List<pos>();
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<string>();
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<BoxCollider>().enabled = false;
}
public void WriteToLocal<T>(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<DisconnectedData>(json);
}
}
}
[Serializable]
public class DisconnectedData
{
/// <summary>
/// Óû§Ãû³Æ
/// </summary>
public string UserName;
/// <summary>
/// Óû§Éí·ÝÖ¤
/// </summary>
public string UserID;
/// <summary>
/// Óû§±àºÅ
/// </summary>
public string userBianHao;
/// <summary>
/// ³¡¾°Ãû³Æ
/// </summary>
public string SceneName;
/// <summary>
/// µ±Ç°Íæ¼ÒλÖÃ
/// </summary>
public pos PlayerPosition;
/// <summary>
/// µ±Ç°Íæ¼ÒλÖÃ
/// </summary>
public pos PlayerRotions;
/// <summary>
/// Íæ¼ÒÊÖÉϹ¤¾ß
/// </summary>
public string HandGameObject;
/// <summary>
/// ¹¤¾ß¼¯ºÏ
/// </summary>
public List<string> toolsName;
/// <summary>
/// ¹¤¾ßλÖÃ
/// </summary>
public List<pos> toolsPos;
/// <summary>
/// ¹¤¾ßÐýת
/// </summary>
public List<pos> toolsRot;
/// <summary>
/// µ±Ç°ÊÇ·ñÒª³öÏÖ¸Ð̾ºÅ
/// </summary>
public Dictionary<string, bool> 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;
/// <summary>
/// ×Öµä
/// </summary>
public Dictionary<string, string> keyValuePairs;
/// <summary>
/// Óû§±àºÅ
/// </summary>
public List<string> userID;
/// <summary>
/// ¿Í»§Ãû³Æ
/// </summary>
public List<string> userName;
/// <summary>
/// ¹¤×÷µØµã
/// </summary>
public List<string> workSpace;
/// <summary>
/// ×¢ÒâÊÂÏî¼°°²È«´ëÊ©
/// </summary>
public List<string> aqcss;
/// <summary>
/// ÏÖ³¡·çÏÕµã·ÖÎö
/// </summary>
public List<string> fxdfx;
/// <summary>
/// ´ò¹³¿ò
/// </summary>
public List<bool> bools;
}