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