using FLY.Thick.Base.Common;
using FlyADBase;
using Misc;
using System;

namespace FLY.Thick.Base.Server
{
    public class GM_AutoScan : GM_Base
    {
        public int Delay { get; set; }

        public int Counter { get; set; } = 5;

        Action ReScan;
        DateTime dtLast = DateTime.MinValue;
        public GM_AutoScan()
        {
            GMState = CTRL_STATE.AUTOSCAN;
            Delay = 5;
            Counter = Delay;
        }
        public void Init(FlyAD7 flyad, Action reScan)
        {
            base.Init(flyad);
            ReScan = reScan;
        }
        protected override void OnPoll()
        {
            if ((DateTime.Now - dtLast).TotalSeconds >= 1)
            {
                dtLast = DateTime.Now;
                if (Counter > 0)
                    Counter--;

                if (Counter <= 0)
                {
                    Stop();
                    ReScan();
                }
            }
        }
        public void Start(int delay)
        {
            if (delay <= 0)
            {
                ReScan();
                return;
            }
            else
            {
                Delay = delay;
                Start();
            }
        }
        public override void Start()
        {
            IsRunning = true;
            Counter = Delay;
            dtLast = DateTime.Now;
            PollModule.Current.Poll_Config(onpoll_func);
            
        }
    }
}
