Exemple #1
0
        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();
            }
        }
Exemple #2
0
 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();
         }
     }
 }