Refactor world bootstrap and allow empty startup worlds

This commit is contained in:
2026-03-29 13:22:48 -04:00
parent 640e147ea8
commit 0bb72bee35
79 changed files with 173146 additions and 9235 deletions

View File

@@ -0,0 +1,23 @@
using Microsoft.Extensions.Options;
namespace SpaceGame.Api.Universe.Simulation;
public sealed class TimeService(
IBalanceService balance,
IOptions<OrbitalSimulationOptions> orbitalSimulation) : ITimeService
{
public int TickIntervalMs => 200;
public TimeSpan TickInterval => TimeSpan.FromMilliseconds(TickIntervalMs);
public float TickDeltaSeconds => TickIntervalMs / 1000f;
public double SimulatedSecondsPerRealSecond => orbitalSimulation.Value.SimulatedSecondsPerRealSecond;
public DateTimeOffset UtcNow() => DateTimeOffset.UtcNow;
public float ScaleSimulationDelta(float realDeltaSeconds) =>
realDeltaSeconds * MathF.Max(balance.SimulationSpeedMultiplier, 0.01f);
public double ScaleOrbitalDelta(float simulationDeltaSeconds) =>
simulationDeltaSeconds * SimulatedSecondsPerRealSecond;
public double CreateInitialOrbitalTimeSeconds(int seed) => seed * 97d;
}