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]); } } } }
public void ApplyObjectLine() { if ( Program.frmMainInstance.SingleSelectedObjectTypeBase != null && Map.SelectedUnitGroup != null ) { var mouseOverTerrian = GetMouseOverTerrain(); if ( mouseOverTerrian == null ) { return; } var num = 0; var a = 0; var b = 0; var tile = mouseOverTerrian.Tile.Normal; if ( Map.Selected_Tile_A != null ) { if ( tile.X == Map.Selected_Tile_A.X ) { if ( tile.Y <= Map.Selected_Tile_A.Y ) { a = tile.Y; b = Map.Selected_Tile_A.Y; } else { a = Map.Selected_Tile_A.Y; b = tile.Y; } var objectCreator = new clsUnitCreate(); Map.SetObjectCreatorDefaults(objectCreator); for ( num = a; num <= b; num++ ) { objectCreator.Horizontal.X = (int)((tile.X + 0.5D) * Constants.TerrainGridSpacing); objectCreator.Horizontal.Y = (int)((num + 0.5D) * Constants.TerrainGridSpacing); objectCreator.Perform(); } Map.UndoStepCreate("Object Line"); Map.Update(); Map.MinimapMakeLater(); Map.Selected_Tile_A = null; MapViewControl.DrawViewLater(); } else if ( tile.Y == Map.Selected_Tile_A.Y ) { if ( tile.X <= Map.Selected_Tile_A.X ) { a = tile.X; b = Map.Selected_Tile_A.X; } else { a = Map.Selected_Tile_A.X; b = tile.X; } var objectCreator = new clsUnitCreate(); Map.SetObjectCreatorDefaults(objectCreator); for ( num = a; num <= b; num++ ) { objectCreator.Horizontal.X = (int)((num + 0.5D) * Constants.TerrainGridSpacing); objectCreator.Horizontal.Y = (int)((tile.Y + 0.5D) * Constants.TerrainGridSpacing); objectCreator.Perform(); } Map.UndoStepCreate("Object Line"); Map.Update(); Map.MinimapMakeLater(); Map.Selected_Tile_A = null; MapViewControl.DrawViewLater(); } } else { Map.Selected_Tile_A = tile; } } }
public void SetObjectCreatorDefaults(clsUnitCreate objectCreator) { objectCreator.Map = this; objectCreator.ObjectTypeBase = Program.frmMainInstance.SingleSelectedObjectTypeBase; objectCreator.AutoWalls = Program.frmMainInstance.cbxAutoWalls.Checked; objectCreator.UnitGroup = SelectedUnitGroup.Item; try { var Rotation = 0; IOUtil.InvariantParse(Program.frmMainInstance.txtNewObjectRotation.Text, ref Rotation); if ( Rotation < 0 | Rotation > 359 ) { objectCreator.Rotation = 0; } else { objectCreator.Rotation = Rotation; } } catch { objectCreator.Rotation = 0; } objectCreator.RandomizeRotation = Program.frmMainInstance.cbxObjectRandomRotation.Checked; }