﻿using JLGames.RocketDriver.Actions.Wait;
using JLGames.RocketDriver.CSharp.Service;

namespace JLGames.RocketDriver.Samples.ServiceDemo.Service.Demo
{
    public class DemoService : ServiceBase, IArgumentService, IInitService, IInitDataService, IDemoService
    {
        private float m_InitDelay;
        private float m_InitDataDelay;

        public float InitDelay => m_InitDelay;
        public float InitDataDelay => m_InitDataDelay;

        public void InjectArgument(object[] args)
        {
            m_InitDelay = (float) args[0];
            m_InitDataDelay = (float) args[1];
        }

        public void Init()
        {
            if (m_InitDelay <= 0)
            {
                InvokeInited();
                return;
            }

            // 模拟处理一些业务功能，花费一些时间
            // Simulate processing some business functions and spend some time
            WaitBehaviourShared.Shared.InvokdSeconds(InvokeInited, m_InitDelay);
        }

        public void InitData()
        {
            if (m_InitDataDelay <= 0)
            {
                InvokeDataInited();
                return;
            }

            // 模拟处理一些业务功能，花费一些时间
            // Simulate processing some business functions and spend some time
            WaitBehaviourShared.Shared.InvokdSeconds(InvokeDataInited, m_InitDelay);
        }
    }
}