using System;
using JNGame.Math;
using JNGame.Sync.System;
using Plugins.JNGame.Util;

namespace JNGame.Sync.Frame.Service
{
    /// <summary>
    /// 随机数
    /// </summary>
    public class JNRandomSystem : SLogicSystem
    {

        //随机数
        private Func<LFloat,LFloat,LFloat> nRandomFloat;
        private Func<int,int,int> nRandomInt;
        
        //Id
        private ulong _id = 0;
        private ulong _idMin = ulong.MinValue;
        private ulong _idMax = ulong.MaxValue;

        public JNRandomSystem(int seed)
        {
            nRandomFloat = RandomUtil.SyncRandomFloat(seed);
            nRandomInt = RandomUtil.SyncRandomInt(seed);
        }

        public LFloat Float()
        {
            return Float(0,1);
        }

        public LFloat Float(LFloat min,LFloat max)
        {
            return nRandomFloat(min,max);
        }

        public int Int(int max,int min)
        {
            return nRandomInt(max,min);
        }

        public ulong NextId()
        {
            return ++_id;
        }

        public void SetIdValue(ulong min,ulong max)
        {
            if (_id < min)
            {
                _id = min;
            }
            _idMin = min;
            _idMax = max;
        }
    }
}