Esempio n. 1
0
 private void onKeyDown(object sender, KeyEventArgs e)
 {
     if (e.KeyCode == Keys.Home)
     {
         LevelView.Center();
     }
     else if (e.KeyCode == Keys.Oemplus)
     {
         LevelView.ZoomIn(LevelView.EditorToScreen(MousePosition));
     }
     else if (e.KeyCode == Keys.OemMinus)
     {
         LevelView.ZoomOut(LevelView.EditorToScreen(MousePosition));
     }
     else if (e.KeyCode == Keys.Left)
     {
         LevelView.Pan(new PointF(32, 0));
         foreach (var ed in LayerEditors)
         {
             ed.UpdateDrawOffset(LevelView.ScreenToEditor(new Point(0, 0)));
         }
     }
     else if (e.KeyCode == Keys.Right)
     {
         LevelView.Pan(new PointF(-32, 0));
         foreach (var ed in LayerEditors)
         {
             ed.UpdateDrawOffset(LevelView.ScreenToEditor(new Point(0, 0)));
         }
     }
     else if (e.KeyCode == Keys.Up)
     {
         LevelView.Pan(new PointF(0, 32));
         foreach (var ed in LayerEditors)
         {
             ed.UpdateDrawOffset(LevelView.ScreenToEditor(new Point(0, 0)));
         }
     }
     else if (e.KeyCode == Keys.Down)
     {
         LevelView.Pan(new PointF(0, -32));
         foreach (var ed in LayerEditors)
         {
             ed.UpdateDrawOffset(LevelView.ScreenToEditor(new Point(0, 0)));
         }
     }
     else if (mouseMode == MouseMode.Normal && e.KeyCode == Keys.Space)
     {
         mouseMode = MouseMode.Pan;
     }
     else if (mouseMode == MouseMode.Normal && e.KeyCode == Keys.C)
     {
         mouseMode = MouseMode.Camera;
     }
     else
     {
         //Call the layer event
         LayerEditors[Ogmo.LayersWindow.CurrentLayerIndex].OnKeyDown(e.KeyCode);
     }
 }
Esempio n. 2
0
 private void onKeyDown(object sender, KeyEventArgs e)
 {
     if (e.KeyCode == Keys.Home)
     {
         LevelView.Center();
     }
     else if (e.KeyCode == Keys.Oemplus)
     {
         LevelView.ZoomIn(LevelView.EditorToScreen(MousePosition));
     }
     else if (e.KeyCode == Keys.OemMinus)
     {
         LevelView.ZoomOut(LevelView.EditorToScreen(MousePosition));
     }
     else if (mouseMode == MouseMode.Normal && e.KeyCode == Keys.Space)
     {
         mouseMode = MouseMode.Pan;
     }
     else if (mouseMode == MouseMode.Normal && e.KeyCode == Keys.C)
     {
         mouseMode = MouseMode.Camera;
     }
     else
     {
         //Call the layer event
         LayerEditors[Ogmo.LayersWindow.CurrentLayerIndex].OnKeyDown(e.KeyCode);
     }
 }
Esempio n. 3
0
        private void Draw(object sender, PaintEventArgs e)
        {
            long start = DateTime.Now.Ticks / 10000;

            e.Graphics.CompositingQuality = CompositingQuality.HighSpeed;
            e.Graphics.SmoothingMode      = SmoothingMode.HighSpeed;
            e.Graphics.InterpolationMode  = InterpolationMode.NearestNeighbor;
            e.Graphics.Transform          = LevelView.Identity;

            //Draw the background logo
            //e.Graphics.DrawImage(DrawUtil.ImgLogo, new Rectangle(Width / 2 - DrawUtil.ImgLogo.Width / 4, Height / 2 - DrawUtil.ImgLogo.Height / 4, DrawUtil.ImgLogo.Width / 2, DrawUtil.ImgLogo.Height / 2));
            //if (!Focused)
            //    e.Graphics.FillRectangle(NoFocusBrush, new Rectangle(0, 0, Width, Height));

            //Draw the level bg
            e.Graphics.Transform = LevelView.Matrix;
            e.Graphics.FillRectangle(ShadowBrush, new Rectangle(10, 10, Level.Size.Width, Level.Size.Height));
            e.Graphics.FillRectangle(levelBGBrush, new Rectangle(0, 0, Level.Size.Width, Level.Size.Height));

            //Layers below the current one
            int i;

            for (i = 0; i < Ogmo.LayersWindow.CurrentLayerIndex; i++)
            {
                if (Ogmo.Project.LayerDefinitions[i].Visible)
                {
                    LayerEditors[i].DrawHandler(e.Graphics, false, true);
                }
            }

            //Current layer
            LayerEditors[Ogmo.LayersWindow.CurrentLayerIndex].DrawHandler(e.Graphics, true, true);

            //Layers above the current one
            for (i = Ogmo.LayersWindow.CurrentLayerIndex + 1; i < LayerEditors.Count; i++)
            {
                if (i < Ogmo.Project.LayerDefinitions.Count && Ogmo.Project.LayerDefinitions[i].Visible)
                {
                    LayerEditors[i].DrawHandler(e.Graphics, false, Ogmo.MainWindow.TransparentLayers ? false : true);
                }
            }

            //Draw the grid
            if (Ogmo.MainWindow.EditingGridVisible)
            {
                e.Graphics.Transform = LevelView.Identity;

                PointF inc = new PointF(Ogmo.LayersWindow.CurrentLayer.Definition.Grid.Width * LevelView.Zoom, Ogmo.LayersWindow.CurrentLayer.Definition.Grid.Height * LevelView.Zoom);
                while (inc.X <= 5)
                {
                    inc.X *= 2;
                }
                while (inc.Y <= 5)
                {
                    inc.Y *= 2;
                }

                float width  = Ogmo.CurrentLevel.Size.Width * LevelView.Zoom;
                float height = Ogmo.CurrentLevel.Size.Height * LevelView.Zoom;

                PointF offset = LevelView.EditorToScreen(LayerEditors[Ogmo.LayersWindow.CurrentLayerIndex].DrawOffset);

                for (float xx = inc.X; xx < width; xx += inc.X)
                {
                    e.Graphics.DrawLine(gridPen, offset.X + xx, offset.Y, offset.X + xx, offset.Y + height);
                }

                for (float yy = inc.Y; yy < height; yy += inc.Y)
                {
                    e.Graphics.DrawLine(gridPen, offset.X, offset.Y + yy, offset.X + width, offset.Y + yy);
                }

                e.Graphics.DrawRectangle(GridBorderPen, new Rectangle((int)offset.X, (int)offset.Y, (int)width + 1, (int)height));
            }

            //Draw the camera
            if (Ogmo.Project.CameraEnabled)
            {
                e.Graphics.Transform = LevelView.Matrix;
                e.Graphics.DrawRectangle(DrawUtil.CameraRectPen, new Rectangle(Level.CameraPosition.X, Level.CameraPosition.Y, Ogmo.Project.CameraSize.Width, Ogmo.Project.CameraSize.Height));
            }

            long end = DateTime.Now.Ticks / 10000;

            Ogmo.MainWindow.MouseCoordinatesLabel.Text = "Draw time: ( " + (end - start) + "ms )";
        }