75 lines
1.7 KiB
C#
Raw Normal View History

2024-08-17 14:27:18 +08:00
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 long _id = 0;
2024-08-22 20:37:39 +08:00
private long _idMin = long.MinValue;
private long _idMax = long.MaxValue;
2024-08-17 14:27:18 +08:00
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 long NextId()
{
return ++_id;
}
2024-08-22 20:37:39 +08:00
public void SetIdValue(long min,long max)
2024-08-17 14:27:18 +08:00
{
2024-08-22 20:37:39 +08:00
if (_id < min)
2024-08-17 14:27:18 +08:00
{
2024-08-22 20:37:39 +08:00
_id = min;
}
_idMin = min;
_idMax = max;
}
/// <summary>
/// 适配Id 用于 历史Id和新Id重复问题
/// </summary>
/// <param name="id"></param>
/// <exception cref="NotImplementedException"></exception>
public void AdaptId(long id)
{
if (_idMin <= id && id >= _idMax)
{
if (id > _id)
{
_id = id;
}
2024-08-17 14:27:18 +08:00
}
}
}
}