Exemple #1
0
    bool ConstructFirstRoom(JAreaConfig areaConfig)
    {
        JAreaConfig.JRoomConfig room = null;
        switch (m_LevelData.levelType)
        {
            case LevelType.Normal:
                room = GetRoomConfig(RoomType.StartRoom);
                break;
            case LevelType.Practice:
                room = GetRoomConfig(RoomType.PracticeRoom);
                break;
            case LevelType.PreCombat:
                room = GetRoomConfig(RoomType.PreCombatRoom);
                break;
        }

        if (room == null)
        {
            Debug.LogError("找不到开始的房间");
            return false;
        }
        else
        {
            AddRoomConstructorData(0, room, true);
            return true;
        }
    }
Exemple #2
0
 void GenerateRoomsFromRoomType(JAreaConfig.JRandomRoomTypeConfig[] roomTypeConfigs, System.Random random)
 {
     if (roomTypeConfigs != null)
     {
         bool firstTime = true;
         while (true)
         {
             foreach (JAreaConfig.JRandomRoomTypeConfig config in roomTypeConfigs)
             {
                 int count = 1;
                 if (config.count != null)
                 {
                     count = config.count.GetValue(random);
                 }
                 for (int i = 0; i < count; i++)
                 {
                     JAreaConfig.JRoomConfig roomConfig = JAreaConfig.JRoomConfig.CreateFromType(config, random);
                     m_TempRoomConfig.Add(roomConfig);
                     //保证总房间的数量不能小于总深度
                     if (!firstTime && m_TempRoomConfig.Count >= deep)
                     {
                         break;
                     }
                 }
             }
             firstTime = false;
             if (m_TempRoomConfig.Count >= deep)
             {
                 break;
             }
         }
     }
 }
Exemple #3
0
 void Initialize(int index, int deep, JAreaConfig.JRoomConfig config)
 {
     this.index  = index;
     this.deep   = deep;
     roomType    = config.roomType;
     contentName = config.content;
 }
Exemple #4
0
    public static RoomData Create(int index, int deep, JAreaConfig.JRoomConfig config)
    {
        RoomData data = new RoomData();

        data.Initialize(index, deep, config);
        return(data);
    }
Exemple #5
0
 void AddRoomConstructorData(int deep, JAreaConfig.JRoomConfig roomConfig, bool removeConfig)
 {
     RoomData roomData = RoomData.Create(m_IndexCounter++, deep, roomConfig);
     roomDatas.Add(roomData);
     if (removeConfig)
     {
         m_TempRoomConfig.Remove(roomConfig);
     }
 }
Exemple #6
0
 bool ConstructLastRoom(JAreaConfig areaConfig)
 {
     if (m_LevelData.levelType == LevelType.Normal)
     {
         JAreaConfig.JRoomConfig roomConfig = GetRoomConfig(RoomType.BossRoom);
         if (roomConfig == null)
         {
             Debug.LogError("找不到boss房间");
             return false;
         }
         else
         {
             AddRoomConstructorData(deep, roomConfig, true);
             return true;
         }
     }
     else
     {
         return true;
     }
 }
Exemple #7
0
 bool ConstructRoom(JAreaConfig areaConfig)
 {
     if (ConstructFirstRoom(areaConfig) && ConstructLastRoom(areaConfig))
     {
         if (m_TempRoomConfig.Count > 0)
         {
             List<int> roomIndexList = Untility.Tool.CreateRandomList(0, m_TempRoomConfig.Count - 1);
             int curDeep = 1;
             foreach (int index in roomIndexList)
             {
                 JAreaConfig.JRoomConfig roomConfig = m_TempRoomConfig[index];
                 AddRoomConstructorData(curDeep++, roomConfig, false);
                 curDeep = curDeep > deep - 1 ? 1 : curDeep;
             }
             m_TempRoomConfig.Clear();
         }
         return true;
     }
     else
     {
         return false;
     }
 }