Progress Tracking
This commit is contained in:
parent
008ea2ee02
commit
b9754bc79b
@ -51,6 +51,9 @@ public class Config
|
|||||||
A = 1f
|
A = 1f
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
if (!Directory.Exists(Program.JT)) Directory.CreateDirectory(Program.JT);
|
||||||
|
if (!Directory.Exists(Program.JT + "/Updater")) Directory.CreateDirectory(Program.JT + "/Updater" );
|
||||||
|
if (!Directory.Exists(Program.JT + "/Updater/Config")) Directory.CreateDirectory(Program.JT + "/Updater/Config");
|
||||||
FileStream ms = new(Program.JT + "/Updater/Config/Settings.json", FileMode.Create);
|
FileStream ms = new(Program.JT + "/Updater/Config/Settings.json", FileMode.Create);
|
||||||
JsonSerializer.Serialize(new Utf8JsonWriter(ms),
|
JsonSerializer.Serialize(new Utf8JsonWriter(ms),
|
||||||
file,
|
file,
|
||||||
|
@ -3,9 +3,9 @@ using System.Diagnostics;
|
|||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using GraphicsManager;
|
using GraphicsManager;
|
||||||
using GraphicsManager.Enums;
|
|
||||||
using GraphicsManager.Objects;
|
using GraphicsManager.Objects;
|
||||||
using GraphicsManager.Objects.Core;
|
using GraphicsManager.Objects.Core;
|
||||||
|
using OpenTK.Mathematics;
|
||||||
using OpenTK.Windowing.Desktop;
|
using OpenTK.Windowing.Desktop;
|
||||||
|
|
||||||
namespace Updater;
|
namespace Updater;
|
||||||
@ -13,43 +13,48 @@ namespace Updater;
|
|||||||
public class NewUpdater : FPSWindow
|
public class NewUpdater : FPSWindow
|
||||||
{
|
{
|
||||||
private readonly ConfigFile cf;
|
private readonly ConfigFile cf;
|
||||||
private Texture ProgressbarTexture;
|
|
||||||
private ProgressBar TotalProgress;
|
private ProgressBar TotalProgress;
|
||||||
private Argumets Argumets;
|
private Argumets Argumets;
|
||||||
private List<ProgressBar> ProgressThreads = new();
|
private List<ProgressBar> ProgressThreads = new();
|
||||||
public FontInteraction fi;
|
|
||||||
private int WallDistance;
|
|
||||||
private readonly BackgroundWorker Download = new();
|
private readonly BackgroundWorker Download = new();
|
||||||
public NewUpdater(NativeWindowSettings nws, GameWindowSettings gws, Argumets args)
|
public NewUpdater(NativeWindowSettings nws, GameWindowSettings gws, Argumets args)
|
||||||
:base(nws, gws)
|
:base(nws, gws)
|
||||||
{
|
{
|
||||||
cf = Config.GetConfig();
|
cf = Config.GetConfig();
|
||||||
|
Size = new(cf.Scale(Size.X), cf.Scale(Size.Y));
|
||||||
Argumets = args;
|
Argumets = args;
|
||||||
fi = FontInteraction.Load(FontFamily.LoadFontFamily("Noto Sans").Result);
|
var r = FontFamily.LoadFontFamily().Result;
|
||||||
|
FontInteraction fi = FontInteraction.Load(r);
|
||||||
BackgroundColor = cf.Colors.Background.ToColor4();
|
BackgroundColor = cf.Colors.Background.ToColor4();
|
||||||
WallDistance = cf.Scale(16);
|
int WallDistance = cf.Scale(15);
|
||||||
ProgressbarTexture = TextureManager.AddTexture(File.OpenRead("/home/jacob/Pictures/Progress.png"));
|
//Texture ProgressbarTexture = TextureManager.AddTexture(File.OpenRead("/home/jacob/Pictures/Progress.png"));
|
||||||
Controls.Add(TotalProgress = new ProgressBar(ProgressbarTexture)
|
Controls.Add(TotalProgress = new ProgressBar()
|
||||||
{
|
{
|
||||||
Location = new(WallDistance, cf.Scale(70), 0),
|
Location = new(WallDistance, cf.Scale(70), 0),
|
||||||
Size = new(Size.X - WallDistance - WallDistance, cf.Scale(20)),
|
Size = new(Size.X - WallDistance - WallDistance, cf.Scale(20)),
|
||||||
BackgroundColor = cf.Colors.Progress_bars.Backcolor.ToColor4(),
|
BackgroundColor = cf.Colors.Progress_bars.Backcolor.ToColor4(),
|
||||||
ProgressColor = cf.Colors.Progress_bars.Fillcolor.ToColor4(),
|
ProgressColor = cf.Colors.Progress_bars.Fillcolor.ToColor4(),
|
||||||
ProgressValue = 25,
|
ProgressValue = 25,
|
||||||
ProgressGap = 4,
|
ProgressGap = (uint)cf.Scale(3),
|
||||||
Shader = Rectangle.DefaultAlphaShader[Context],
|
//Shader = Rectangle.DefaultAlphaShader[Context],
|
||||||
TextureDisplay = TextureDisplay.ProgressHorizontalCenter,
|
//TextureDisplay = TextureDisplay.ProgressHorizontalCenter,
|
||||||
UpdateOnDraw = true
|
UpdateOnDraw = true
|
||||||
});
|
});
|
||||||
TotalProgress.InnerShader = TotalProgress.Shader;
|
//TotalProgress.InnerShader = TotalProgress.Shader;
|
||||||
int gap = cf.Scale(15);
|
int gap = cf.Scale(10);
|
||||||
for (int i = 0; i < cf.Format.DownloadThreads; i++)
|
for (int i = 0; i < cf.Format.DownloadThreads; i++)
|
||||||
{
|
{
|
||||||
ProgressBar temp;
|
ProgressBar temp;
|
||||||
Size = new(Size.X, Size.Y + gap + TotalProgress.Size.Y);
|
Size = new(Size.X, Size.Y + gap + TotalProgress.Size.Y);
|
||||||
Controls.Add(temp = new ProgressBar(ProgressbarTexture)
|
Label l = new(fi)
|
||||||
{
|
{
|
||||||
Location = new(WallDistance, cf.Scale(70) + (TotalProgress.Size.Y * (i + 1)) + (cf.Scale(15) * (i + 1)), 0),
|
Color = Color4.Black,
|
||||||
|
Text = "Downloading bob"
|
||||||
|
};
|
||||||
|
l.Location = new(cf.Scale(5), (int)(((TotalProgress.Size.Y - l.TrueHeight) / 2) - fi.PixelHeight + l.PostiveTrueHeight), 0);
|
||||||
|
Controls.Add(temp = new ProgressBar()
|
||||||
|
{
|
||||||
|
Location = new(WallDistance, cf.Scale(70) + (TotalProgress.Size.Y * (i + 1)) + (gap * (i + 1)), 0),
|
||||||
Size = TotalProgress.Size,
|
Size = TotalProgress.Size,
|
||||||
BackgroundColor = TotalProgress.BackgroundColor,
|
BackgroundColor = TotalProgress.BackgroundColor,
|
||||||
ProgressColor = TotalProgress.ProgressColor,
|
ProgressColor = TotalProgress.ProgressColor,
|
||||||
@ -57,13 +62,15 @@ public class NewUpdater : FPSWindow
|
|||||||
ProgressGap = TotalProgress.ProgressGap,
|
ProgressGap = TotalProgress.ProgressGap,
|
||||||
Shader = TotalProgress.Shader,
|
Shader = TotalProgress.Shader,
|
||||||
TextureDisplay = TotalProgress.TextureDisplay,
|
TextureDisplay = TotalProgress.TextureDisplay,
|
||||||
UpdateOnDraw = true
|
UpdateOnDraw = true,
|
||||||
|
InnerShader = TotalProgress.InnerShader,
|
||||||
|
Tag = l
|
||||||
});
|
});
|
||||||
temp.InnerShader = TotalProgress.Shader;
|
temp.Controls.Add(l);
|
||||||
ProgressThreads.Add(temp);
|
ProgressThreads.Add(temp);
|
||||||
}
|
}
|
||||||
fi.PixelHeight = (uint)cf.Scale(15);
|
fi.PixelHeight = (uint)cf.Scale(15);
|
||||||
Download.DoWork += new DoWorkEventHandler(Download_DoWork);
|
Download.DoWork += Download_DoWork;
|
||||||
Download.RunWorkerCompleted += Download_RunWorkerCompleted;
|
Download.RunWorkerCompleted += Download_RunWorkerCompleted;
|
||||||
Download.WorkerReportsProgress = true;
|
Download.WorkerReportsProgress = true;
|
||||||
Invoke(new Action(() => { Download.RunWorkerAsync(); }));
|
Invoke(new Action(() => { Download.RunWorkerAsync(); }));
|
||||||
@ -130,11 +137,10 @@ public class NewUpdater : FPSWindow
|
|||||||
#pragma warning restore SYSLIB0014 // Type or member is obsolete
|
#pragma warning restore SYSLIB0014 // Type or member is obsolete
|
||||||
ChangeProcessText("Getting update info");
|
ChangeProcessText("Getting update info");
|
||||||
string rem = webPre.DownloadString($"https://{Program.Domain}/Updater/Files?directory={Argumets.RemoteDirectory}{Argumets.UriBranch}{Argumets.UriSeflContaind}{Argumets.UriPlatform}{Argumets.UriVersion}");
|
string rem = webPre.DownloadString($"https://{Program.Domain}/Updater/Files?directory={Argumets.RemoteDirectory}{Argumets.UriBranch}{Argumets.UriSeflContaind}{Argumets.UriPlatform}{Argumets.UriVersion}");
|
||||||
ulong realmax;
|
//string uri;
|
||||||
string uri;
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
realmax = ulong.Parse(webPre.DownloadString($"https://{Program.Domain}/Updater/GetSize?directory={Argumets.RemoteDirectory}{Argumets.UriBranch}{Argumets.UriSeflContaind}{Argumets.UriPlatform}{Argumets.UriVersion}"));
|
ulong realmax = ulong.Parse(webPre.DownloadString($"https://{Program.Domain}/Updater/GetSize?directory={Argumets.RemoteDirectory}{Argumets.UriBranch}{Argumets.UriSeflContaind}{Argumets.UriPlatform}{Argumets.UriVersion}"));
|
||||||
TotalProgress.MaxProgressValue = realmax;
|
TotalProgress.MaxProgressValue = realmax;
|
||||||
Console.WriteLine(TotalProgress.MaxProgressValue);
|
Console.WriteLine(TotalProgress.MaxProgressValue);
|
||||||
//queue.Enqueue(new Action(() => { if (Total_Downloaded is not null) Total_Downloaded.Text = TotalDownloadAmountNeat(realmax); }));
|
//queue.Enqueue(new Action(() => { if (Total_Downloaded is not null) Total_Downloaded.Text = TotalDownloadAmountNeat(realmax); }));
|
||||||
@ -155,8 +161,7 @@ public class NewUpdater : FPSWindow
|
|||||||
#pragma warning restore SYSLIB0014 // Type or member is obsolete
|
#pragma warning restore SYSLIB0014 // Type or member is obsolete
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(file)) return;
|
if (string.IsNullOrEmpty(file)) return;
|
||||||
Console.WriteLine(file);
|
string uri = $"https://{Program.Domain}/Updater/GetFileSize?directory={Argumets.RemoteDirectory}{Argumets.UriBranch}{Argumets.UriVersion}{Argumets.UriSeflContaind}{Argumets.UriPlatform}&file={file}";
|
||||||
uri = $"https://{Program.Domain}/Updater/GetFileSize?directory={Argumets.RemoteDirectory}{Argumets.UriBranch}{Argumets.UriVersion}{Argumets.UriSeflContaind}{Argumets.UriPlatform}&file={file}";
|
|
||||||
Uri u = new($"https://{Program.Domain}/Updater/GetFile?directory={Argumets.RemoteDirectory}{Argumets.UriBranch}{Argumets.UriVersion}{Argumets.UriSeflContaind}{Argumets.UriPlatform}&file={file}");
|
Uri u = new($"https://{Program.Domain}/Updater/GetFile?directory={Argumets.RemoteDirectory}{Argumets.UriBranch}{Argumets.UriVersion}{Argumets.UriSeflContaind}{Argumets.UriPlatform}&file={file}");
|
||||||
Console.WriteLine(file);
|
Console.WriteLine(file);
|
||||||
Console.WriteLine(uri);
|
Console.WriteLine(uri);
|
||||||
@ -217,7 +222,12 @@ public class NewUpdater : FPSWindow
|
|||||||
TotalProgress.ProgressValue += (ulong)args.BytesReceived - pb.ProgressValue;
|
TotalProgress.ProgressValue += (ulong)args.BytesReceived - pb.ProgressValue;
|
||||||
pb.ProgressValue = (ulong)args.BytesReceived;
|
pb.ProgressValue = (ulong)args.BytesReceived;
|
||||||
};
|
};
|
||||||
ChangeProcessText($"Downloading {temp[^1]}");
|
string s = $"Downloading {temp[^1]}";
|
||||||
|
ChangeProcessText(s);
|
||||||
|
if (pb.Tag is Label l && temp[^1] == "file2.txt")
|
||||||
|
{
|
||||||
|
l.Text = s;
|
||||||
|
}
|
||||||
if (Argumets.Updater is null)
|
if (Argumets.Updater is null)
|
||||||
{
|
{
|
||||||
web.DownloadFileTaskAsync(u, Argumets.LocalDirectory + file).Wait();
|
web.DownloadFileTaskAsync(u, Argumets.LocalDirectory + file).Wait();
|
||||||
|
@ -45,8 +45,8 @@ void main()
|
|||||||
{
|
{
|
||||||
this.Text = Text;
|
this.Text = Text;
|
||||||
this.PixelHeight = PixelHeight;
|
this.PixelHeight = PixelHeight;
|
||||||
this.X = FloatToInt(x, StartGUI.Width);
|
this.X = FloatToInt(x, 1);
|
||||||
this.Y = FloatToInt(y, StartGUI.Height, true);
|
this.Y = FloatToInt(y, 1, true);
|
||||||
this.Scale = scale;
|
this.Scale = scale;
|
||||||
this.DIR = dir;
|
this.DIR = dir;
|
||||||
this.Color = col;
|
this.Color = col;
|
||||||
@ -190,8 +190,8 @@ void main()
|
|||||||
Shader.Use();
|
Shader.Use();
|
||||||
GL.Enable(EnableCap.Blend);
|
GL.Enable(EnableCap.Blend);
|
||||||
GL.Uniform4(2, Color);
|
GL.Uniform4(2, Color);
|
||||||
_ = Matrix4.CreateScale(new Vector3(1f / StartGUI.Width, 1f / StartGUI.Height, 1.0f));
|
_ = Matrix4.CreateScale(new Vector3(1f / 1, 1f / 1, 1.0f));
|
||||||
Matrix4 projectionM = Matrix4.CreateOrthographicOffCenter(0.0f, StartGUI.Width, StartGUI.Height, 0.0f, -1.0f, 1.0f);
|
Matrix4 projectionM = Matrix4.CreateOrthographicOffCenter(0.0f, 1, 1, 0.0f, -1.0f, 1.0f);
|
||||||
GL.BlendFunc(BlendingFactor.SrcAlpha, BlendingFactor.OneMinusSrcAlpha);
|
GL.BlendFunc(BlendingFactor.SrcAlpha, BlendingFactor.OneMinusSrcAlpha);
|
||||||
GL.BlendFunc(0, BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha);
|
GL.BlendFunc(0, BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha);
|
||||||
GL.UniformMatrix4(1, false, ref projectionM);
|
GL.UniformMatrix4(1, false, ref projectionM);
|
||||||
|
@ -13,8 +13,8 @@ namespace Updater;
|
|||||||
|
|
||||||
public class StartGUI
|
public class StartGUI
|
||||||
{
|
{
|
||||||
internal static int Width = 694;
|
//internal static int Width = 694;
|
||||||
internal static int Height = 216;
|
//internal static int Height = 216;
|
||||||
public static SixLabors.ImageSharp.Image<Rgba32>? Logo { get; private set; }
|
public static SixLabors.ImageSharp.Image<Rgba32>? Logo { get; private set; }
|
||||||
static readonly NativeWindowSettings Settings = new()
|
static readonly NativeWindowSettings Settings = new()
|
||||||
{
|
{
|
||||||
@ -22,6 +22,7 @@ public class StartGUI
|
|||||||
WindowBorder = WindowBorder.Fixed,
|
WindowBorder = WindowBorder.Fixed,
|
||||||
APIVersion = new Version(3, 2),
|
APIVersion = new Version(3, 2),
|
||||||
StartFocused = true,
|
StartFocused = true,
|
||||||
|
Size = new(694, 105)
|
||||||
};
|
};
|
||||||
|
|
||||||
private static readonly GameWindowSettings GameWindowSettings = new()
|
private static readonly GameWindowSettings GameWindowSettings = new()
|
||||||
@ -43,7 +44,7 @@ public class StartGUI
|
|||||||
/// <param name="args"></param>
|
/// <param name="args"></param>
|
||||||
internal static int Main(Argumets args)
|
internal static int Main(Argumets args)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
var mmm = Monitors.GetMonitors();
|
var mmm = Monitors.GetMonitors();
|
||||||
if (mmm is not null && mmm.Any())
|
if (mmm is not null && mmm.Any())
|
||||||
{
|
{
|
||||||
@ -56,8 +57,8 @@ public class StartGUI
|
|||||||
Height = temph - 30;
|
Height = temph - 30;
|
||||||
// Settings.CurrentMonitor = mi.Handle;
|
// Settings.CurrentMonitor = mi.Handle;
|
||||||
}
|
}
|
||||||
Settings.Size = new Vector2i(Width, Height);
|
//Settings.Size = new Vector2i(Width, Height);
|
||||||
|
*/
|
||||||
Image<Rgba32> Logo = SixLabors.ImageSharp.Image.Load<Rgba32>(Tools.GetResourceStream(Assembly.GetExecutingAssembly(), "Updater.Resource.Logo.png"));
|
Image<Rgba32> Logo = SixLabors.ImageSharp.Image.Load<Rgba32>(Tools.GetResourceStream(Assembly.GetExecutingAssembly(), "Updater.Resource.Logo.png"));
|
||||||
Logo.DangerousTryGetSinglePixelMemory(out Memory<Rgba32> m);
|
Logo.DangerousTryGetSinglePixelMemory(out Memory<Rgba32> m);
|
||||||
byte[] pixels = new byte[4 * Logo.Width * Logo.Height];
|
byte[] pixels = new byte[4 * Logo.Width * Logo.Height];
|
||||||
|
Loading…
Reference in New Issue
Block a user