Refactor world bootstrap and allow empty startup worlds
This commit is contained in:
23
apps/backend/Universe/Simulation/TimeService.cs
Normal file
23
apps/backend/Universe/Simulation/TimeService.cs
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user