Fixed a loading bar issue (#19)
This commit is contained in:
parent
a1d95170bd
commit
8170a86247
@ -342,6 +342,21 @@ public static class BaseModule
|
||||
});
|
||||
}
|
||||
|
||||
[Command("testing")]
|
||||
public static void Testing()
|
||||
{
|
||||
LoadingBarStart();
|
||||
int count = 0;
|
||||
for (float f = 0; f <= 1; f += 0.01f)
|
||||
{
|
||||
LoadingBarSet(f);
|
||||
count++;
|
||||
if (count % 10 == 0) Write("wowie!");
|
||||
Thread.Sleep(15);
|
||||
}
|
||||
LoadingBarEnd();
|
||||
}
|
||||
|
||||
[Command("exit")]
|
||||
[Command("quit")]
|
||||
public static void QuitShell(int code = 0)
|
||||
|
||||
@ -4,7 +4,7 @@ public class Shell
|
||||
{
|
||||
public const string Author = "That_One_Nerd";
|
||||
public const string Name = "SrcMod";
|
||||
public const string Version = "Alpha 0.2.1";
|
||||
public const string Version = "Alpha 0.2.2";
|
||||
|
||||
public readonly string? ShellDirectory;
|
||||
|
||||
|
||||
@ -7,6 +7,8 @@ public static class Tools
|
||||
private static int loadingPosition = -1;
|
||||
private static int lastLoadingBufferSize = 0;
|
||||
private static int lastLoadingValue = -1;
|
||||
private static float loadingBarValue = 0;
|
||||
private static ConsoleColor loadingBarColor = Console.ForegroundColor;
|
||||
|
||||
public static bool LoadingBarEnabled { get; private set; }
|
||||
|
||||
@ -101,6 +103,9 @@ public static class Tools
|
||||
|
||||
Int2 oldPos = (Console.CursorLeft, Console.CursorTop);
|
||||
|
||||
loadingBarValue = value;
|
||||
loadingBarColor = color ?? Console.ForegroundColor;
|
||||
|
||||
// Erase last bar.
|
||||
Console.SetCursorPosition(0, loadingPosition);
|
||||
Console.Write(new string(' ', lastLoadingBufferSize));
|
||||
@ -119,14 +124,20 @@ public static class Tools
|
||||
Write(right, newLine: false);
|
||||
|
||||
if (oldPos.y == Console.CursorTop) oldPos.y++;
|
||||
while (oldPos.y >= Console.BufferHeight)
|
||||
{
|
||||
Console.WriteLine();
|
||||
oldPos.y--;
|
||||
loadingPosition--;
|
||||
}
|
||||
Console.SetCursorPosition(oldPos.x, oldPos.y);
|
||||
}
|
||||
public static void LoadingBarStart(float value = 0, int? position = null, ConsoleColor? color = null)
|
||||
{
|
||||
if (loadingPosition != -1) throw new("The loading bar has already been enabled.");
|
||||
loadingPosition = position ?? Console.CursorTop;
|
||||
LoadingBarSet(value, color);
|
||||
LoadingBarEnabled = true;
|
||||
LoadingBarSet(value, color);
|
||||
}
|
||||
|
||||
public static void Write(object? message, ConsoleColor? col = null, bool newLine = true)
|
||||
@ -138,6 +149,12 @@ public static class Tools
|
||||
else Console.Write(message);
|
||||
|
||||
Console.ForegroundColor = prevCol;
|
||||
|
||||
if (newLine && LoadingBarEnabled && Console.CursorTop >= Console.BufferHeight - 1)
|
||||
{
|
||||
loadingPosition--;
|
||||
LoadingBarSet(loadingBarValue, loadingBarColor);
|
||||
}
|
||||
}
|
||||
|
||||
public static bool ValidateUnsafe()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user