예제 #1
0
파일: Day08.cs 프로젝트: burnedram/aoc2016
        private static void AnimateLCD(LCD <bool> lcd, string[] cmds, TimeSpan totalTime)
        {
            int cLeft = Console.CursorLeft;
            int cTop  = Console.CursorTop;
            var start = DateTime.UtcNow;
            var end   = start.Add(totalTime);
            int step  = (int)((end - start).TotalMilliseconds / cmds.Length);

            for (int i = 0; i < cmds.Length - 1; i++)
            {
                lcd.RunCommand(cmds[i], true);
                Console.SetCursorPosition(cLeft, cTop);
                Console.Write(lcd);
                Thread.Sleep(Math.Max(0, (int)(start.AddMilliseconds(step * i) - DateTime.UtcNow).TotalMilliseconds));
            }
            lcd.RunCommand(cmds[cmds.Length - 1], true);
            Console.SetCursorPosition(cLeft, cTop);
            Console.Write(lcd);
        }