using BriarQueen.Framework.Coordinators.Events; using BriarQueen.Framework.Managers.Assets; using BriarQueen.Framework.Managers.Audio; using BriarQueen.Framework.Managers.IO; using BriarQueen.Framework.Registries; using BriarQueen.Framework.Services.Destruction; using Cysharp.Threading.Tasks; using UnityEngine; using VContainer; namespace BriarQueen.Framework.Services.Puzzles.Base { public abstract class BasePuzzle : MonoBehaviour { protected AddressableManager AddressableManager; protected AssetRegistry AssetRegistry; protected AudioManager AudioManager; protected DestructionService DestructionService; protected EventCoordinator EventCoordinator; protected ItemRegistry ItemRegistry; protected PuzzleService PuzzleService; protected SaveManager SaveManager; public abstract string PuzzleID { get; } public abstract UniTask CompletePuzzle(); public virtual UniTask PostLoad() { return UniTask.CompletedTask; } public virtual UniTask PreUnload() { return UniTask.CompletedTask; } [Inject] public void Construct(EventCoordinator eventCoordinator, AudioManager audioManager, SaveManager saveManager, ItemRegistry itemRegistry, AddressableManager addressableManager, AssetRegistry assetRegistry, PuzzleService puzzleService, DestructionService destructionService) { EventCoordinator = eventCoordinator; AudioManager = audioManager; SaveManager = saveManager; ItemRegistry = itemRegistry; AddressableManager = addressableManager; AssetRegistry = assetRegistry; PuzzleService = puzzleService; DestructionService = destructionService; } } }