private void EditMap(object sender, MouseEventArgs e) { if (BattleMapViewer.ActiveMap != null) { Vector3 MapPreviewStartingPos = new Vector3( BattleMapViewer.ActiveMap.CameraPosition.X * BattleMapViewer.ActiveMap.TileSize.X, BattleMapViewer.ActiveMap.CameraPosition.Y * BattleMapViewer.ActiveMap.TileSize.Y, BattleMapViewer.ActiveMap.CameraPosition.Z); int MouseX = (int)(e.X + MapPreviewStartingPos.X) / BattleMapViewer.ActiveMap.TileSize.X; int MouseY = (int)(e.Y + MapPreviewStartingPos.Y) / BattleMapViewer.ActiveMap.TileSize.Y; if (e.Button == MouseButtons.Left) { if (cboTiles.Items.Count > 0) { //If Control key is pressed. if ((Control.ModifierKeys & Keys.Control) == Keys.Control) {//Get the Tile under the mouse base on the map starting pos. Point TilePos = new Point(MouseX, MouseY); Terrain SelectedTerrain = Helper.GetTerrain(TilePos.X, TilePos.Y, 0); TileAttributesEditor.Init(SelectedTerrain, ActiveMap.ListTilesetPreset[cboTiles.SelectedIndex]); if (TileAttributesEditor.ShowDialog() == DialogResult.OK) { Helper.ReplaceTerrain(TilePos.X, TilePos.Y, TileAttributesEditor.ActiveTerrain, 0); } } //Just create a new Tile. else if (BattleMapViewer.ActiveMap.TileSize.X != 0) { Point TilePos = TilesetViewer.ActiveTile; Terrain PresetTerrain = ActiveMap.ListTilesetPreset[cboTiles.SelectedIndex].ArrayTerrain[TilePos.X / ActiveMap.TileSize.X, TilePos.Y / ActiveMap.TileSize.Y]; DrawableTile PresetTile = ActiveMap.ListTilesetPreset[cboTiles.SelectedIndex].ArrayTiles[TilePos.X / ActiveMap.TileSize.X, TilePos.Y / ActiveMap.TileSize.Y]; if (MouseX >= 0 && MouseY >= 0 && MouseX < BattleMapViewer.ActiveMap.MapSize.X && MouseY < BattleMapViewer.ActiveMap.MapSize.Y) { Helper.ReplaceTerrain(MouseX, MouseY, PresetTerrain, 0); Helper.ReplaceTile((int)(e.X + MapPreviewStartingPos.X) / BattleMapViewer.ActiveMap.TileSize.X, (int)(e.Y + MapPreviewStartingPos.Y) / BattleMapViewer.ActiveMap.TileSize.Y, PresetTile, 0); } } } } else if (e.Button == MouseButtons.Right) { int FinalX = e.X / BattleMapViewer.ActiveMap.TileSize.X; int FinalY = e.Y / BattleMapViewer.ActiveMap.TileSize.X; if (FinalX < 0 || FinalX >= BattleMapViewer.ActiveMap.MapSize.X || FinalY < 0 || FinalY >= BattleMapViewer.ActiveMap.MapSize.Y) { return; } for (int S = 0; S < ActiveMap.LayerManager[0].ListSingleplayerSpawns.Count; S++) { if (ActiveMap.LayerManager[0].ListSingleplayerSpawns[S].Position.X == FinalX && ActiveMap.LayerManager[0].ListSingleplayerSpawns[S].Position.Y == FinalY) { ActiveMap.LayerManager[0].ListSingleplayerSpawns.RemoveAt(S); return; } } } } }