public abstract Local2Global ( int CX, int CZ, Vector3d local ) : Vector3d | ||
CX | int | |
CZ | int | |
local | Vector3d | |
return | Vector3d |
/// <summary> /// Generate a chunk /// </summary> /// <param name="CX">Chunk X</param> /// <param name="CZ">Chunk Z</param> /// <param name="b">Blocks</param> /// <param name="mh">Map handler</param> /// <param name="r">Random</param> /// <returns></returns> public static bool MakeDungeon(int CX, int CZ, ref byte[, ,] b, ref IMapHandler mh, Random r) { int CH = (int)mh.ChunkScale.X; int CV = (int)mh.ChunkScale.Y; int x = r.Next(0 + DungeonSizeX - 1, CH - DungeonSizeX + 1); int y = r.Next(0 + DungeonSizeY - 1, CV - DungeonSizeY + 1); int z = r.Next(0 + DungeonSizeZ - 1, CH - DungeonSizeZ + 1); Vector3i position = mh.Local2Global(CX, CZ, new Vector3i(x, y, z)); //Console.WriteLine("Creating dungeon in {0}...", position); if (!CheckForDungeonSpace(b, x, y, z)) { return(false); } Vector3i size = new Vector3i((DungeonSizeX * 2) + 1, (DungeonSizeY * 2) + 1, (DungeonSizeZ * 2) + 1); Vector3i sizeAir = new Vector3i(size.X - 1, size.Y - 1, size.Z - 1); FillRect(ref b, 48, position, size); // Do walls (RANDOMIZE) FillRect(ref b, 0, position, sizeAir); // Add air MobSpawner ms = new MobSpawner(); ms.Delay = 20; ms.EntityId = Entity.GetRandomMonsterID(r); ms.Pos = mh.Local2Global(CX, CZ, new Vector3i(x, y - DungeonSizeZ + 1, z)); ms.UUID = Guid.NewGuid(); mh.SetTileEntity(ms); b[x, y - DungeonSizeZ + 1, z] = 52; return(true); }
/// <summary> /// Generate a chunk /// </summary> /// <param name="CX">Chunk X</param> /// <param name="CZ">Chunk Z</param> /// <param name="b">Blocks</param> /// <param name="mh">Map handler</param> /// <param name="r">Random</param> /// <returns></returns> public static bool MakeDungeon(int CX, int CZ, ref byte[, ,] b, ref IMapHandler mh, Random r) { int CH = (int)mh.ChunkScale.X; int CV = (int)mh.ChunkScale.Y; int x = r.Next(0+DungeonSizeX-1, CH-DungeonSizeX+1); int y = r.Next(0+DungeonSizeY-1, CV-DungeonSizeY+1); int z = r.Next(0+DungeonSizeZ-1, CH-DungeonSizeZ+1); Vector3i position = mh.Local2Global(CX,CZ,new Vector3i(x,y,z)); //Console.WriteLine("Creating dungeon in {0}...", position); if (!CheckForDungeonSpace(b, x, y, z)) return false; Vector3i size = new Vector3i((DungeonSizeX*2)+1,(DungeonSizeY*2)+1,(DungeonSizeZ*2)+1); Vector3i sizeAir = new Vector3i(size.X-1,size.Y-1,size.Z-1); FillRect(ref b, 48, position, size); // Do walls (RANDOMIZE) FillRect(ref b, 0, position, sizeAir); // Add air MobSpawner ms = new MobSpawner(); ms.Delay=20; ms.EntityId=Entity.GetRandomMonsterID(r); ms.Pos = mh.Local2Global(CX,CZ,new Vector3i(x, y - DungeonSizeZ + 1, z)); ms.UUID = Guid.NewGuid(); mh.SetTileEntity(ms); b[x, y - DungeonSizeZ + 1, z] = 52; return true; }