47 lines
1.5 KiB
C#
47 lines
1.5 KiB
C#
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using Cysharp.Threading.Tasks;
|
|
|
|
namespace Code.App.Loading
|
|
{
|
|
public class LoadingManager : ILoadingManager
|
|
{
|
|
public event ILoadingManager.OnLoadingDelegate OnLoadingStarted;
|
|
public event ILoadingManager.OnLoadingDelegate OnLoadingEnded;
|
|
|
|
private List<LoadingWork> _loadingThings = new();
|
|
public ReadOnlyCollection<LoadingWork> LoadingThings => _loadingThings.AsReadOnly();
|
|
|
|
public LoadingManager RegisterLoading(LoadingWork loadingThingName)
|
|
{
|
|
if(_loadingThings.Count == 0) OnLoadingStarted?.Invoke();
|
|
|
|
_loadingThings.Add(loadingThingName);
|
|
|
|
return this;
|
|
}
|
|
public LoadingManager UnregisterLoading(LoadingWork loadingThingName)
|
|
{
|
|
_loadingThings.Remove(loadingThingName);
|
|
|
|
if(_loadingThings.Count == 0) OnLoadingEnded?.Invoke();
|
|
|
|
return this;
|
|
}
|
|
|
|
}
|
|
|
|
// public static class LoadingManagerExtensions
|
|
// {
|
|
// public static LoadingManager AddLoading(this LoadingManager manager, LoadingWork loadingThingName)
|
|
// {
|
|
// manager.RegisterLoading(loadingThingName);
|
|
// return manager;
|
|
// }
|
|
// public static LoadingManager RemoveLoading(this LoadingManager manager, LoadingWork loadingThingName)
|
|
// {
|
|
// manager.UnregisterLoading(loadingThingName);
|
|
// return manager;
|
|
// }
|
|
// }
|
|
} |