diff --git a/SrcMod/Shell/Modules/BaseModule.cs b/SrcMod/Shell/Modules/BaseModule.cs index 9e18192..2b6ad17 100644 --- a/SrcMod/Shell/Modules/BaseModule.cs +++ b/SrcMod/Shell/Modules/BaseModule.cs @@ -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) diff --git a/SrcMod/Shell/Shell.cs b/SrcMod/Shell/Shell.cs index 1a1479d..0ea44b3 100644 --- a/SrcMod/Shell/Shell.cs +++ b/SrcMod/Shell/Shell.cs @@ -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; diff --git a/SrcMod/Shell/Tools.cs b/SrcMod/Shell/Tools.cs index 0bbeb15..3fea015 100644 --- a/SrcMod/Shell/Tools.cs +++ b/SrcMod/Shell/Tools.cs @@ -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()