private void OpenGL_KeyDown(object sender, PreviewKeyDownEventArgs e) { clsMap Map = MainMap; if ( Map == null ) { return; } Matrix3DMath.Matrix3D matrixA = new Matrix3DMath.Matrix3D(); clsViewInfo.clsMouseOver.clsOverTerrain 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) ) { string Message = ""; if ( Map.UndoPosition > 0 ) { Message = "Undid: " + Map.Undos[Map.UndoPosition - 1].Name; clsMap.clsMessage MapMessage = new clsMap.clsMessage(); MapMessage.Text = Message; Map.Messages.Add(MapMessage); Map.UndoPerform(); DrawViewLater(); } else { Message = "Nothing to undo"; } DisplayUndoMessage(Message); } if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.Redo) ) { string Message = ""; if ( Map.UndoPosition < Map.Undos.Count ) { Message = "Redid: " + Map.Undos[Map.UndoPosition].Name; clsMap.clsMessage MapMessage = new clsMap.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 == App.enumView_Move_Type.Free ) { App.ViewMoveType = App.enumView_Move_Type.RTS; } else if ( App.ViewMoveType == App.enumView_Move_Type.RTS ) { App.ViewMoveType = App.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 == App.enumView_Move_Type.Free ) { Matrix3DMath.MatrixSetToXAngle(matrixA, Math.Atan(2.0D)); Map.ViewInfo.ViewAngleSet_Rotate(matrixA); } else if ( App.ViewMoveType == App.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; int X = 0; int Y = 0; sXY_int SectorNum = new sXY_int(); clsMap.clsUnit Unit = default(clsMap.clsUnit); clsMap.clsUnitSectorConnection Connection = default(clsMap.clsUnitSectorConnection); for ( Y = 0; Y <= Map.SectorCount.Y - 1; Y++ ) { for ( X = 0; X <= Map.SectorCount.X - 1; X++ ) { foreach ( clsMap.clsUnitSectorConnection tempLoopVar_Connection in Map.Sectors[X, Y].Units ) { Connection = tempLoopVar_Connection; Unit = Connection.Unit; if ( Unit.Type.Type == clsUnitType.enumType.PlayerStructure ) { if ( ((clsStructureType)Unit.Type).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 == App.enumDrawLighting.Off ) { App.Draw_Lighting = App.enumDrawLighting.Half; } else if ( App.Draw_Lighting == App.enumDrawLighting.Half ) { App.Draw_Lighting = App.enumDrawLighting.Normal; } else if ( App.Draw_Lighting == App.enumDrawLighting.Normal ) { App.Draw_Lighting = App.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 ) { clsMap.clsUnit Unit = default(clsMap.clsUnit); foreach ( clsMap.clsUnit 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 ) { Position.XY_dbl Centre = App.CalcUnitsCentrePos(Map.SelectedUnits.GetItemsAsSimpleList()); sXY_int Offset = new sXY_int(); Offset.X = ((int)(Math.Round(Convert.ToDouble((MouseOverTerrain.Pos.Horizontal.X - Centre.X) / App.TerrainGridSpacing)))) * App.TerrainGridSpacing; Offset.Y = ((int)(Math.Round(Convert.ToDouble((MouseOverTerrain.Pos.Horizontal.Y - Centre.Y) / App.TerrainGridSpacing)))) * App.TerrainGridSpacing; clsMap.clsObjectPosOffset ObjectPosOffset = new clsMap.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) ) { clsMap.clsObjectRotationOffset ObjectRotationOffset = new clsMap.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) ) { clsMap.clsObjectRotationOffset ObjectRotationOffset = new clsMap.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 OpenGL_KeyDown(object sender, PreviewKeyDownEventArgs e) { clsMap mainMap = this.MainMap; if (mainMap != null) { IEnumerator enumerator; Matrix3DMath.Matrix3D matrix = new Matrix3DMath.Matrix3D(); clsViewInfo.clsMouseOver.clsOverTerrain mouseOverTerrain = mainMap.ViewInfo.GetMouseOverTerrain(); modProgram.IsViewKeyDown.Keys[(int) e.KeyCode] = true; try { enumerator = modControls.Options_KeyboardControls.Options.GetEnumerator(); while (enumerator.MoveNext()) { clsOption<clsKeyboardControl> current = (clsOption<clsKeyboardControl>) enumerator.Current; ((clsKeyboardControl) modControls.KeyboardProfile.get_Value(current)).KeysChanged(modProgram.IsViewKeyDown); } } finally { if (enumerator is IDisposable) { (enumerator as IDisposable).Dispose(); } } if (modControls.KeyboardProfile.Active(modControls.Control_Undo)) { string str; if (mainMap.UndoPosition > 0) { str = "Undid: " + mainMap.Undos[mainMap.UndoPosition - 1].Name; clsMap.clsMessage newItem = new clsMap.clsMessage { Text = str }; mainMap.Messages.Add(newItem); mainMap.UndoPerform(); this.DrawViewLater(); } else { str = "Nothing to undo"; } this.DisplayUndoMessage(str); } if (modControls.KeyboardProfile.Active(modControls.Control_Redo)) { string str2; if (mainMap.UndoPosition < mainMap.Undos.Count) { str2 = "Redid: " + mainMap.Undos[mainMap.UndoPosition].Name; clsMap.clsMessage message2 = new clsMap.clsMessage { Text = str2 }; mainMap.Messages.Add(message2); mainMap.RedoPerform(); this.DrawViewLater(); } else { str2 = "Nothing to redo"; } this.DisplayUndoMessage(str2); } if (modProgram.IsViewKeyDown.Keys[0x11]) { if (e.KeyCode == Keys.D1) { modProgram.VisionRadius_2E = 6; } else if (e.KeyCode == Keys.D2) { modProgram.VisionRadius_2E = 7; } else if (e.KeyCode == Keys.D3) { modProgram.VisionRadius_2E = 8; } else if (e.KeyCode == Keys.D4) { modProgram.VisionRadius_2E = 9; } else if (e.KeyCode == Keys.D5) { modProgram.VisionRadius_2E = 10; } else if (e.KeyCode == Keys.D6) { modProgram.VisionRadius_2E = 11; } else if (e.KeyCode == Keys.D7) { modProgram.VisionRadius_2E = 12; } else if (e.KeyCode == Keys.D8) { modProgram.VisionRadius_2E = 13; } else if (e.KeyCode == Keys.D9) { modProgram.VisionRadius_2E = 14; } else if (e.KeyCode == Keys.D0) { modProgram.VisionRadius_2E = 15; } modProgram.VisionRadius_2E_Changed(); } if (modControls.KeyboardProfile.Active(modControls.Control_View_Move_Type)) { if (modProgram.ViewMoveType == modProgram.enumView_Move_Type.Free) { modProgram.ViewMoveType = modProgram.enumView_Move_Type.RTS; } else if (modProgram.ViewMoveType == modProgram.enumView_Move_Type.RTS) { modProgram.ViewMoveType = modProgram.enumView_Move_Type.Free; } } if (modControls.KeyboardProfile.Active(modControls.Control_View_Rotate_Type)) { modProgram.RTSOrbit = !modProgram.RTSOrbit; } if (modControls.KeyboardProfile.Active(modControls.Control_View_Reset)) { mainMap.ViewInfo.FOV_Multiplier_Set(modSettings.Settings.FOVDefault); if (modProgram.ViewMoveType == modProgram.enumView_Move_Type.Free) { Matrix3DMath.MatrixSetToXAngle(matrix, Math.Atan(2.0)); mainMap.ViewInfo.ViewAngleSet_Rotate(matrix); } else if (modProgram.ViewMoveType == modProgram.enumView_Move_Type.RTS) { Matrix3DMath.MatrixSetToXAngle(matrix, Math.Atan(2.0)); mainMap.ViewInfo.ViewAngleSet_Rotate(matrix); } } if (modControls.KeyboardProfile.Active(modControls.Control_View_Textures)) { modProgram.Draw_TileTextures = !modProgram.Draw_TileTextures; this.DrawViewLater(); } if (modControls.KeyboardProfile.Active(modControls.Control_View_Wireframe)) { modProgram.Draw_TileWireframe = !modProgram.Draw_TileWireframe; this.DrawViewLater(); } if (modControls.KeyboardProfile.Active(modControls.Control_View_Units)) { modProgram.Draw_Units = !modProgram.Draw_Units; int num3 = mainMap.SectorCount.Y - 1; for (int i = 0; i <= num3; i++) { int num4 = mainMap.SectorCount.X - 1; for (int j = 0; j <= num4; j++) { IEnumerator enumerator2; try { enumerator2 = mainMap.Sectors[j, i].Units.GetEnumerator(); while (enumerator2.MoveNext()) { clsMap.clsUnitSectorConnection connection = (clsMap.clsUnitSectorConnection) enumerator2.Current; clsMap.clsUnit unit = connection.Unit; if ((unit.Type.Type == clsUnitType.enumType.PlayerStructure) && (((clsStructureType) unit.Type).StructureBasePlate != null)) { modMath.sXY_int _int; _int.X = j; _int.Y = i; mainMap.SectorGraphicsChanges.Changed(_int); continue; } } } finally { if (enumerator2 is IDisposable) { (enumerator2 as IDisposable).Dispose(); } } } } mainMap.Update(); this.DrawViewLater(); } if (modControls.KeyboardProfile.Active(modControls.Control_View_ScriptMarkers)) { modProgram.Draw_ScriptMarkers = !modProgram.Draw_ScriptMarkers; this.DrawViewLater(); } if (modControls.KeyboardProfile.Active(modControls.Control_View_Lighting)) { if (modProgram.Draw_Lighting == modProgram.enumDrawLighting.Off) { modProgram.Draw_Lighting = modProgram.enumDrawLighting.Half; } else if (modProgram.Draw_Lighting == modProgram.enumDrawLighting.Half) { modProgram.Draw_Lighting = modProgram.enumDrawLighting.Normal; } else if (modProgram.Draw_Lighting == modProgram.enumDrawLighting.Normal) { modProgram.Draw_Lighting = modProgram.enumDrawLighting.Off; } this.DrawViewLater(); } if ((modTools.Tool == modTools.Tools.TextureBrush) && (mouseOverTerrain != null)) { if (modControls.KeyboardProfile.Active(modControls.Control_Clockwise)) { mainMap.ViewInfo.Apply_Texture_Clockwise(); } if (modControls.KeyboardProfile.Active(modControls.Control_CounterClockwise)) { mainMap.ViewInfo.Apply_Texture_CounterClockwise(); } if (modControls.KeyboardProfile.Active(modControls.Control_Texture_Flip)) { mainMap.ViewInfo.Apply_Texture_FlipX(); } if (modControls.KeyboardProfile.Active(modControls.Control_Tri_Flip)) { mainMap.ViewInfo.Apply_Tri_Flip(); } } if (modTools.Tool == modTools.Tools.ObjectSelect) { if (modControls.KeyboardProfile.Active(modControls.Control_Unit_Delete) && (mainMap.SelectedUnits.Count > 0)) { IEnumerator enumerator3; try { enumerator3 = mainMap.SelectedUnits.GetItemsAsSimpleList().GetEnumerator(); while (enumerator3.MoveNext()) { clsMap.clsUnit unit2 = (clsMap.clsUnit) enumerator3.Current; mainMap.UnitRemoveStoreChange(unit2.MapLink.ArrayPosition); } } finally { if (enumerator3 is IDisposable) { (enumerator3 as IDisposable).Dispose(); } } modMain.frmMainInstance.SelectedObject_Changed(); mainMap.UndoStepCreate("Object Deleted"); mainMap.Update(); mainMap.MinimapMakeLater(); this.DrawViewLater(); } if ((modControls.KeyboardProfile.Active(modControls.Control_Unit_Move) && (mouseOverTerrain != null)) && (mainMap.SelectedUnits.Count > 0)) { modMath.sXY_int _int2; Position.XY_dbl _dbl = modProgram.CalcUnitsCentrePos(mainMap.SelectedUnits.GetItemsAsSimpleList()); _int2.X = ((int) Math.Round(Math.Round((double) ((mouseOverTerrain.Pos.Horizontal.X - _dbl.X) / 128.0)))) * 0x80; _int2.Y = ((int) Math.Round(Math.Round((double) ((mouseOverTerrain.Pos.Horizontal.Y - _dbl.Y) / 128.0)))) * 0x80; clsMap.clsObjectPosOffset tool = new clsMap.clsObjectPosOffset { Map = mainMap, Offset = _int2 }; mainMap.SelectedUnitsAction(tool); mainMap.UndoStepCreate("Objects Moved"); mainMap.Update(); mainMap.MinimapMakeLater(); modMain.frmMainInstance.SelectedObject_Changed(); this.DrawViewLater(); } if (modControls.KeyboardProfile.Active(modControls.Control_Clockwise)) { clsMap.clsObjectRotationOffset offset2 = new clsMap.clsObjectRotationOffset { Map = mainMap, Offset = -90 }; mainMap.SelectedUnitsAction(offset2); mainMap.Update(); modMain.frmMainInstance.SelectedObject_Changed(); mainMap.UndoStepCreate("Object Rotated"); this.DrawViewLater(); } if (modControls.KeyboardProfile.Active(modControls.Control_CounterClockwise)) { clsMap.clsObjectRotationOffset offset3 = new clsMap.clsObjectRotationOffset { Map = mainMap, Offset = 90 }; mainMap.SelectedUnitsAction(offset3); mainMap.Update(); modMain.frmMainInstance.SelectedObject_Changed(); mainMap.UndoStepCreate("Object Rotated"); this.DrawViewLater(); } } if (modControls.KeyboardProfile.Active(modControls.Control_Deselect)) { modTools.Tool = modTools.Tools.ObjectSelect; this.DrawViewLater(); } if (modControls.KeyboardProfile.Active(modControls.Control_PreviousTool)) { modTools.Tool = modTools.PreviousTool; this.DrawViewLater(); } } }