diff --git a/JotunnLib/Configs/RoomConfig.cs b/JotunnLib/Configs/RoomConfig.cs
index b8a8f0e5e..f811b1a67 100644
--- a/JotunnLib/Configs/RoomConfig.cs
+++ b/JotunnLib/Configs/RoomConfig.cs
@@ -1,3 +1,4 @@
+using System;
using Jotunn.Entities;
namespace Jotunn.Configs
@@ -12,11 +13,11 @@ public class RoomConfig
/// Theme name of this room.
///
public string ThemeName { get; set; }
-
+
///
- /// of this room.
+ /// Flag indicated if this room uses a custom theme
///
- public Room.Theme Theme { get; set; }
+ public bool IsCustomTheme { get; set; }
///
/// If set to false, room will not be added to , thus
@@ -70,7 +71,6 @@ public class RoomConfig
///
public RoomConfig(Room.Theme theme)
{
- Theme = theme;
ThemeName = string.Empty;
}
@@ -80,7 +80,6 @@ public RoomConfig(Room.Theme theme)
///
public RoomConfig(string themeName)
{
- Theme = 0;
ThemeName = themeName;
}
@@ -109,19 +108,27 @@ public Room ApplyConfig(RoomConfig roomConfig)
if (roomConfig.FaceCenter != null) room.m_faceCenter = roomConfig.FaceCenter.Value;
if (roomConfig.Perimeter != null) room.m_perimeter = roomConfig.Perimeter.Value;
- // Room can be matched by either a Room.Theme flag, or a ThemeName string.
- if (roomConfig.Theme == 0)
+ if (roomConfig.IsCustomTheme)
{
- ThemeName = roomConfig.ThemeName;
- Theme = 0;
+ if (roomConfig.ThemeName != null) room.m_theme = GetRoomTheme(roomConfig.ThemeName);
}
else
{
- Theme = roomConfig.Theme;
- ThemeName = string.Empty;
+ if (roomConfig.ThemeName != null) room.m_theme = GetRoomTheme(roomConfig.ThemeName);
}
return room;
}
+
+ public Room.Theme GetRoomTheme(string roomTheme)
+ {
+ if (Enum.TryParse(roomTheme, false, out Room.Theme theme))
+ {
+ Logger.LogDebug($"Found Room Theme with name {roomTheme}");
+ return theme;
+ }
+ Logger.LogError($"Failed to find Room Theme with name {roomTheme}");
+ return Room.Theme.None;
+ }
}
}
diff --git a/JotunnLib/Entities/CustomRoom.cs b/JotunnLib/Entities/CustomRoom.cs
index cc586e92d..57931b9f0 100644
--- a/JotunnLib/Entities/CustomRoom.cs
+++ b/JotunnLib/Entities/CustomRoom.cs
@@ -103,7 +103,7 @@ public CustomRoom(AssetBundle assetBundle, string assetName, bool fixReference,
m_prefab = new SoftReference(AssetManager.Instance.AddAsset(Prefab)),
m_loadedRoom = Room,
m_enabled = Room.m_enabled,
- m_theme = GetCustomRoomTheme(roomConfig.ThemeName)
+ m_theme = GetRoomTheme(roomConfig.ThemeName)
};
}
@@ -146,7 +146,7 @@ public CustomRoom(GameObject prefab, bool fixReference, RoomConfig roomConfig) :
m_prefab = new SoftReference(AssetManager.Instance.AddAsset(Prefab)),
m_loadedRoom = Room,
m_enabled = Room.m_enabled,
- m_theme = GetCustomRoomTheme(roomConfig.ThemeName)
+ m_theme = GetRoomTheme(roomConfig.ThemeName)
};
}
@@ -160,25 +160,14 @@ public static bool IsCustomRoom(string prefabName)
return DungeonManager.Instance.Rooms.ContainsKey(prefabName);
}
- public Room.Theme GetVanillaRoomTheme(string roomTheme)
+ public Room.Theme GetRoomTheme(string roomTheme)
{
if (Enum.TryParse(roomTheme, false, out Room.Theme theme))
{
- Logger.LogDebug($"Found vanilla Room Theme with name {roomTheme}");
+ Logger.LogDebug($"Found Room Theme with name {roomTheme}");
return theme;
}
- Logger.LogError($"Failed to find vanilla Room Theme with name {roomTheme}");
- return Room.Theme.None;
- }
-
- public Room.Theme GetCustomRoomTheme(string roomTheme)
- {
- if (Enum.TryParse(roomTheme, false, out Room.Theme theme))
- {
- Logger.LogDebug($"Found custom Room Theme with name {roomTheme}");
- return theme;
- }
- Logger.LogError($"Failed to find custom Room Theme with name {roomTheme}");
+ Logger.LogError($"Failed to find Room Theme with name {roomTheme}");
return Room.Theme.None;
}
diff --git a/JotunnLib/Managers/DungeonManager.cs b/JotunnLib/Managers/DungeonManager.cs
index 91c23caf8..48eead4b3 100644
--- a/JotunnLib/Managers/DungeonManager.cs
+++ b/JotunnLib/Managers/DungeonManager.cs
@@ -324,7 +324,7 @@ private void OnDungeonGeneratorSetupAvailableRooms(DungeonGenerator self)
DungeonGenerator.m_availableRooms.AddRange(Rooms.Values
.Where(r => r.Room.m_enabled)
- .Where(r => self.m_themes.HasFlag(r.GetVanillaRoomTheme(r.ThemeName)))
+ .Where(r => self.m_themes.HasFlag(r.GetRoomTheme(r.ThemeName)))
.Select(r => r.RoomData));
}