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;
}