diff --git a/Hcs.WebApp/BackgroundServices/CampaignManagers/ManagerBase.cs b/Hcs.WebApp/BackgroundServices/CampaignManagers/ManagerBase.cs index cd703d4..f599395 100644 --- a/Hcs.WebApp/BackgroundServices/CampaignManagers/ManagerBase.cs +++ b/Hcs.WebApp/BackgroundServices/CampaignManagers/ManagerBase.cs @@ -15,16 +15,33 @@ namespace Hcs.WebApp.BackgroundServices.CampaignManagers protected readonly ResultWaitState resultWaitState = resultWaitState; protected readonly Campaign campaign = campaign; + private IManager.ManagerState state; private HeadquartersService? headquartersService; + public Campaign Campaign => campaign; + + public IManager.ManagerState State + { + get => state; + set + { + if (state != value) + { + state = value; + + if (state == IManager.ManagerState.Started) + { + OnCampaignStarted?.Invoke(campaign); + } + } + } + } + protected HeadquartersService HeadquartersService => headquartersService ??= scope.ServiceProvider.GetRequiredService(); protected abstract int StepCount { get; } - public Campaign Campaign => campaign; - - public IManager.ManagerState State { get; protected set; } = IManager.ManagerState.Created; - + public event Action OnCampaignStarted; public event Action? OnCampaignProgressStep; public abstract Task ProcessAsync();