备份CatanBuilding瘦身独立工程
This commit is contained in:
57
Assets/Scripts/EventBingo/BingoRng.cs
Normal file
57
Assets/Scripts/EventBingo/BingoRng.cs
Normal file
@@ -0,0 +1,57 @@
|
||||
public class TrackedRng
|
||||
{
|
||||
private readonly System.Random _rng;
|
||||
private readonly int _seed;
|
||||
private int _stepCount;
|
||||
public int Seed => _seed;
|
||||
public int StepCount => _stepCount;
|
||||
public TrackedRngState State => new TrackedRngState() { Seed = _seed, StepCount = _stepCount };
|
||||
|
||||
public TrackedRng(int seed, int stepCount = 0)
|
||||
{
|
||||
_rng = new System.Random(seed);
|
||||
_seed = seed;
|
||||
_stepCount = stepCount;
|
||||
while (stepCount-- > 0)
|
||||
_rng.Next();
|
||||
}
|
||||
|
||||
public TrackedRng(TrackedRngState state)
|
||||
{
|
||||
_rng = new System.Random(state.Seed);
|
||||
_seed = state.Seed;
|
||||
_stepCount = state.StepCount;
|
||||
while (state.StepCount-- > 0)
|
||||
_rng.Next();
|
||||
}
|
||||
|
||||
public int Next()
|
||||
{
|
||||
_stepCount++;
|
||||
return _rng.Next();
|
||||
}
|
||||
|
||||
public int Next(int maxValue)
|
||||
{
|
||||
_stepCount++;
|
||||
return _rng.Next(maxValue);
|
||||
}
|
||||
|
||||
public int Next(int minValue, int maxValue)
|
||||
{
|
||||
_stepCount++;
|
||||
return _rng.Next(minValue, maxValue);
|
||||
}
|
||||
|
||||
/* private void AdvanceBySteps(int stepCount)
|
||||
{
|
||||
while (stepCount-- > 0)
|
||||
_rng.Next();
|
||||
} */
|
||||
}
|
||||
|
||||
public class TrackedRngState
|
||||
{
|
||||
public int StepCount = 0;
|
||||
public int Seed;
|
||||
}
|
||||
Reference in New Issue
Block a user