using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// 单机测试脚本
/// </summary>
public class SingleMachineTest : MonoBehaviour
{

    public List<EquipmentCommon> equipmentCommons = new List<EquipmentCommon>();
    /// <summary>
    /// 无人机
    /// </summary>
    public List<UnmannedAerialVehicleManage> unmannedAerialVehicleManages = new List<UnmannedAerialVehicleManage>();
    /// <summary>
    /// 雷达控制
    /// </summary>
    public List<RadarManger> radarMangers = new List<RadarManger>();
    /// <summary>
    /// 激光火控平台
    /// </summary>
    public List<LaserFireControlPlatformManger> laserFireControlPlatformMangers = new List<LaserFireControlPlatformManger>();
    /// <summary>
    /// 地面无线电干扰控制
    /// </summary>
    public List<TerrestrialRadioInterferenceManger> terrestrialRadioInterferenceMangers = new List<TerrestrialRadioInterferenceManger>();



    private Coroutine timerCoroutine; // 协程对象
    private bool isTimerRunning = false; // 定时器运行状态
    public float interval = 2.0f; // 间隔时间


    /// <summary>
    /// 测试用
    /// </summary>
    public string msg1;
    /// <summary>
    /// 测试接受数据
    /// </summary>
    private AdamThinkDevicesData.DeviceData root;
    void Start()
    {
        root = Newtonsoft.Json.JsonConvert.DeserializeObject<AdamThinkDevicesData.DeviceData>(msg1);

        unmannedAerialVehicleManages.ForEach(x => x.FillInTheData(root.data[2].list_para));
        radarMangers.ForEach(x => x.FillInTheData(root.data[0].list_para));
        laserFireControlPlatformMangers.ForEach(x => x.FillInTheData(root.data[3].list_para));
        terrestrialRadioInterferenceMangers.ForEach(x => x.FillInTheData(root.data[1].list_para));
        // 开始协程
        //StartTimer();
    }
    
    void FixedUpdate()
    {
        //if (Input.GetMouseButtonDown(1))
        //{
        //    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        //    RaycastHit hitInfo;
        //    if (Physics.Raycast(ray, out hitInfo, 1000))
        //    {
        //        if (hitInfo.collider.tag == "WRJ")
        //        {
        //            UnmannedAerialVehicleUI.Instance.unmannedAerialVehicleManage = hitInfo.collider.GetComponent<UnmannedAerialVehicleManage>();

        //        }
        //    }
        //}
    }

    [ContextMenu("Add")]
    public void Add()
    {
        if (isTimerRunning)
        {
            isTimerRunning = false;
            // 暂停定时器
            Debug.Log("暂停定时器执行调用: " + Time.time);
            StopTimer();
        }
        else
        {
            isTimerRunning = true;
            // 继续定时器
            Debug.Log("继续定时器执行调用: " + Time.time);
            StartTimer();
        }
    }

    IEnumerator Timer()
    {
        while (true)
        {
            //Debug.Log("执行调用: " + Time.time);
            yield return new WaitForSeconds(interval); // 等待一段时间后继续执行
        }
    }

    /// <summary>
    /// 启动演练
    /// </summary>
    void StartTimer()
    {
        if (timerCoroutine == null)
        {
            timerCoroutine = StartCoroutine(Timer());

            equipmentCommons.ForEach(x => x.isPlayer = true);
            unmannedAerialVehicleManages.ForEach(x => x.isStartRehearsing = true);
            radarMangers.ForEach(x => x.isStartRehearsing = true);
            laserFireControlPlatformMangers.ForEach(x => x.isStartRehearsing = true);
            terrestrialRadioInterferenceMangers.ForEach(x => x.isStartRehearsing = true);
        }
    }

    /// <summary>
    /// 暂停演练
    /// </summary>
    void StopTimer()
    {
        if (timerCoroutine != null)
        {
            StopCoroutine(timerCoroutine);
            timerCoroutine = null;
            unmannedAerialVehicleManages.ForEach(x => x.isStartRehearsing = false);
            radarMangers.ForEach(x => x.isStartRehearsing = false);
            laserFireControlPlatformMangers.ForEach(x => x.isStartRehearsing = false);
            terrestrialRadioInterferenceMangers.ForEach(x => x.isStartRehearsing = false);
        }
    }
}