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); } }
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); } }
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 )"; }