Exemple #1
0
        /// <summary>
        /// Redisplay all inner windows, sorts it by zIndex and builds new char matrix if required, and sets new stringified frame
        /// </summary>
        public void GenerateFrame()
        {
            if (Windows == null || Windows.Count == 0)
            {
                return;
            }
            if (Console.WindowWidth != width || Console.WindowHeight != height)
            {
                width          = Console.WindowWidth;
                height         = Console.WindowHeight;
                isStateChanged = true;
            }
            if (isStateChanged)
            {
                ScreenCharmap = new char[height, width];
            }

            Windows.Sort((win1, win2) => win1.Position.Z.CompareTo(win2.Position.Z));

            foreach (var window in Windows)
            {
                ScreenCharmap.AddInnerBitmap(window.Charmap, window.Position.X, window.Position.Y);
            }

            StringifyFrame();
        }