refactor(runtime): own world environment state
This commit is contained in:
parent
b972f539f7
commit
902076c0a4
27 changed files with 886 additions and 295 deletions
|
|
@ -115,17 +115,10 @@ public sealed class DerethDateTimeTests
|
|||
// 291,411,660 - 3600 = 291,408,060
|
||||
// Expected output: PY 116 (= ZeroYear 10 + relative 106), Seedsow,
|
||||
// day 24 1-indexed.
|
||||
DerethDateTime.SetOriginOffsetFromDat(3600.0);
|
||||
try
|
||||
{
|
||||
var cal = DerethDateTime.ToCalendar(291_408_060.0);
|
||||
Assert.Equal(DerethDateTime.ZeroYear + 106, cal.Year);
|
||||
Assert.Equal(DerethDateTime.MonthName.Seedsow, cal.Month);
|
||||
Assert.Equal(24, cal.Day);
|
||||
}
|
||||
finally
|
||||
{
|
||||
DerethDateTime.SetOriginOffsetFromDat(DerethDateTime.DayFractionOriginOffsetTicks);
|
||||
}
|
||||
var calendar = new DerethCalendar(3600.0);
|
||||
var cal = calendar.ToCalendar(291_408_060.0);
|
||||
Assert.Equal(DerethDateTime.ZeroYear + 106, cal.Year);
|
||||
Assert.Equal(DerethDateTime.MonthName.Seedsow, cal.Month);
|
||||
Assert.Equal(24, cal.Day);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,39 @@ namespace AcDream.Core.Tests.World;
|
|||
|
||||
public sealed class SkyDescLoaderTests
|
||||
{
|
||||
[Theory]
|
||||
[InlineData(20, 10, 0, 16)]
|
||||
[InlineData(20, 10, 83, 5)]
|
||||
[InlineData(20, 116, 83, 18)]
|
||||
[InlineData(20, 127, 359, 4)]
|
||||
public void DayGroupSelector_MatchesNamedRetailGoldenValues(
|
||||
int count,
|
||||
int absoluteYear,
|
||||
int dayOfYear,
|
||||
int expected)
|
||||
{
|
||||
Assert.Equal(
|
||||
expected,
|
||||
SkyDayGroupSelector.SelectIndex(
|
||||
count,
|
||||
absoluteYear,
|
||||
daysPerYear: 360,
|
||||
dayOfYear));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DayGroupSelector_ForcedIndexIsExplicitInput()
|
||||
{
|
||||
Assert.Equal(
|
||||
7,
|
||||
SkyDayGroupSelector.SelectIndex(
|
||||
20,
|
||||
absoluteYear: 10,
|
||||
daysPerYear: 360,
|
||||
dayOfYear: 0,
|
||||
forcedIndex: 7));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Hand-build a Region with a minimal sky descriptor to feed the
|
||||
/// loader without needing real dat bytes. The LoadFromRegion
|
||||
|
|
|
|||
|
|
@ -29,10 +29,11 @@ public sealed class WorldTimeDebugTests
|
|||
// fraction 1/16: solve (t + 7/16*D) mod D = 1/16*D
|
||||
// → t = (1/16 - 7/16) * D mod D = -6/16 * D mod D = 10/16 * D.
|
||||
double targetFraction = 1.0 / 16.0; // Darktide-and-Half
|
||||
double syncTick = targetFraction * DerethDateTime.DayTicks - DerethDateTime.OriginOffsetTicks;
|
||||
var service = new WorldTimeService(SkyStateProvider.Default());
|
||||
double syncTick = targetFraction * DerethDateTime.DayTicks
|
||||
- service.Calendar.OriginOffsetTicks;
|
||||
while (syncTick < 0) syncTick += DerethDateTime.DayTicks;
|
||||
|
||||
var service = new WorldTimeService(SkyStateProvider.Default());
|
||||
service.SyncFromServer(syncTick);
|
||||
service.SetDebugTime(0.5f);
|
||||
service.ClearDebugTime();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue