zaagan
12/5/2017 - 7:11 AM

DynamixConsole

Console Code Snippets

    /// <summary>
    /// SOURCES:  https://stackoverflow.com/a/1925137   | 
    ///           https://stackoverflow.com/questions/1923323/console-animations
    /// 
    /// </summary>
    public class ConsoleSpinnerSample
    {
        public static void Run()
        {
            ConsoleSpinner spin = new ConsoleSpinner();
            Console.Write("Working....");
            while (true)
            {
                spin.Turn();
            }
        }
    }

    public class ConsoleSpinner
    {
        static string[,] sequence = null;

        public int Delay { get; set; } = 200;

        int totalSequences = 0;
        int counter;

        public ConsoleSpinner()
        {
            counter = 0;
            sequence = new string[,] {
                { "/", "-", "\\", "|" },
                { ".", "o", "0", "o" },
                { "+", "x","+","x" },
                { "V", "<", "^", ">" },
                { ".   ", "..  ", "... ", "...." },
                { "=>   ", "==>  ", "===> ", "====>" },

            };

            totalSequences = sequence.GetLength(0);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sequenceCode">0 | 1 | 2 |3 | 4 | 5</param>
        public void Turn(string displayMsg = "", int sequenceCode = 0)
        {
            counter++;
            Thread.Sleep(Delay);

            sequenceCode = sequenceCode > totalSequences - 1 ? 0 : sequenceCode;

            int counterValue = counter % 4;

            string fullMessage = displayMsg + sequence[sequenceCode, counterValue];
            int msglength = fullMessage.Length;

            Console.Write(fullMessage);

            Console.SetCursorPosition(Console.CursorLeft - msglength, Console.CursorTop);
        }
    }
    
    // IMPLEMENTATION
    ConsoleSpinner spinner = new ConsoleSpinner();
    spinner.Delay = 300;
    while (true)
    {
        spinner.Turn(displayMsg: " Working  ",sequenceCode:5);
    }