/// <summary>
        /// Draws a map on the screen
        /// </summary>
        /// <param name="offsetX">Horizontal offset</param>
        /// <param name="offsetY">Vertical offset</param>
        /// <param name="map">Map to be drawn</param>
        /// <param name="function">Function that merges the blocks</param>
        public void DrawMap(
            int             offsetX,
            int             offsetY,
            ConsoleBlockMap map,
            Func<
                int,
                int,
                int,
                ConsoleBlock,
                int,
                int,
                int,
                ConsoleBlock,
                ConsoleBlock
            > function = null
        )
        {
            if (function == null)
                function = Utils.BlockJustReplaceIfNotEmpty;

            _Map.Merge(offsetX, offsetY, map, function);
        }
        /// <summary>
        /// Creates a new console screen manager
        /// </summary>
        /// <param name="width">Screen width</param>
        /// <param name="height">Screen height</param>
        public ConsoleScreen(int width, int height)
        {
            // Increases the height to avoid annoying screen scrollings
            // TODO: figure out a way to avoid screen scrolling without having to do this
            ++height;

            // Sets the screen size
            Console.SetWindowSize(width, height);
            Console.SetBufferSize(width, height);
            // Hides the ugly cursor
            Console.CursorVisible = false;

            // Restores the given height
            --height;

            // Creates a map for drawing
            _Map     = new ConsoleBlockMap(width, height);
            _LastMap = _Map.Clone;

            // Prints it entirely on the console
            Show(false);
        }
 /// <summary>
 /// Clears the screen with a given background
 /// </summary>
 /// <param name="background">Background</param>
 public void Clear(ConsoleBlockMap background)
 {
     _Map.CopyFrom(background);
 }