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)); }