namespace BingoBrain.Core
{
    public static class TimerHelper
    {
        private static string name = "TimerHelper";

        #region Time

        private static YFsa _sYFsa;
        private static Psvsa _psvsa;
        private static UFdsa _sUFdsa;

        public static YFsa mEasy
        {
            get
            {
                if (_sYFsa == null)
                {
                    _sYFsa = TimerI.Instance.CreateSimpleTimer(name, TimerTimeType.Time);
                }

                return _sYFsa;
            }
        }

        public static Psvsa General
        {
            get
            {
                if (_psvsa == null)
                {
                    _psvsa = TimerI.Instance.CreateTimer(name, TimerTimeType.Time);
                }

                return _psvsa;
            }
        }

        public static UFdsa mNormal
        {
            get
            {
                if (_sUFdsa == null)
                {
                    _sUFdsa = TimerI.Instance.CreateHeavyTimer(name, TimerTimeType.Time);
                }

                return _sUFdsa;
            }
        }

        #endregion

        #region UnscaledTime

        private static YFsa _sUnscaledYFsa;
        private static Psvsa _unscaledPsvsa;
        private static UFdsa _sUnscaledUFdsa;

        public static YFsa mUnscaleEasy
        {
            get
            {
                if (_sUnscaledYFsa == null)
                {
                    _sUnscaledYFsa = TimerI.Instance.CreateSimpleTimer(name, TimerTimeType.UnscaledTime);
                }

                return _sUnscaledYFsa;
            }
        }

        public static Psvsa UnscaleGeneral
        {
            get
            {
                if (_unscaledPsvsa == null)
                {
                    _unscaledPsvsa = TimerI.Instance.CreateTimer(name, TimerTimeType.UnscaledTime);
                }

                return _unscaledPsvsa;
            }
        }

        public static UFdsa mUnscaleNormal
        {
            get
            {
                if (_sUnscaledUFdsa == null)
                {
                    _sUnscaledUFdsa = TimerI.Instance.CreateHeavyTimer(name, TimerTimeType.UnscaledTime);
                }

                return _sUnscaledUFdsa;
            }
        }

        #endregion

        #region RealtimeSinceStartup

        private static YFsa _sRealYFsa;
        private static Psvsa _realPsvsa;
        private static UFdsa _sRealUFdsa;

        public static YFsa mRealEasy
        {
            get
            {
                if (_sRealYFsa == null)
                {
                    _sRealYFsa = TimerI.Instance.CreateSimpleTimer(name, TimerTimeType.RealtimeSinceStartup);
                }

                return _sRealYFsa;
            }
        }

        public static Psvsa RealGeneral
        {
            get
            {
                if (_realPsvsa == null)
                {
                    _realPsvsa = TimerI.Instance.CreateTimer(name, TimerTimeType.RealtimeSinceStartup);
                }

                return _realPsvsa;
            }
        }

        public static UFdsa mRealNormal
        {
            get
            {
                if (_sRealUFdsa == null)
                {
                    _sRealUFdsa = TimerI.Instance.CreateHeavyTimer(name, TimerTimeType.RealtimeSinceStartup);
                }

                return _sRealUFdsa;
            }
        }

        #endregion
    }
}