コード例 #1
0
        public void UnderlyingClassicChunkTest()
        {
            const int IdGrass = 2;

            var baseChunk = ClassicChunk.CreateEmpty();

            baseChunk.SetBlock(4, 4, 4, new ClassicBlock(IdGrass));
            var dispatcher = new BlockFactoryDispatcher(null);

            dispatcher.AddDispatcherFromAssembly(typeof(BlockFactoryDispatcher).Assembly);

            var chunk1 = new Chunk(baseChunk, AccessMode.Write, dispatcher);

            Assert.IsTrue(chunk1.GetBlock(4, 4, 5) is Air);
            Assert.IsTrue(chunk1.GetBlock(4, 4, 4) is Grass);

            var blocks = chunk1.AllBlocks().ToArray();

            Assert.AreEqual(blocks.Length, 16 * 16 * 16);
            Assert.AreEqual(blocks[0].Block, blocks[blocks.Length - 1].Block);

            foreach (var it in chunk1.AllBlocks((index, name) => index == IdGrass))
            {
                Assert.AreEqual(it.X, 4);
                Assert.AreEqual(it.Y, 4);
                Assert.AreEqual(it.Z, 4);
                Assert.IsTrue(it.Block is Grass);
            }

            Assert.DoesNotThrow(() => chunk1.SetBlock(7, 7, 7, SimpleBlocks.Grass));
            Assert.DoesNotThrow(() => chunk1.SaveToLowLevelStorage());

            Assert.AreEqual(baseChunk.GetBlock(7, 7, 7).Id, IdGrass);
        }
コード例 #2
0
        public void SimpleClassicChunkSLTest()
        {
            var region = (RegionFile)Activator.CreateInstance(typeof(RegionFile), true);
            var dict   = (Dictionary <int, LowLevelChunk>)(typeof(RegionFile)
                                                           .GetField("_cachedChunks", BindingFlags.Instance | BindingFlags.NonPublic)
                                                           .GetValue(region));

            var chunk = ClassicChunk.CreateEmpty();

            chunk.SetBlock(1, 1, 1, new ClassicBlock(700, 14));
            chunk.CommitChanges();
            dict[5] = chunk;

            using (var stream = new MemoryStream())
            {
                Assert.DoesNotThrow(() => region.SaveToStream(stream));
                stream.Seek(0, SeekOrigin.Begin);

                var region2 = RegionFile.CreateFromStream(stream, 0, 0, RegionLoadApproach.InMemory);
                var block   = (region2.GetChunkData(5) as ClassicChunk).GetBlock(1, 1, 1);
                Assert.AreEqual(block.Id, 700);
                Assert.AreEqual(block.Data, 14);
            }
        }
コード例 #3
0
 public void GetSetTest()
 {
     var chunk  = ClassicChunk.CreateEmpty();
     var blocks = new (int X, int Y, int Z, ClassicBlock Block)[] {