public override Dungeon Generate(DungeonEntrance entr, GenerationRandom ran = null)
    {
        if (ran == null)
        {
            ran = new GenerationRandom(ChunkPosition.x << 16 + ChunkPosition.z);
        }


        ChunkData[,] chunks = CreateChunks();
        Vec2i         dunEntr = ChunkPosition * World.ChunkSize + new Vec2i(World.ChunkSize / 2, World.ChunkSize / 2);
        List <Entity> dunEnt  = GenerateEntities();
        DungeonBoss   dunBoss = GenerateDungeonBoss();


        return(new Dungeon(chunks, new Vec2i(5, 5), dunEntr, dunEnt, dunBoss));
    }
Esempio n. 2
0
    public Dungeon(ChunkData[,] subChunks, Vec2i subentra, Vec2i worldEntrance, List <Entity> dungeonEntity, DungeonBoss boss, SimpleDungeonKey key = null) : base(subChunks, subentra, worldEntrance)
    {
        DungeonEntities = dungeonEntity;
        Boss            = boss;
        Vec2i entranceChunk = World.GetChunkPosition(SubworldEntrance);
        int   local         = WorldObject.ObjectPositionHash(SubworldEntrance);

        if (!(subChunks[entranceChunk.x, entranceChunk.z].GetObject(SubworldEntrance.x, SubworldEntrance.z) is DungeonEntrance))
        {
            //If the entrance isn't a dungeon entrance.
            DungeonEntrance de = new CaveDungeonEntrance(subentra, this, new WorldObjectMetaData(direction: new Vec2i(0, -1)));
            SubworldChunks[entranceChunk.x, entranceChunk.z].SetObject(SubworldEntrance.x, SubworldEntrance.z, de);
        }
        Key = key;
        if (Key == null)
        {
            IsLocked = false;
        }
        else
        {
            IsLocked = true;
        }
    }