void DetectNewScreens() { foundScreens.Clear(); foreach (var screen in GetScreens()) { if (hookedScreens.Contains(screen)) { foundScreens.Add(screen); if (screen.GetType() == GamePlayScreenType) { itemLocationMap = ((GameplayScreen)hookedScreens[screen]).ItemLocations; } continue; } if (!Screen.RegisteredTypes.TryGetValue(screen.GetType(), out var handlerType)) { continue; } var screenHandler = (Screen)Activator.CreateInstance(handlerType, this, screen); hookedScreens.Add(screenHandler); foundScreens.Add(screen); screenHandler.Initialize(itemLocationMap, (GCM)Dynamic.GCM); } if (foundScreens.Count != hookedScreens.Count) { hookedScreens.Filter(foundScreens, s => s.Unload()); } }
public void Should_generate_a_hundert_beatable_seeds() { var seeds = new LookupDictionary <Seed, GenerationResult>(r => r.Seed); while (seeds.Count != 100) { var result = Randomizer.Generate(FillingMethod.Random, SeedOptions.None); if (!seeds.Contains(result.Seed)) { seeds.Add(result); } } var longestGeneration = seeds.OrderByDescending(s => s.Elapsed).First(); var validSeeds = string.Join("\n", seeds.Select(s => s.Seed)); Assert.That(seeds, Is.Not.Empty); }
void MarkAvailableItemLocations() { preservedRoomStates = new LookupDictionary <Roomkey, MinimapRoomState>(r => r.RoomKey); var visableAreas = (List <EMinimapEraType>)Dynamic._availableEras; foreach (var itemLocation in GetAvailableItemLocations()) { var roomKey = new Roomkey(itemLocation.Key.LevelId, itemLocation.Key.RoomId); //somehow they keys dont match if we use itemLocation.Key directly if (preservedRoomStates.Contains(roomKey)) { continue; } var room = GetRoom(roomKey); MakeSureEraIsVisable(visableAreas, room); preservedRoomStates.Add(new MinimapRoomState(roomKey, room)); foreach (var block in room.Blocks.Values) { if (block.IsSolidWall) { continue; } block.IsKnown = true; block.IsVisited = true; if (block.IsTransition || block.IsCheckpoint || block.IsBoss) { block.IsTransition = false; block.IsCheckpoint = false; block.RoomColor = EMinimapRoomColor.Yellow; } else { block.RoomColor = EMinimapRoomColor.Orange; } } } }