diff options
| author | godosa <godosa@godosa.eu> | 2026-10-06 23:39:36 +0200 |
|---|---|---|
| committer | godosa <godosa@godosa.eu> | 2026-10-06 23:39:36 +0200 |
| commit | 39066900773e7857faf2d02e7ed51b71d219d97d (patch) | |
| tree | ffab8e4ddd971626776c3b1f4ce1da2c186c2187 /src/Godosa.Core/Runs/HeadlessLoop.cs | |
| download | godosa-engine-39066900773e7857faf2d02e7ed51b71d219d97d.tar.gz godosa-engine-39066900773e7857faf2d02e7ed51b71d219d97d.zip | |
godosa-engine: initial public history
Diffstat (limited to 'src/Godosa.Core/Runs/HeadlessLoop.cs')
| -rw-r--r-- | src/Godosa.Core/Runs/HeadlessLoop.cs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/Godosa.Core/Runs/HeadlessLoop.cs b/src/Godosa.Core/Runs/HeadlessLoop.cs new file mode 100644 index 0000000..fc21b41 --- /dev/null +++ b/src/Godosa.Core/Runs/HeadlessLoop.cs @@ -0,0 +1,20 @@ +namespace Godosa.Core.Runs; + +/// <summary>Runs frames as fast as possible: <c>frame(n)</c> for n = 1, 2, … until it returns false, <paramref name="frames"/> +/// is reached, or <paramref name="cap"/> (Capped = true).</summary> +public static class HeadlessLoop +{ + public const long DefaultCap = 100_000; + + public static (long Frames, bool Capped) Run(Func<long, bool> frame, long? frames, long cap = DefaultCap) + { + for (long n = 1; ; n++) + { + if (n > cap) + return (cap, true); + var more = frame(n); + if (!more || n == frames) + return (n, false); + } + } +} |
