public static void CreateDungeons()
    {
        dungeonDictionary = new Dictionary <DungeonId, DungeonData>();

        //use this line to read from a json file
        //DungeonMap map = Utils.LoadJsonFromPath<DungeonMap>("data/dungeon_data");

        //instead, create the data manually
        var castle = new DungeonRow()
        {
            id = "CASTLE", bossesPerArea = 2, minibossesPerBoss = 1, battlesPerArea = 20, hpIncreasePerArea = 13, atkIncreasePerArea = 2, battleLimit = 0, areas = new string[] { "CAVERNS", "JAIL", "KITCHEN", "ARMORY", "THRONE_ROOM" }
        };
        DungeonMap map = new DungeonMap();

        map.dungeons = new DungeonRow[] { castle };

        DungeonRow  row;
        DungeonData tempDungeon;

        for (int i = 0; i < map.dungeons.Length; i++)
        {
            row = map.dungeons[i];

            DungeonId parsedType = (DungeonId)Enum.Parse(typeof(DungeonId), row.id);
            tempDungeon = new DungeonData(parsedType);

            tempDungeon.SetBattleConstraints(row.bossesPerArea, row.minibossesPerBoss, row.battlesPerArea, row.hpIncreasePerArea, row.atkIncreasePerArea, row.battleLimit);
            tempDungeon.SetAreas(row.areas);

            dungeonDictionary.Add(tempDungeon.type, tempDungeon);
        }


        areaMusicIds = new Dictionary <AdventureArea, string>();
        areaMusicIds[AdventureArea.CAVERNS]     = "stage_1";
        areaMusicIds[AdventureArea.JAIL]        = "jail";
        areaMusicIds[AdventureArea.KITCHEN]     = "kitchen";
        areaMusicIds[AdventureArea.ARMORY]      = "stage_2";
        areaMusicIds[AdventureArea.THRONE_ROOM] = "throne_room";

        areaMusicIds[AdventureArea.ARENA] = "stage_2";
    }