public void TestBracketShorthandThrowsOnNullKey() { IWeightedRandomizer <ExampleClass> newTarget = CreateTarget <ExampleClass>(); Assert.Throws <ArgumentNullException>(() => newTarget[null] = 1); Assert.Throws <ArgumentNullException>(() => { int a = newTarget[null]; }); }
public void TestAddThrowsOnNullKey() { IWeightedRandomizer <ExampleClass> newTarget = CreateTarget <ExampleClass>(); Assert.Throws <ArgumentNullException>(() => newTarget.Add(null, 2)); Assert.Throws <ArgumentNullException>(() => newTarget.Add(null)); }
private void ConfigureRandom() { if (dungeonSeed == 0) { dungeonSeed = new System.Random().Next(int.MinValue, int.MaxValue); } random = new System.Random(dungeonSeed); floors = new DynamicWeightedRandomizer <DungeonTile>(dungeonSeed); ceilings = new DynamicWeightedRandomizer <DungeonTile>(dungeonSeed); walls = new DynamicWeightedRandomizer <DungeonTile>(dungeonSeed); doorways = new DynamicWeightedRandomizer <DungeonTile>(dungeonSeed); zoners = new DynamicWeightedRandomizer <DungeonZoner>(dungeonSeed); enemies = new DynamicWeightedRandomizer <EntityEnemy>(dungeonSeed); components = new DynamicWeightedRandomizer <DungeonTile>(dungeonSeed); connectors = new DynamicWeightedRandomizer <DungeonTile>(dungeonSeed); foreach (DungeonTile floor in dungeon.floors) { floors[floor] = floor.weight; } foreach (DungeonTile ceiling in dungeon.ceilings) { ceilings[ceiling] = ceiling.weight; } foreach (DungeonTile wall in dungeon.walls) { walls[wall] = wall.weight; } foreach (DungeonTile doorway in dungeon.doorways) { doorways[doorway] = doorway.weight; } foreach (DungeonZoner zoner in dungeon.zoners) { zoners[zoner] = zoner.weight; } foreach (EntityEnemy enemy in dungeon.enemies) { enemies[enemy] = enemy.weight; } foreach (DungeonTile component in dungeon.components) { components[component] = component.weight; } foreach (DungeonTile connector in dungeon.connectors) { connectors[connector] = connector.weight; } }
private static T GetSatisfiedRestriction <T>(IWeightedRandomizer <T> randomizer, T next, string gender, string race, int count = 0) where T : RestrictedValue { if (string.IsNullOrWhiteSpace(gender) && string.IsNullOrWhiteSpace(race)) { return(next); } if (count < GiveUp) { var inOrEmptyGender = InOrEmpty(next.RestrictedToGender, gender); var inOrEmptyRace = InOrEmpty(next.RestrictedToRace, race); if (!inOrEmptyGender || !inOrEmptyRace) { next = randomizer.NextWithReplacement(); return(GetSatisfiedRestriction(randomizer, next, gender, race, ++count)); } } return(next); }
static void Main(string[] args) { Keyboard.GetState(); //IT JUST WERKS NOW?? PLS FIX :D (OnRootConsoleUpdate) string fontFileName = "terminal8x8.png"; //Initialize RNG int seed = (int)DateTime.UtcNow.Ticks; WeightedRandom = new StaticWeightedRandomizer <IWRandomizable>(seed); Random = new DotNetRandom(seed); string consoleTitle = $"RLGame Seed {seed}"; //Show the seed _rootConsole = new RLRootConsole(fontFileName, SCREENWIDTH, SCREENHEIGHT, 8, 8, 1f, consoleTitle); GameStack = new Stack <IGameState>(); MainScreen main = new MainScreen(false, true, _rootConsole); main.Init(); GameStack.Push(main); _rootConsole.Update += OnRootConsoleUpdate; _rootConsole.Render += OnRootConsoleRender; _rootConsole.Run(); }
private static void TestSpeed(IWeightedRandomizer <int> randomizer, bool displayText) { GCLatencyMode oldLatencyMode = GCSettings.LatencyMode; try { //Prevent garbage collection during tests GCSettings.LatencyMode = GCLatencyMode.LowLatency; const int numIterations = 10000; Stopwatch timer = new Stopwatch(); if (displayText) { Console.WriteLine("Testing {0}", randomizer.GetType().Name); Console.WriteLine("--------------------------------"); } //NextWithReplacement()/1000 randomizer.Clear(); timer.Reset(); timer.Start(); for (int i = 1; i <= numIterations; i++) { randomizer.Add(i, i); } for (int i = 1; i <= numIterations / 1000; i++) { randomizer.NextWithReplacement(); } timer.Stop(); GC.Collect(); if (displayText) { Console.WriteLine("Add()x{0} + NextWithReplacement()x{1}: {2} ms", numIterations, numIterations / 1000, timer.ElapsedMilliseconds); } //NextWithReplacement() randomizer.Clear(); timer.Reset(); timer.Start(); for (int i = 1; i <= numIterations; i++) { randomizer.Add(i, i); } for (int i = 1; i <= numIterations; i++) { randomizer.NextWithReplacement(); } timer.Stop(); GC.Collect(); if (displayText) { Console.WriteLine("Add()x{0} + NextWithReplacement()x{1}: {2} ms", numIterations, numIterations, timer.ElapsedMilliseconds); } //NextWithReplacement() * 10 randomizer.Clear(); timer.Reset(); timer.Start(); for (int i = 1; i <= numIterations; i++) { randomizer.Add(i, i); } for (int i = 1; i <= 10 * numIterations; i++) { randomizer.NextWithReplacement(); } timer.Stop(); GC.Collect(); if (displayText) { Console.WriteLine("Add()x{0} + NextWithReplacement()x{1}: {2} ms", numIterations, 10 * numIterations, timer.ElapsedMilliseconds); } //NextWithReplacement() (interleaved) randomizer.Clear(); timer.Reset(); timer.Start(); for (int i = 1; i <= numIterations; i++) { randomizer.Add(i, i); randomizer.NextWithReplacement(); } timer.Stop(); GC.Collect(); if (displayText) { Console.WriteLine("( Add() + NextWithReplacement() )x{0} (interleaved): {1} ms", numIterations, timer.ElapsedMilliseconds); } //NextWithRemoval() randomizer.Clear(); timer.Reset(); timer.Start(); for (int i = 1; i <= numIterations; i++) { randomizer.Add(i, i); } for (int i = 1; i <= numIterations; i++) { randomizer.NextWithRemoval(); } timer.Stop(); GC.Collect(); if (displayText) { Console.WriteLine("Add()x{0} + NextWithRemoval()x{1}: {2} ms", numIterations, numIterations, timer.ElapsedMilliseconds); Console.WriteLine(); Console.WriteLine(); } } //end try finally { // ALWAYS set the latency mode back GCSettings.LatencyMode = oldLatencyMode; } }
private void Initialize() { _firstNameRandomizer = new StaticWeightedRandomizer <FirstName>(); _lastNameRandomizer = new StaticWeightedRandomizer <LastName>(); _ageRandomizer = new StaticWeightedRandomizer <Age>(); _raceRandomizer = new StaticWeightedRandomizer <Race>(); _genderRandomizer = new StaticWeightedRandomizer <Gender>(); _physTraitRandomizer = new StaticWeightedRandomizer <PhysicalTrait>(); _persTraitRandomizer = new StaticWeightedRandomizer <PersonalityTrait>(); _wantsRandomizer = new StaticWeightedRandomizer <Want>(); _secretsRandomizer = new StaticWeightedRandomizer <Secret>(); _hooksRandomizer = new StaticWeightedRandomizer <Hook>(); _bondsRandomizer = new StaticWeightedRandomizer <Bond>(); _itemRandomizer = new StaticWeightedRandomizer <Item>(); _alignmentRandomizer = new StaticWeightedRandomizer <Alignment>(); _occupationRandomizer = new StaticWeightedRandomizer <Occupation>(); foreach (var fn in _values.FirstNames) { _firstNameRandomizer.Add(fn, fn.Weight); } foreach (var ln in _values.LastNames) { _lastNameRandomizer.Add(ln, ln.Weight); } foreach (var a in _values.Ages) { _ageRandomizer.Add(a, a.Weight); } foreach (var r in _values.Races) { _raceRandomizer.Add(r, r.Weight); } foreach (var g in _values.Genders) { _genderRandomizer.Add(g, g.Weight); } foreach (var phys in _values.PhysicalTraits) { _physTraitRandomizer.Add(phys, phys.Weight); } foreach (var pers in _values.PersonalityTraits) { _persTraitRandomizer.Add(pers, pers.Weight); } foreach (var w in _values.Wants) { _wantsRandomizer.Add(w, w.Weight); } foreach (var s in _values.Secrets) { _secretsRandomizer.Add(s, s.Weight); } foreach (var h in _values.Hooks) { _hooksRandomizer.Add(h, h.Weight); } foreach (var b in _values.Bonds) { _bondsRandomizer.Add(b, b.Weight); } foreach (var i in _values.Items) { _itemRandomizer.Add(i, i.Weight); } foreach (var a in _values.Alignments) { _alignmentRandomizer.Add(a, a.Weight); } foreach (var o in _values.Occupations) { _occupationRandomizer.Add(o, o.Weight); } }
public void Setup() { Target = CreateTarget <int>(); }