public void ClearEvents() { //loop through every event and unsubscribe the events if (LevelGeneration != null) { foreach (var eventDelegate in LevelGeneration.GetInvocationList()) { LevelGeneration -= (eventDelegate as EventHandler); } } if (LevelBaking != null) { foreach (var eventDelegate in LevelBaking.GetInvocationList()) { LevelBaking -= (eventDelegate as EventHandler); } } if (LevelPopulation != null) { foreach (var eventDelegate in LevelPopulation.GetInvocationList()) { LevelPopulation -= (eventDelegate as EventHandler); } } if (PlayerPopulation != null) { foreach (var eventDelegate in PlayerPopulation.GetInvocationList()) { PlayerPopulation -= (eventDelegate as EventHandler); } } if (PostPlayer != null) { foreach (var eventDelegate in PostPlayer.GetInvocationList()) { PostPlayer -= (eventDelegate as EventHandler); } } if (FinalizeObjectPools != null) { foreach (var eventDelegate in FinalizeObjectPools.GetInvocationList()) { FinalizeObjectPools -= (eventDelegate as EventHandler); } } if (FinalStep != null) { foreach (var eventDelegate in FinalStep.GetInvocationList()) { FinalStep -= (eventDelegate as EventHandler); } } }
/// <inheritdoc /> protected override async Task <Result <T, IError> > Run( IStateMonad stateMonad, CancellationToken cancellationToken) { foreach (var step in InitialSteps) { var r = await step.Run(stateMonad, cancellationToken); if (r.IsFailure) { return(r.ConvertFailure <T>()); } } var finalResult = await FinalStep.Run(stateMonad, cancellationToken); return(finalResult); }