public void Reset()
        {
            ControlPanels = new CustomPanel[] { EditorConsoleManager.Instance.ToolPane.FilesPanel, EditorConsoleManager.Instance.ToolPane.LayersPanel, EditorConsoleManager.Instance.ToolPane.ToolsPanel };

            if (_consoleLayers != null)
            {
                _consoleLayers.MouseMove  -= _mouseMoveHandler;
                _consoleLayers.MouseEnter -= _mouseEnterHandler;
                _consoleLayers.MouseExit  -= _mouseExitHandler;
            }

            _objectsSurface      = new SadConsole.Consoles.Console(25, 10);
            _objectsSurface.Font = SadConsoleEditor.Settings.Config.ScreenFont;
            _objectsSurface.Data.DefaultForeground = Color.White;
            _objectsSurface.Data.DefaultBackground = Color.Transparent;
            _objectsSurface.Data.Clear();
            _objectsSurface.BeforeRenderHandler = (cr) => cr.Batch.Draw(SadConsole.Engine.BackgroundCell, cr.RenderBox, null, new Color(0, 0, 0, 0.5f));

            _consoleLayers                                  = new LayeredConsole(1, 25, 10);
            _consoleLayers.Font                             = SadConsoleEditor.Settings.Config.ScreenFont;
            _consoleLayers.CanUseMouse                      = true;
            _consoleLayers.CanUseKeyboard                   = true;
            _consoleLayers.GetLayerMetadata(0).Name         = "Root";
            _consoleLayers.GetLayerMetadata(0).IsRemoveable = false;
            _consoleLayers.GetLayerMetadata(0).IsMoveable   = false;

            _width  = 25;
            _height = 10;

            SelectedGameObjects = new GameObjectCollection();
            GameObjects         = new List <GameObjectCollection>();
            GameObjects.Add(SelectedGameObjects);

            _mouseMoveHandler = (o, e) => { if (this.MouseMove != null)
                                            {
                                                this.MouseMove(_consoleLayers.ActiveLayer, e);
                                            }
                                            EditorConsoleManager.Instance.ToolPane.SelectedTool.MouseMoveSurface(e.OriginalMouseInfo, _consoleLayers.ActiveLayer); };
            _mouseEnterHandler = (o, e) => { if (this.MouseEnter != null)
                                             {
                                                 this.MouseEnter(_consoleLayers.ActiveLayer, e);
                                             }
                                             EditorConsoleManager.Instance.ToolPane.SelectedTool.MouseEnterSurface(e.OriginalMouseInfo, _consoleLayers.ActiveLayer); };
            _mouseExitHandler = (o, e) => { if (this.MouseExit != null)
                                            {
                                                this.MouseExit(_consoleLayers.ActiveLayer, e);
                                            }
                                            EditorConsoleManager.Instance.ToolPane.SelectedTool.MouseExitSurface(e.OriginalMouseInfo, _consoleLayers.ActiveLayer); };

            _consoleLayers.MouseMove  += _mouseMoveHandler;
            _consoleLayers.MouseEnter += _mouseEnterHandler;
            _consoleLayers.MouseExit  += _mouseExitHandler;
        }
        public void Save(string file)
        {
            GameConsole tempConsole = new GameConsole(_consoleLayers.Layers, _consoleLayers.Width, _consoleLayers.Height);

            for (int i = 0; i < _consoleLayers.Layers; i++)
            {
                tempConsole.RemoveLayer(0);
            }

            for (int i = 0; i < _consoleLayers.Layers; i++)
            {
                tempConsole.AddLayer(_consoleLayers[i].CellData);
                var metadataNew = new GameConsoleMetadata();
                var metadataOld = _consoleLayers.GetLayerMetadata(i);

                metadataNew.IsMoveable   = metadataOld.IsMoveable;
                metadataNew.IsRemoveable = metadataOld.IsRemoveable;
                metadataNew.IsRenamable  = metadataOld.IsRenamable;
                metadataNew.IsVisible    = metadataOld.IsVisible;
                metadataNew.Name         = metadataOld.Name;
                metadataNew.Index        = metadataOld.Index;
                metadataNew.GameObjects  = GameObjects[i];
                tempConsole.SetLayerMetadata(i, metadataNew);
            }

            SadConsole.Serializer.Save <GameConsole>(tempConsole, file);
            //tempConsole.Save(file);

            //_consoleLayers.Save(file);
            //GameObjectCollection.SaveCollection(GameObjects, file.Replace(System.IO.Path.GetExtension(file), ".objects"));
        }
        public void Reset()
        {
            ControlPanels = new CustomPanel[] { EditorConsoleManager.Instance.ToolPane.FilesPanel, EditorConsoleManager.Instance.ToolPane.LayersPanel, EditorConsoleManager.Instance.ToolPane.ToolsPanel };

            if (_consoleLayers != null)
            {
                _consoleLayers.MouseMove -= _mouseMoveHandler;
                _consoleLayers.MouseEnter -= _mouseEnterHandler;
                _consoleLayers.MouseExit -= _mouseExitHandler;
            }

            _objectsSurface = new SadConsole.Consoles.Console(25, 10);
            _objectsSurface.Font = SadConsoleEditor.Settings.Config.ScreenFont;
            _objectsSurface.Data.DefaultForeground = Color.White;
            _objectsSurface.Data.DefaultBackground = Color.Transparent;
            _objectsSurface.Data.Clear();
            _objectsSurface.BeforeRenderHandler = (cr) => cr.Batch.Draw(SadConsole.Engine.BackgroundCell, cr.RenderBox, null, new Color(0, 0, 0, 0.5f));

            _consoleLayers = new LayeredConsole(1, 25, 10);
            _consoleLayers.Font = SadConsoleEditor.Settings.Config.ScreenFont;
            _consoleLayers.CanUseMouse = true;
            _consoleLayers.CanUseKeyboard = true;
            _consoleLayers.GetLayerMetadata(0).Name = "Root";
            _consoleLayers.GetLayerMetadata(0).IsRemoveable = false;
            _consoleLayers.GetLayerMetadata(0).IsMoveable = false;

            _width = 25;
            _height = 10;

            SelectedGameObjects = new GameObjectCollection();
            GameObjects = new List<GameObjectCollection>();
            GameObjects.Add(SelectedGameObjects);

            _mouseMoveHandler = (o, e) => { if (this.MouseMove != null) this.MouseMove(_consoleLayers.ActiveLayer, e); EditorConsoleManager.Instance.ToolPane.SelectedTool.MouseMoveSurface(e.OriginalMouseInfo, _consoleLayers.ActiveLayer); };
            _mouseEnterHandler = (o, e) => { if (this.MouseEnter != null) this.MouseEnter(_consoleLayers.ActiveLayer, e); EditorConsoleManager.Instance.ToolPane.SelectedTool.MouseEnterSurface(e.OriginalMouseInfo, _consoleLayers.ActiveLayer); };
            _mouseExitHandler = (o, e) => { if (this.MouseExit != null) this.MouseExit(_consoleLayers.ActiveLayer, e); EditorConsoleManager.Instance.ToolPane.SelectedTool.MouseExitSurface(e.OriginalMouseInfo, _consoleLayers.ActiveLayer); };

            _consoleLayers.MouseMove += _mouseMoveHandler;
            _consoleLayers.MouseEnter += _mouseEnterHandler;
            _consoleLayers.MouseExit += _mouseExitHandler;
        }