Пример #1
0
    private void GenerateDungeonFeatures(int direction)
    {
        // Generate architecture for each tree quad recursively
        ArchitectureGenerator architecture = new ArchitectureGenerator();

        architecture.GenerateArchitecture(dungeonGenerator.quadTree);

        // Generate stairs
        StairGenerator stairs = new StairGenerator();

        stairs.Generate();

        // If we cannot solve the level, we need to generate a different one
        if (!LevelIsSolvable())
        {
            Debug.LogError("Dungeon level cannot be solved. Genrating again...");
            GenerateDungeon(direction);
            return;
        }

        // Generate player
        PlayerGenerator player = new PlayerGenerator();
        Stair           stair  = direction == -1 ? grid.stairDown : grid.stairUp;

        player.GenerateAtPos(stair.x, stair.y);

        // Generate furniture
        FurnitureGenerator furniture = new FurnitureGenerator();

        furniture.Generate();

        // Generate monsters
        MonsterGenerator monsters = new MonsterGenerator();

        monsters.Generate();
        //monsters.GenerateSingle();

        // Generate chests
        ChestGenerator chests = new ChestGenerator();

        chests.Generate();

        // Generate items
        ItemGenerator items = new ItemGenerator();

        items.Generate();
    }
        void OnGUI()
        {
            EditorGUILayout.BeginVertical();
            EditorGUILayout.LabelField("Monster");
            EditorGUILayout.BeginHorizontal();
            GUILayout.Label("Begin Index");
            mMonsterGenerator.BeginIndex = EditorGUILayout.IntField(mMonsterGenerator.BeginIndex);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            GUILayout.Label("End Index");
            mMonsterGenerator.EndIndex = EditorGUILayout.IntField(mMonsterGenerator.EndIndex);
            EditorGUILayout.EndHorizontal();

            if (!mMonsterGenerator.IsGenerating)
            {
                if (GUILayout.Button("Generate"))
                {
                    mMonsterGenerator.Generate();
                }
            }
            else
            {
                mMonsterGenerator.Update();
            }

            EditorGUILayout.EndVertical();

            EditorGUILayout.BeginVertical();
            EditorGUILayout.LabelField("Player");
            if (GUILayout.Button("Generate"))
            {
                mPlayerGenerator.Generate();
            }
            EditorGUILayout.EndVertical();

            EditorGUILayout.BeginVertical();
            EditorGUILayout.LabelField("Terrain");
            if (GUILayout.Button("Generate"))
            {
                mTerrainGenerator.Generate();
            }
            EditorGUILayout.EndVertical();
        }