protected AnvilWorldProvider(string basePath, LevelInfo levelInfo, byte waterOffsetY, ConcurrentDictionary <ChunkCoordinates, ChunkColumn> chunkCache) { IsCaching = true; _basePath = basePath; _level = levelInfo; WaterOffsetY = waterOffsetY; _chunkCache = chunkCache; _isInitialized = true; _flatland = new FlatlandWorldProvider(); }
public virtual Level GetLevel(Player player, string name) { Level level = Levels.FirstOrDefault(l => l.LevelId.Equals(name, StringComparison.InvariantCultureIgnoreCase)); if (level == null) { GameMode gameMode = Config.GetProperty("GameMode", GameMode.Survival); Difficulty difficulty = Config.GetProperty("Difficulty", Difficulty.Peaceful); int viewDistance = Config.GetProperty("ViewDistance", 11); IWorldProvider worldProvider = null; switch (Config.GetProperty("WorldProvider", "flat").ToLower().Trim()) { case "flat": case "flatland": worldProvider = new FlatlandWorldProvider(); break; case "cool": worldProvider = new CoolWorldProvider(); break; case "experimental": worldProvider = new ExperimentalWorldProvider(); break; case "anvil": worldProvider = new AnvilWorldProvider(); break; default: worldProvider = new FlatlandWorldProvider(); break; } level = new Level(name, worldProvider, gameMode, difficulty, viewDistance); level.Initialize(); Levels.Add(level); OnLevelCreated(new LevelEventArgs(null, level)); } return level; }
public AnvilWorldProvider() { IsCaching = true; _flatland = new FlatlandWorldProvider(); }
public void LoadFullAnvilRegionLoadTest() { int width = 32; int depth = 32; int regionX = 5; int regionZ = 24; string basePath = @"D:\Downloads\KingsLanding1"; var generator = new FlatlandWorldProvider(); Stopwatch sw = new Stopwatch(); sw.Start(); int noChunksRead = 0; for (int x = 0; x < 32; x++) { for (int z = 0; z < 32; z++) { noChunksRead++; int cx = (width*regionX) + x; int cz = (depth*regionZ) + z; ChunkCoordinates coordinates = new ChunkCoordinates(cx, cz); ChunkColumn chunk = AnvilWorldProvider.GetChunk(coordinates, basePath, generator, 30); Assert.NotNull(chunk); } } Console.WriteLine("Read {0} chunks in {1}ms", noChunksRead, sw.ElapsedMilliseconds); }
public void LoadAnvilChunkLoadTest() { int width = 32; int depth = 32; int cx = (width*4) + 3; int cz = (depth*25) + 0; ChunkCoordinates coordinates = new ChunkCoordinates(cx, cz); int rx = coordinates.X >> 5; int rz = coordinates.Z >> 5; Assert.AreEqual(4, rx); Assert.AreEqual(25, rz); string basePath = @"D:\Downloads\KingsLanding1"; var generator = new FlatlandWorldProvider(); Stopwatch sw = new Stopwatch(); sw.Start(); int iterations = 1024; for (int i = 0; i < iterations; i++) { AnvilWorldProvider.GetChunk(coordinates, basePath, generator, 30); } long ticks = sw.ElapsedTicks; long ms = sw.ElapsedMilliseconds; //Assert.Less(ticks/iterations, 100); Console.WriteLine("Read {0} chunk-columns in {1}ns ({3}ms) at a rate of {2}ns/col", iterations, ticks, ticks / iterations, ms); }