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