using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using Newtonsoft.Json;
using UnityEngine.Networking;
using Utility;
using System;
using UnityEngine.Events;
public class Timers : MonoBehaviour
{
    public bool isRun = false;
    public float limitTime = 0;
    public float countTime = 0;
    public Text guiTimer;           // 用于显示计时器的 Text 组件
    public UnityEvent timeOver;
    // Start 方法在脚本激活时运行,用于初始化计时器
    void Start()
    {
        StartCoroutine(LoadJSON(Application.streamingAssetsPath + "/Timer.config"));
        guiTimer.text = StringHelper.GetCountDownStr((int)countTime);
    }
    // 运行计时器
    public void RunTimer()
    {
        isRun = true;
    }
    // 暂停或恢复计时器
    public void PauseTimer()
    {
        isRun = false;
    }
    // 结束计时器
    public void EndTimer()
    {
        isRun = false;
    }
    // Update 方法在每一帧运行,用于更新计时器的状态和显示
    private void Update()
    {
        if (isRun)
            Timer();
    }
    /// 
    /// 计时
    /// 
    /// 
    private void Timer()
    {
        guiTimer.text = StringHelper.GetCountDownStr((int)countTime);
        if (countTime < limitTime)
        {
            countTime += Time.deltaTime;
            guiTimer.text = "考试时间:"+StringHelper.GetCountDownStr((int)countTime);
        }
        else
        {
            //Debug.Log("计时结束");
            timeOver?.Invoke();
            isRun = false;
        }
    }
    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;
            TimerSer settings = JsonConvert.DeserializeObject(json);
            limitTime = settings.Timer;
            //Debug.Log(limitTime);
        }
    }
}
public class TimerSer
{
    public float Timer;
}