diff --git a/Assets/Editor/Settings/EditorSettingsProvider.cs b/Assets/Editor/Settings/EditorSettingsProvider.cs index f469ba1c..5efef722 100644 --- a/Assets/Editor/Settings/EditorSettingsProvider.cs +++ b/Assets/Editor/Settings/EditorSettingsProvider.cs @@ -30,7 +30,8 @@ namespace AppleHills.Editor GetPlayerStopDistance, GetPlayerStopDistanceDirectInteraction, GetPuzzlePromptRange, - GetWeakPointExplosionRadius + GetWeakPointExplosionRadius, + GetInteractionOutlineColors ); // Subscribe to asset changes to auto-refresh when settings are modified @@ -74,7 +75,8 @@ namespace AppleHills.Editor GetPlayerStopDistance, GetPlayerStopDistanceDirectInteraction, GetPuzzlePromptRange, - GetWeakPointExplosionRadius + GetWeakPointExplosionRadius, + GetInteractionOutlineColors ); Logging.Debug("Editor settings loaded for Scene View use"); @@ -108,6 +110,12 @@ namespace AppleHills.Editor return _fortFightSettings?.WeakPointExplosionRadius ?? 2.5f; } + // Interaction Settings delegate methods + private static System.Collections.Generic.List GetInteractionOutlineColors() + { + return _interactionSettings?.InteractionOutlineColors; + } + // Other utility methods public static T GetSettings() where T : BaseSettings { diff --git a/Assets/Scripts/Core/SettingsAccess.cs b/Assets/Scripts/Core/SettingsAccess.cs index e88dc0cf..2e80766b 100644 --- a/Assets/Scripts/Core/SettingsAccess.cs +++ b/Assets/Scripts/Core/SettingsAccess.cs @@ -10,19 +10,22 @@ namespace AppleHills { // Delegate type for editor-only settings providers public delegate float GetSettingsValueDelegate(); + public delegate System.Collections.Generic.List GetOutlineColorsDelegate(); // Static delegates that will be set by editor code private static GetSettingsValueDelegate getPlayerStopDistanceProvider; private static GetSettingsValueDelegate getPlayerStopDistanceDirectInteractionProvider; private static GetSettingsValueDelegate getPuzzlePromptRangeProvider; private static GetSettingsValueDelegate getWeakPointExplosionRadiusProvider; + private static GetOutlineColorsDelegate getInteractionOutlineColorsProvider; // Editor-only method to set up providers - will be called from editor code public static void SetupEditorProviders( GetSettingsValueDelegate playerStopDistanceProvider, GetSettingsValueDelegate playerStopDistanceDirectInteractionProvider, GetSettingsValueDelegate puzzlePromptRangeProvider, - GetSettingsValueDelegate weakPointExplosionRadiusProvider) + GetSettingsValueDelegate weakPointExplosionRadiusProvider, + GetOutlineColorsDelegate interactionOutlineColorsProvider) { #if UNITY_EDITOR if (!Application.isPlaying) @@ -31,6 +34,7 @@ namespace AppleHills getPlayerStopDistanceDirectInteractionProvider = playerStopDistanceDirectInteractionProvider; getPuzzlePromptRangeProvider = puzzlePromptRangeProvider; getWeakPointExplosionRadiusProvider = weakPointExplosionRadiusProvider; + getInteractionOutlineColorsProvider = interactionOutlineColorsProvider; } #endif } @@ -89,6 +93,20 @@ namespace AppleHills return GameManager.Instance.WeakPointExplosionRadius; } + // Interaction Settings + public static System.Collections.Generic.List GetInteractionOutlineColors() + { + #if UNITY_EDITOR + if (!Application.isPlaying && getInteractionOutlineColorsProvider != null) + { + return getInteractionOutlineColorsProvider(); + } + #endif + + var settings = GameManager.GetSettingsObject(); + return settings?.InteractionOutlineColors; + } + // Add more methods as needed for other settings ///