// ReSharper disable once MemberCanBePrivate.Global public void AddLoadingBar(SingleLoadingBar loadingBar) { if (loadingBar == null) return; loadingBar.Update(0); _loadingBars.Add(loadingBar); }
public SingleLoadingBar CreateNewLoadingBar(int total, ConsoleColor color = ConsoleColor.Black, string message = null) { if (color == ConsoleColor.Black) color = PickNextColor(); if (_consoleOperator.IsConsoleApp && Console.CursorTop != GetStartLocation()) throw new Exception(); MakeSureWeHaveSpaceForNewLoadingBar(); GotoLineAboveNextBar(); var loadingBar = new SingleLoadingBar(total, '\x2592', color, message, _consoleOperator, _locationLine) { AlternateGetBackToRow = GetStartLocation(), // Behavior = LoadingBarBehavior.ClearWhenHundredPercentIsHit Behavior = _behavior }; AddLoadingBar(loadingBar); if (!_consoleOperator.IsConsoleApp) return loadingBar; int startLocation = GetStartLocation(); if (startLocation >= Console.BufferHeight - (_loadingBars.Count * 2) - 1) { foreach (SingleLoadingBar singleLoadingBar in _loadingBars) { if (singleLoadingBar == null) throw new NullReferenceException("singleLoadingBar in CreateNewLoadingBar()"); int a = singleLoadingBar.AlternateGetBackToRow; int b = GetStartLocation(); if (a != b) { singleLoadingBar.AlternateGetBackToRow = b; } } } /* You do NOT need a GotoStart() here. * If you want to place one, then you've made an error somewhere * GotoStart(); */ return loadingBar; }