using AX.MessageSystem;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BurnTimer : MonoBehaviour {
    private static string burnTime = "";
    private static float burnHours = 0;
    public static bool isBurning=false;
    public Transform p_firenormal;
    public Transform p_fireliquid;
    void Start()
    {        
        if(p_firenormal ==null)
        {
            p_firenormal = transform.Find("P_FireNormal").transform;
        }
        if (p_fireliquid == null)
        {
            p_fireliquid=GameObject.Find("P_FireLiquidLevel").transform;
        }
        MessageDispatcher.AddListener("BurnTimeSet", BurnTimeSet);
    }
    void OnDestroy()
    {
        MessageDispatcher.RemoveListener("BurnTimeSet", BurnTimeSet);
    }
    void BurnTimeSet(IMessage obj)
    {
        if(p_fireliquid !=null && p_firenormal != null)
        {
            //如果没有火了,以当前时间为结束时间计算燃烧时间
            if (p_firenormal.childCount == 0 && p_fireliquid.childCount == 0)
            {
                isBurning = false;
                burnTime = TIME_SYNC.time;
                DateTime time = Convert.ToDateTime(burnTime);
                TimeSpan duration = time.TimeOfDay;
                burnHours = (float)duration.TotalHours;
            }
        }                  
    }
    public static float BurnTime
    {
        get
        {
            if (isBurning)  //如果还在燃烧,就以当前时间为结束计算燃烧时间
            {
                burnTime = TIME_SYNC.time;
                DateTime time = Convert.ToDateTime(burnTime);
                TimeSpan duration = time.TimeOfDay;
                burnHours = (float)duration.TotalHours;
            }
            //如果没有燃烧,一种情况是没有设置火,此时burnHours返回初始值0
            //另一情况是火全灭,burnHours已在BurnTimeSet方法中赋值
            return burnHours;
        }
    }
}