using BriarQueen.Data.Identifiers; using BriarQueen.Framework.Coordinators.Events; using BriarQueen.Framework.Events.Save; using BriarQueen.Framework.Events.UI; using BriarQueen.Framework.Managers.IO; using BriarQueen.Framework.Services.Settings; using VContainer; namespace BriarQueen.Framework.Services.Tutorials { public class TutorialService { private readonly EventCoordinator _eventCoordinator; private readonly SettingsService _settingsService; private readonly SaveManager _saveManager; [Inject] public TutorialService( EventCoordinator eventCoordinator, SettingsService settingsService, SaveManager saveManager) { _eventCoordinator = eventCoordinator; _settingsService = settingsService; _saveManager = saveManager; } public void DisplayTutorial(TutorialPopupID tutorialPopupID) { var save = _saveManager.CurrentSave; var tutorialVars = save?.PersistentVariables?.TutorialPopupVariables; if (tutorialVars == null) return; if (tutorialVars.HasBeenDisplayed(tutorialPopupID)) return; tutorialVars.MarkDisplayed(tutorialPopupID); if (_settingsService.AreTutorialsEnabled()) _eventCoordinator.Publish(new DisplayTutorialPopupEvent(tutorialPopupID)); _eventCoordinator.PublishImmediate(new RequestGameSaveEvent()); } } }