private void OpenGL_KeyDown(object sender, PreviewKeyDownEventArgs e) { var Map = MainMap; if ( Map == null ) { return; } var matrixA = new Matrix3DMath.Matrix3D(); var MouseOverTerrain = Map.ViewInfo.GetMouseOverTerrain(); App.IsViewKeyDown.Keys[(int)e.KeyCode] = true; foreach ( Option<KeyboardControl> control in KeyboardManager.OptionsKeyboardControls.Options ) { ((KeyboardControl)(KeyboardManager.KeyboardProfile.get_Value(control))).KeysChanged(App.IsViewKeyDown); } if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.Undo) ) { var Message = ""; if ( Map.UndoPosition > 0 ) { Message = "Undid: " + Map.Undos[Map.UndoPosition - 1].Name; var MapMessage = new clsMessage(); MapMessage.Text = Message; Map.Messages.Add(MapMessage); Map.UndoPerform(); DrawViewLater(); } else { Message = "Nothing to undo"; } DisplayUndoMessage(Message); } if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.Redo) ) { var Message = ""; if ( Map.UndoPosition < Map.Undos.Count ) { Message = "Redid: " + Map.Undos[Map.UndoPosition].Name; var MapMessage = new clsMessage(); MapMessage.Text = Message; Map.Messages.Add(MapMessage); Map.RedoPerform(); DrawViewLater(); } else { Message = "Nothing to redo"; } DisplayUndoMessage(Message); } if ( App.IsViewKeyDown.Keys[(int)Keys.ControlKey] ) { if ( e.KeyCode == Keys.D1 ) { App.VisionRadius_2E = 6; } else if ( e.KeyCode == Keys.D2 ) { App.VisionRadius_2E = 7; } else if ( e.KeyCode == Keys.D3 ) { App.VisionRadius_2E = 8; } else if ( e.KeyCode == Keys.D4 ) { App.VisionRadius_2E = 9; } else if ( e.KeyCode == Keys.D5 ) { App.VisionRadius_2E = 10; } else if ( e.KeyCode == Keys.D6 ) { App.VisionRadius_2E = 11; } else if ( e.KeyCode == Keys.D7 ) { App.VisionRadius_2E = 12; } else if ( e.KeyCode == Keys.D8 ) { App.VisionRadius_2E = 13; } else if ( e.KeyCode == Keys.D9 ) { App.VisionRadius_2E = 14; } else if ( e.KeyCode == Keys.D0 ) { App.VisionRadius_2E = 15; } App.VisionRadius_2E_Changed(); } if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.ViewMoveType) ) { if ( App.ViewMoveType == enumView_Move_Type.Free ) { App.ViewMoveType = enumView_Move_Type.RTS; } else if ( App.ViewMoveType == enumView_Move_Type.RTS ) { App.ViewMoveType = enumView_Move_Type.Free; } } if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.ViewRotateType) ) { App.RTSOrbit = !App.RTSOrbit; } if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.ViewReset) ) { Map.ViewInfo.FOV_Multiplier_Set(SettingsManager.Settings.FOVDefault); if ( App.ViewMoveType == enumView_Move_Type.Free ) { Matrix3DMath.MatrixSetToXAngle(matrixA, Math.Atan(2.0D)); Map.ViewInfo.ViewAngleSet_Rotate(matrixA); } else if ( App.ViewMoveType == enumView_Move_Type.RTS ) { Matrix3DMath.MatrixSetToXAngle(matrixA, Math.Atan(2.0D)); Map.ViewInfo.ViewAngleSet_Rotate(matrixA); } } if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.ViewTextures) ) { App.Draw_TileTextures = !App.Draw_TileTextures; DrawViewLater(); } if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.ViewWireframe) ) { App.Draw_TileWireframe = !App.Draw_TileWireframe; DrawViewLater(); } if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.ViewUnits) ) { App.Draw_Units = !App.Draw_Units; var X = 0; var Y = 0; var SectorNum = new XYInt(); var Unit = default(clsUnit); var Connection = default(clsUnitSectorConnection); for ( Y = 0; Y <= Map.SectorCount.Y - 1; Y++ ) { for ( X = 0; X <= Map.SectorCount.X - 1; X++ ) { foreach ( var tempLoopVar_Connection in Map.Sectors[X, Y].Units ) { Connection = tempLoopVar_Connection; Unit = Connection.Unit; if ( Unit.TypeBase.Type == UnitType.PlayerStructure ) { if ( ((StructureTypeBase)Unit.TypeBase).StructureBasePlate != null ) { SectorNum.X = X; SectorNum.Y = Y; Map.SectorGraphicsChanges.Changed(SectorNum); break; } } } } } Map.Update(); DrawViewLater(); } if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.ViewScriptMarkers) ) { App.Draw_ScriptMarkers = !App.Draw_ScriptMarkers; DrawViewLater(); } if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.ViewLighting) ) { if ( App.Draw_Lighting == enumDrawLighting.Off ) { App.Draw_Lighting = enumDrawLighting.Half; } else if ( App.Draw_Lighting == enumDrawLighting.Half ) { App.Draw_Lighting = enumDrawLighting.Normal; } else if ( App.Draw_Lighting == enumDrawLighting.Normal ) { App.Draw_Lighting = enumDrawLighting.Off; } DrawViewLater(); } if ( modTools.Tool == modTools.Tools.TextureBrush ) { if ( MouseOverTerrain != null ) { if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.Clockwise) ) { Map.ViewInfo.Apply_Texture_Clockwise(); } if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.CounterClockwise) ) { Map.ViewInfo.Apply_Texture_CounterClockwise(); } if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.TextureFlip) ) { Map.ViewInfo.Apply_Texture_FlipX(); } if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.TriFlip) ) { Map.ViewInfo.Apply_Tri_Flip(); } } } if ( modTools.Tool == modTools.Tools.ObjectSelect ) { if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.UnitDelete) ) { if ( Map.SelectedUnits.Count > 0 ) { var Unit = default(clsUnit); foreach ( var tempLoopVar_Unit in Map.SelectedUnits.GetItemsAsSimpleList() ) { Unit = tempLoopVar_Unit; Map.UnitRemoveStoreChange(Unit.MapLink.ArrayPosition); } Program.frmMainInstance.SelectedObject_Changed(); Map.UndoStepCreate("Object Deleted"); Map.Update(); Map.MinimapMakeLater(); DrawViewLater(); } } if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.UnitMove) ) { if ( MouseOverTerrain != null ) { if ( Map.SelectedUnits.Count > 0 ) { var Centre = App.CalcUnitsCentrePos(Map.SelectedUnits.GetItemsAsSimpleList()); var Offset = new XYInt(); Offset.X = ((int)(Math.Round(Convert.ToDouble((MouseOverTerrain.Pos.Horizontal.X - Centre.X) / Constants.TerrainGridSpacing)))) * Constants.TerrainGridSpacing; Offset.Y = ((int)(Math.Round(Convert.ToDouble((MouseOverTerrain.Pos.Horizontal.Y - Centre.Y) / Constants.TerrainGridSpacing)))) * Constants.TerrainGridSpacing; var ObjectPosOffset = new clsObjectPosOffset(); ObjectPosOffset.Map = Map; ObjectPosOffset.Offset = Offset; Map.SelectedUnitsAction(ObjectPosOffset); Map.UndoStepCreate("Objects Moved"); Map.Update(); Map.MinimapMakeLater(); Program.frmMainInstance.SelectedObject_Changed(); DrawViewLater(); } } } if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.Clockwise) ) { var ObjectRotationOffset = new clsObjectRotationOffset(); ObjectRotationOffset.Map = Map; ObjectRotationOffset.Offset = -90; Map.SelectedUnitsAction(ObjectRotationOffset); Map.Update(); Program.frmMainInstance.SelectedObject_Changed(); Map.UndoStepCreate("Object Rotated"); DrawViewLater(); } if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.CounterClockwise) ) { var ObjectRotationOffset = new clsObjectRotationOffset(); ObjectRotationOffset.Map = Map; ObjectRotationOffset.Offset = 90; Map.SelectedUnitsAction(ObjectRotationOffset); Map.Update(); Program.frmMainInstance.SelectedObject_Changed(); Map.UndoStepCreate("Object Rotated"); DrawViewLater(); } } if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.Deselect) ) { modTools.Tool = modTools.Tools.ObjectSelect; DrawViewLater(); } if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.PreviousTool) ) { modTools.Tool = modTools.PreviousTool; DrawViewLater(); } }
private void DebugGLError(string Name) { if ( App.Debug_GL ) { if ( Messages.Count < 8 ) { if ( GL.GetError() != ErrorCode.NoError ) { var NewMessage = new clsMessage(); NewMessage.Text = "OpenGL Error (" + Name + ")"; Messages.Add(NewMessage); } } } }