Exemplo n.º 1
0
 public void MouseDown(MouseEventArgs e)
 {
     modMath.sXY_int _int;
     this.Map.SuppressMinimap = true;
     _int.X = e.X;
     _int.Y = e.Y;
     if (e.Button == MouseButtons.Left)
     {
         this.MouseLeftDown = new clsMouseDown();
         if (this.IsViewPosOverMinimap(_int))
         {
             this.MouseLeftDown.OverMinimap = new clsMouseDown.clsOverMinimap();
             this.MouseLeftDown.OverMinimap.DownPos = _int;
             modMath.sXY_int tileNum = new modMath.sXY_int((int) Math.Round(Conversion.Int((double) (_int.X * this.Tiles_Per_Minimap_Pixel))), (int) Math.Round(Conversion.Int((double) (_int.Y * this.Tiles_Per_Minimap_Pixel))));
             this.Map.TileNumClampToMap(tileNum);
             this.LookAtTile(tileNum);
         }
         else
         {
             clsMouseOver.clsOverTerrain mouseOverTerrain = this.GetMouseOverTerrain();
             if (mouseOverTerrain != null)
             {
                 this.MouseLeftDown.OverTerrain = new clsMouseDown.clsOverTerrain();
                 this.MouseLeftDown.OverTerrain.DownPos = mouseOverTerrain.Pos;
                 if (modTools.Tool == modTools.Tools.ObjectSelect)
                 {
                     if (modControls.KeyboardProfile.Active(modControls.Control_Picker))
                     {
                         if (mouseOverTerrain.Units.Count > 0)
                         {
                             if (mouseOverTerrain.Units.Count == 1)
                             {
                                 modMain.frmMainInstance.ObjectPicker(mouseOverTerrain.Units[0].Type);
                             }
                             else
                             {
                                 this.MapView.ListSelectBegin(true);
                             }
                         }
                     }
                     else if (modControls.KeyboardProfile.Active(modControls.Control_ScriptPosition))
                     {
                         clsMap.clsScriptPosition position = clsMap.clsScriptPosition.Create(this.Map);
                         if (position != null)
                         {
                             position.PosX = this.MouseLeftDown.OverTerrain.DownPos.Horizontal.X;
                             position.PosY = this.MouseLeftDown.OverTerrain.DownPos.Horizontal.Y;
                             modMain.frmMainInstance.ScriptMarkerLists_Update();
                         }
                     }
                     else
                     {
                         if (!modControls.KeyboardProfile.Active(modControls.Control_Unit_Multiselect))
                         {
                             this.Map.SelectedUnits.Clear();
                         }
                         modMain.frmMainInstance.SelectedObject_Changed();
                         this.Map.Unit_Selected_Area_VertexA = new modMath.clsXY_int(mouseOverTerrain.Vertex.Normal);
                         this.MapView.DrawViewLater();
                     }
                 }
                 else if (modTools.Tool == modTools.Tools.TerrainBrush)
                 {
                     if (this.Map.Tileset != null)
                     {
                         if (modControls.KeyboardProfile.Active(modControls.Control_Picker))
                         {
                             modMain.frmMainInstance.TerrainPicker();
                         }
                         else
                         {
                             this.Apply_Terrain();
                             if (modMain.frmMainInstance.cbxAutoTexSetHeight.Checked)
                             {
                                 this.Apply_Height_Set(modProgram.TerrainBrush, modMain.frmMainInstance.HeightSetPalette[modMain.frmMainInstance.tabHeightSetL.SelectedIndex]);
                             }
                         }
                     }
                 }
                 else if (modTools.Tool == modTools.Tools.HeightSetBrush)
                 {
                     if (modControls.KeyboardProfile.Active(modControls.Control_Picker))
                     {
                         modMain.frmMainInstance.HeightPickerL();
                     }
                     else
                     {
                         this.Apply_Height_Set(modProgram.HeightBrush, modMain.frmMainInstance.HeightSetPalette[modMain.frmMainInstance.tabHeightSetL.SelectedIndex]);
                     }
                 }
                 else if (modTools.Tool == modTools.Tools.TextureBrush)
                 {
                     if (this.Map.Tileset != null)
                     {
                         if (modControls.KeyboardProfile.Active(modControls.Control_Picker))
                         {
                             modMain.frmMainInstance.TexturePicker();
                         }
                         else
                         {
                             this.Apply_Texture();
                         }
                     }
                 }
                 else if (modTools.Tool == modTools.Tools.CliffTriangle)
                 {
                     this.Apply_CliffTriangle(false);
                 }
                 else if (modTools.Tool == modTools.Tools.CliffBrush)
                 {
                     this.Apply_Cliff();
                 }
                 else if (modTools.Tool == modTools.Tools.CliffRemove)
                 {
                     this.Apply_Cliff_Remove();
                 }
                 else if (modTools.Tool == modTools.Tools.TerrainFill)
                 {
                     if (this.Map.Tileset != null)
                     {
                         if (modControls.KeyboardProfile.Active(modControls.Control_Picker))
                         {
                             modMain.frmMainInstance.TerrainPicker();
                         }
                         else
                         {
                             this.Apply_Terrain_Fill(modMain.frmMainInstance.FillCliffAction, modMain.frmMainInstance.cbxFillInside.Checked);
                             this.MapView.DrawViewLater();
                         }
                     }
                 }
                 else if (modTools.Tool == modTools.Tools.RoadPlace)
                 {
                     if (this.Map.Tileset != null)
                     {
                         this.Apply_Road();
                     }
                 }
                 else if (modTools.Tool == modTools.Tools.RoadLines)
                 {
                     if (this.Map.Tileset != null)
                     {
                         this.Apply_Road_Line_Selection();
                     }
                 }
                 else if (modTools.Tool == modTools.Tools.RoadRemove)
                 {
                     this.Apply_Road_Remove();
                 }
                 else if (modTools.Tool == modTools.Tools.ObjectPlace)
                 {
                     if ((modMain.frmMainInstance.SingleSelectedObjectType != null) & (this.Map.SelectedUnitGroup != null))
                     {
                         clsMap.clsUnitCreate objectCreator = new clsMap.clsUnitCreate();
                         this.Map.SetObjectCreatorDefaults(objectCreator);
                         objectCreator.Horizontal = mouseOverTerrain.Pos.Horizontal;
                         objectCreator.Perform();
                         this.Map.UndoStepCreate("Place Object");
                         this.Map.Update();
                         this.Map.MinimapMakeLater();
                         this.MapView.DrawViewLater();
                     }
                 }
                 else if (modTools.Tool == modTools.Tools.ObjectLines)
                 {
                     this.ApplyObjectLine();
                 }
                 else if (modTools.Tool == modTools.Tools.TerrainSelect)
                 {
                     if (this.Map.Selected_Area_VertexA == null)
                     {
                         this.Map.Selected_Area_VertexA = new modMath.clsXY_int(mouseOverTerrain.Vertex.Normal);
                         this.MapView.DrawViewLater();
                     }
                     else if (this.Map.Selected_Area_VertexB == null)
                     {
                         this.Map.Selected_Area_VertexB = new modMath.clsXY_int(mouseOverTerrain.Vertex.Normal);
                         this.MapView.DrawViewLater();
                     }
                     else
                     {
                         this.Map.Selected_Area_VertexA = null;
                         this.Map.Selected_Area_VertexB = null;
                         this.MapView.DrawViewLater();
                     }
                 }
                 else if (modTools.Tool == modTools.Tools.Gateways)
                 {
                     this.Apply_Gateway();
                 }
             }
             else if (modTools.Tool == modTools.Tools.ObjectSelect)
             {
                 this.Map.SelectedUnits.Clear();
                 modMain.frmMainInstance.SelectedObject_Changed();
             }
         }
     }
     else if (e.Button == MouseButtons.Right)
     {
         this.MouseRightDown = new clsMouseDown();
         if (this.IsViewPosOverMinimap(_int))
         {
             this.MouseRightDown.OverMinimap = new clsMouseDown.clsOverMinimap();
             this.MouseRightDown.OverMinimap.DownPos = _int;
         }
         else
         {
             clsMouseOver.clsOverTerrain terrain2 = this.GetMouseOverTerrain();
             if (terrain2 != null)
             {
                 this.MouseRightDown.OverTerrain = new clsMouseDown.clsOverTerrain();
                 this.MouseRightDown.OverTerrain.DownPos = terrain2.Pos;
             }
         }
         if ((modTools.Tool == modTools.Tools.RoadLines) | (modTools.Tool == modTools.Tools.ObjectLines))
         {
             this.Map.Selected_Tile_A = null;
             this.MapView.DrawViewLater();
         }
         else if (modTools.Tool == modTools.Tools.TerrainSelect)
         {
             this.Map.Selected_Area_VertexA = null;
             this.Map.Selected_Area_VertexB = null;
             this.MapView.DrawViewLater();
         }
         else if (modTools.Tool == modTools.Tools.CliffTriangle)
         {
             this.Apply_CliffTriangle(true);
         }
         else if (modTools.Tool == modTools.Tools.Gateways)
         {
             this.Map.Selected_Tile_A = null;
             this.Map.Selected_Tile_B = null;
             this.MapView.DrawViewLater();
         }
         else if (modTools.Tool == modTools.Tools.HeightSetBrush)
         {
             if (modControls.KeyboardProfile.Active(modControls.Control_Picker))
             {
                 modMain.frmMainInstance.HeightPickerR();
             }
             else
             {
                 this.Apply_Height_Set(modProgram.HeightBrush, modMain.frmMainInstance.HeightSetPalette[modMain.frmMainInstance.tabHeightSetR.SelectedIndex]);
             }
         }
     }
 }
Exemplo n.º 2
0
        public void MouseDown(MouseEventArgs e)
        {
            var screenPos = new XYInt();

            Map.SuppressMinimap = true;

            screenPos.X = e.X;
            screenPos.Y = e.Y;
            if ( e.Button == MouseButtons.Left )
            {
                MouseLeftDown = new clsMouseDown();
                if ( IsViewPosOverMinimap(screenPos) )
                {
                    MouseLeftDown.OverMinimap = new clsMouseDown.clsOverMinimap();
                    MouseLeftDown.OverMinimap.DownPos = screenPos;
                    var Pos = new XYInt((int)((screenPos.X * Tiles_Per_Minimap_Pixel)),
                        (int)(screenPos.Y * Tiles_Per_Minimap_Pixel));
                    Map.TileNumClampToMap(Pos);
                    LookAtTile(Pos);
                }
                else
                {
                    var MouseOverTerrain = GetMouseOverTerrain();
                    if ( MouseOverTerrain != null )
                    {
                        MouseLeftDown.OverTerrain = new clsMouseDown.clsOverTerrain();
                        MouseLeftDown.OverTerrain.DownPos = MouseOverTerrain.Pos;
                        if ( modTools.Tool == modTools.Tools.ObjectSelect )
                        {
                            if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.Picker) )
                            {
                                if ( MouseOverTerrain.Units.Count > 0 )
                                {
                                    if ( MouseOverTerrain.Units.Count == 1 )
                                    {
                                        Program.frmMainInstance.ObjectPicker(MouseOverTerrain.Units[0].TypeBase);
                                    }
                                    else
                                    {
                                        MapViewControl.ListSelectBegin(true);
                                    }
                                }
                            }
                            else if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.ScriptPosition) )
                            {
                                var NewPosition = new clsScriptPosition(Map);
                                if ( NewPosition != null )
                                {
                                    NewPosition.PosX = MouseLeftDown.OverTerrain.DownPos.Horizontal.X;
                                    NewPosition.PosY = MouseLeftDown.OverTerrain.DownPos.Horizontal.Y;
                                    Program.frmMainInstance.ScriptMarkerLists_Update();
                                }
                            }
                            else
                            {
                                if ( !KeyboardManager.KeyboardProfile.Active(KeyboardManager.UnitMultiselect) )
                                {
                                    Map.SelectedUnits.Clear();
                                }
                                Program.frmMainInstance.SelectedObject_Changed();
                                Map.Unit_Selected_Area_VertexA = MouseOverTerrain.Vertex.Normal;
                                MapViewControl.DrawViewLater();
                            }
                        }
                        else if ( modTools.Tool == modTools.Tools.TerrainBrush )
                        {
                            if ( Map.Tileset != null )
                            {
                                if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.Picker) )
                                {
                                    Program.frmMainInstance.TerrainPicker();
                                }
                                else
                                {
                                    Apply_Terrain();
                                    if ( Program.frmMainInstance.cbxAutoTexSetHeight.Checked )
                                    {
                                        Apply_Height_Set(App.TerrainBrush,
                                            Program.frmMainInstance.HeightSetPalette[Program.frmMainInstance.tabHeightSetL.SelectedIndex]);
                                    }
                                }
                            }
                        }
                        else if ( modTools.Tool == modTools.Tools.HeightSetBrush )
                        {
                            if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.Picker) )
                            {
                                Program.frmMainInstance.HeightPickerL();
                            }
                            else
                            {
                                Apply_Height_Set(App.HeightBrush, Program.frmMainInstance.HeightSetPalette[Program.frmMainInstance.tabHeightSetL.SelectedIndex]);
                            }
                        }
                        else if ( modTools.Tool == modTools.Tools.TextureBrush )
                        {
                            if ( Map.Tileset != null )
                            {
                                if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.Picker) )
                                {
                                    Program.frmMainInstance.TexturePicker();
                                }
                                else
                                {
                                    Apply_Texture();
                                }
                            }
                        }
                        else if ( modTools.Tool == modTools.Tools.CliffTriangle )
                        {
                            Apply_CliffTriangle(false);
                        }
                        else if ( modTools.Tool == modTools.Tools.CliffBrush )
                        {
                            Apply_Cliff();
                        }
                        else if ( modTools.Tool == modTools.Tools.CliffRemove )
                        {
                            Apply_Cliff_Remove();
                        }
                        else if ( modTools.Tool == modTools.Tools.TerrainFill )
                        {
                            if ( Map.Tileset != null )
                            {
                                if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.Picker) )
                                {
                                    Program.frmMainInstance.TerrainPicker();
                                }
                                else
                                {
                                    Apply_Terrain_Fill(Program.frmMainInstance.FillCliffAction, Program.frmMainInstance.cbxFillInside.Checked);
                                    MapViewControl.DrawViewLater();
                                }
                            }
                        }
                        else if ( modTools.Tool == modTools.Tools.RoadPlace )
                        {
                            if ( Map.Tileset != null )
                            {
                                Apply_Road();
                            }
                        }
                        else if ( modTools.Tool == modTools.Tools.RoadLines )
                        {
                            if ( Map.Tileset != null )
                            {
                                Apply_Road_Line_Selection();
                            }
                        }
                        else if ( modTools.Tool == modTools.Tools.RoadRemove )
                        {
                            Apply_Road_Remove();
                        }
                        else if ( modTools.Tool == modTools.Tools.ObjectPlace )
                        {
                            if ( Program.frmMainInstance.SingleSelectedObjectTypeBase != null && Map.SelectedUnitGroup != null )
                            {
                                var objectCreator = new clsUnitCreate();
                                Map.SetObjectCreatorDefaults(objectCreator);
                                objectCreator.Horizontal = MouseOverTerrain.Pos.Horizontal;
                                objectCreator.Perform();
                                Map.UndoStepCreate("Place Object");
                                Map.Update();
                                Map.MinimapMakeLater();
                                MapViewControl.DrawViewLater();
                            }
                        }
                        else if ( modTools.Tool == modTools.Tools.ObjectLines )
                        {
                            ApplyObjectLine();
                        }
                        else if ( modTools.Tool == modTools.Tools.TerrainSelect )
                        {
                            if ( Map.Selected_Area_VertexA == null )
                            {
                                Map.Selected_Area_VertexA = MouseOverTerrain.Vertex.Normal;
                                MapViewControl.DrawViewLater();
                            }
                            else if ( Map.Selected_Area_VertexB == null )
                            {
                                Map.Selected_Area_VertexB = MouseOverTerrain.Vertex.Normal;
                                MapViewControl.DrawViewLater();
                            }
                            else
                            {
                                Map.Selected_Area_VertexA = null;
                                Map.Selected_Area_VertexB = null;
                                MapViewControl.DrawViewLater();
                            }
                        }
                        else if ( modTools.Tool == modTools.Tools.Gateways )
                        {
                            Apply_Gateway();
                        }
                    }
                    else if ( modTools.Tool == modTools.Tools.ObjectSelect )
                    {
                        Map.SelectedUnits.Clear();
                        Program.frmMainInstance.SelectedObject_Changed();
                    }
                }
            }
            else if ( e.Button == MouseButtons.Right )
            {
                MouseRightDown = new clsMouseDown();
                if ( IsViewPosOverMinimap(screenPos) )
                {
                    MouseRightDown.OverMinimap = new clsMouseDown.clsOverMinimap();
                    MouseRightDown.OverMinimap.DownPos = screenPos;
                }
                else
                {
                    var MouseOverTerrain = GetMouseOverTerrain();
                    if ( MouseOverTerrain != null )
                    {
                        MouseRightDown.OverTerrain = new clsMouseDown.clsOverTerrain();
                        MouseRightDown.OverTerrain.DownPos = MouseOverTerrain.Pos;
                    }
                }
                if ( modTools.Tool == modTools.Tools.RoadLines || modTools.Tool == modTools.Tools.ObjectLines )
                {
                    Map.Selected_Tile_A = null;
                    MapViewControl.DrawViewLater();
                }
                else if ( modTools.Tool == modTools.Tools.TerrainSelect )
                {
                    Map.Selected_Area_VertexA = null;
                    Map.Selected_Area_VertexB = null;
                    MapViewControl.DrawViewLater();
                }
                else if ( modTools.Tool == modTools.Tools.CliffTriangle )
                {
                    Apply_CliffTriangle(true);
                }
                else if ( modTools.Tool == modTools.Tools.Gateways )
                {
                    Map.Selected_Tile_A = null;
                    Map.Selected_Tile_B = null;
                    MapViewControl.DrawViewLater();
                }
                else if ( modTools.Tool == modTools.Tools.HeightSetBrush )
                {
                    if ( KeyboardManager.KeyboardProfile.Active(KeyboardManager.Picker) )
                    {
                        Program.frmMainInstance.HeightPickerR();
                    }
                    else
                    {
                        Apply_Height_Set(App.HeightBrush, Program.frmMainInstance.HeightSetPalette[Program.frmMainInstance.tabHeightSetR.SelectedIndex]);
                    }
                }
            }
        }