Prevent repeating random design

Cache the last selected random design and prevent it from being chosen again.
This commit is contained in:
Diorik 2025-02-04 01:54:34 -06:00
parent da46705b52
commit cf308fc118

View file

@ -5,15 +5,20 @@ namespace Glamourer.Designs.Special;
public class RandomDesignGenerator(DesignStorage designs, DesignFileSystem fileSystem) : IService public class RandomDesignGenerator(DesignStorage designs, DesignFileSystem fileSystem) : IService
{ {
private readonly Random _rng = new(); private readonly Random _rng = new();
private Design? _lastDesign = null;
public Design? Design(IReadOnlyList<Design> localDesigns) public Design? Design(IReadOnlyList<Design> localDesigns)
{ {
if (localDesigns.Count == 0) if (localDesigns.Count == 0)
return null; return null;
if (_lastDesign != null && localDesigns.Count > 1)
localDesigns = localDesigns.Where(d => d != _lastDesign).ToList();
var idx = _rng.Next(0, localDesigns.Count); var idx = _rng.Next(0, localDesigns.Count);
Glamourer.Log.Verbose($"[Random Design] Chose design {idx + 1} out of {localDesigns.Count}: {localDesigns[idx].Incognito}."); Glamourer.Log.Verbose($"[Random Design] Chose design {idx + 1} out of {localDesigns.Count}: {localDesigns[idx].Incognito}.");
return localDesigns[idx]; _lastDesign = localDesigns[idx];
return _lastDesign;
} }
public Design? Design() public Design? Design()