feature: first
All checks were successful
Build / Compute Version (push) Successful in 4s
Build / Build Nuget package (CringeBootstrap.Abstractions) (push) Successful in 2m47s
Build / Build Nuget package (CringePlugins) (push) Successful in 5m31s
Build / Build Nuget package (NuGet) (push) Successful in 6m2s
Build / Build Nuget package (SharedCringe) (push) Successful in 7m25s
Build / Build Launcher (push) Successful in 9m11s
All checks were successful
Build / Compute Version (push) Successful in 4s
Build / Build Nuget package (CringeBootstrap.Abstractions) (push) Successful in 2m47s
Build / Build Nuget package (CringePlugins) (push) Successful in 5m31s
Build / Build Nuget package (NuGet) (push) Successful in 6m2s
Build / Build Nuget package (SharedCringe) (push) Successful in 7m25s
Build / Build Launcher (push) Successful in 9m11s
This commit is contained in:
13
CringePlugins/Splash/ISplashProgress.cs
Normal file
13
CringePlugins/Splash/ISplashProgress.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
namespace CringePlugins.Splash;
|
||||
|
||||
public interface ISplashProgress : IProgress<ProgressInfo>, IProgress<float>
|
||||
{
|
||||
void DefineStage(ILoadingStage stage);
|
||||
void DefineStepsCount(int count);
|
||||
}
|
||||
|
||||
public interface ILoadingStage
|
||||
{
|
||||
string Name { get; }
|
||||
ValueTask Load(ISplashProgress progress);
|
||||
}
|
9
CringePlugins/Splash/ProgressInfo.cs
Normal file
9
CringePlugins/Splash/ProgressInfo.cs
Normal file
@@ -0,0 +1,9 @@
|
||||
namespace CringePlugins.Splash;
|
||||
|
||||
public record ProgressInfo(string Text)
|
||||
{
|
||||
public static implicit operator ProgressInfo(string s) => new(s);
|
||||
public static implicit operator ProgressInfo((string, float) s) => new PercentProgressInfo(s.Item1, s.Item2);
|
||||
}
|
||||
|
||||
public record PercentProgressInfo(string Text, float Percent = 0) : ProgressInfo(Text);
|
29
CringePlugins/Splash/Splash.cs
Normal file
29
CringePlugins/Splash/Splash.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
namespace CringePlugins.Splash;
|
||||
|
||||
public class Splash : ISplashProgress
|
||||
{
|
||||
private readonly List<ILoadingStage> _loadingStages = [];
|
||||
|
||||
public void Report(ProgressInfo value)
|
||||
{
|
||||
}
|
||||
|
||||
public void Report(float value)
|
||||
{
|
||||
}
|
||||
|
||||
public void DefineStage(ILoadingStage stage) => _loadingStages.Add(stage);
|
||||
|
||||
public void DefineStepsCount(int count)
|
||||
{
|
||||
}
|
||||
|
||||
public void ExecuteLoadingStages()
|
||||
{
|
||||
foreach (var loadingStage in _loadingStages)
|
||||
{
|
||||
// todo sync context
|
||||
loadingStage.Load(this).AsTask().GetAwaiter().GetResult();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user