public void shuffle_sanity() { var random = new NoiseBasedRNG(12345); var array = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; random.Shuffle(array); array.Should().ContainInOrder(14, 11, 4, 6, 7, 5, 10, 1, 2, 8, 16, 3, 15, 9, 12, 13); }
public void next_int_sanity() { var random = new NoiseBasedRNG(12345); for (var i = 0; i < 60; i++) { random.Next(i).Should().BeLessOrEqualTo(i); } }
public void next_double_returns_less_than_1() { var random = new NoiseBasedRNG(12345); for (var i = 0; i < 100; i++) { var result = random.NextDouble(); result.Should().BeGreaterOrEqualTo(0.0f); result.Should().BeLessOrEqualTo(1.0f); } }
public void next_int_range_sanity() { var random = new NoiseBasedRNG(12345); for (var i = 0; i < 60; i++) { var randomResult = random.Next(i, i + 60); randomResult.Should().BeLessOrEqualTo(i + 60); randomResult.Should().BeGreaterOrEqualTo(i); } }
private void FinishLoadingContent(GameCartridge gameCartridge) { #if DEBUG DebugLevel = DebugLevel.Passive; #endif // Most cartridges get setup automatically but since the gamecartridge hasn't been inserted yet we have to do it early here gameCartridge.SetupSceneLayers(this, specification, WindowInterface); var debugActor = gameCartridge.SceneLayers.DebugScene.AddActor("DebugActor"); var demoPlaybackComponent = new DemoPlaybackComponent(debugActor); var demoName = Demo.MostRecentlySavedDemoPath; var demoSpeed = 1; var shouldSkipSnapshot = DebugLevel == DebugLevel.Off; void SetRandomSeedFromString(string seed) { gameCartridge.Random.Seed = (int)NoiseBasedRNG.SeedFromString(seed); } this.specification.commandLineArgs.RegisterEarlyFlagArg("skipsnapshot", () => { shouldSkipSnapshot = true; }); this.specification.commandLineArgs.RegisterEarlyValueArg("randomseed", SetRandomSeedFromString); this.specification.commandLineArgs.RegisterEarlyValueArg("demopath", arg => { demoName = arg; }); this.specification.commandLineArgs.RegisterEarlyValueArg("demospeed", arg => { demoSpeed = int.Parse(arg); }); this.specification.commandLineArgs.RegisterEarlyValueArg("demo", arg => { switch (arg) { case "record": new DemoRecorderComponent(debugActor, new Demo.Recorder(gameCartridge, demoName)); break; case "playback": DemoPlayback = demoPlaybackComponent.SetDemo(gameCartridge, Demo.FromDisk_Sync(demoName, MachinaClient.FileSystem), demoName, demoSpeed); break; case "playback-nogui": DemoPlayback = demoPlaybackComponent.SetDemo(gameCartridge, Demo.FromDisk_Sync(demoName, MachinaClient.FileSystem), demoName, demoSpeed); demoPlaybackComponent.ShowGui = false; break; default: MachinaClient.Print("Unknown demo mode", arg); break; } }); this.specification.commandLineArgs.RegisterEarlyFlagArg("debug", () => { DebugLevel = DebugLevel.Active; }); #if DEBUG // PlayIntroAndLoadGame(gameCartridge); InsertGameCartridgeAndRun(gameCartridge); #else if (SkipIntro) { InsertGameCartridgeAndRun(gameCartridge); } else { PlayIntroAndLoadGame(gameCartridge); } #endif // Currently we go [SetupDebugScene] -> [LoadGame] -> [LateSetup], hopefully the cartridge system will mitigate the need for this. if (GamePlatform.IsDesktop) { // NOTE: If we play the intro in a debug build this flag will not be honored, tech debt. new SnapshotTaker(debugActor, shouldSkipSnapshot); } }