diff --git a/Mappy/Mappy.csproj b/Mappy/Mappy.csproj index 6582dbc..f468a39 100644 --- a/Mappy/Mappy.csproj +++ b/Mappy/Mappy.csproj @@ -152,12 +152,14 @@ + + diff --git a/Mappy/Models/BandboxBehaviours/FreeBandboxBehaviour.cs b/Mappy/Models/BandboxBehaviours/FreeBandboxBehaviour.cs new file mode 100644 index 0000000..895b780 --- /dev/null +++ b/Mappy/Models/BandboxBehaviours/FreeBandboxBehaviour.cs @@ -0,0 +1,88 @@ +namespace Mappy.Models.BandboxBehaviours +{ + using System; + using System.Drawing; + + using Mappy.Util; + + /// + /// Defines a free-form bandbox behaviour. + /// In this mode, dragging out a bandbox selects features within an + /// area of the map + /// + public class FreeBandboxBehaviour : Notifier, IBandboxBehaviour + { + private readonly IBandboxModel model; + + private Rectangle bandboxRectangle; + + private Point startPoint; + + private Point finishPoint; + + public FreeBandboxBehaviour(IBandboxModel model) + { + this.model = model; + } + + public Rectangle BandboxRectangle + { + get => this.bandboxRectangle; + private set => this.SetField(ref this.bandboxRectangle, value, nameof(this.BandboxRectangle)); + } + + public void StartBandbox(int x, int y) + { + var p = new Point(x, y); + this.startPoint = p; + this.finishPoint = p; + this.UpdateBandboxRectangle(); + } + + public void GrowBandbox(int x, int y) + { + this.finishPoint.X += x; + this.finishPoint.Y += y; + + this.UpdateBandboxRectangle(); + } + + public void CommitBandbox() + { + try + { + var width = this.BandboxRectangle.Width; + var height = this.BandboxRectangle.Height; + + if (width == 0 || height == 0) + { + return; + } + + this.model.LiftAndSelectArea( + this.BandboxRectangle.X, + this.BandboxRectangle.Y, + this.BandboxRectangle.Width, + this.bandboxRectangle.Height); + } + finally + { + this.BandboxRectangle = Rectangle.Empty; + } + } + + private void UpdateBandboxRectangle() + { + var minX = Math.Min(this.startPoint.X, this.finishPoint.X); + var minY = Math.Min(this.startPoint.Y, this.finishPoint.Y); + + var maxX = Math.Max(this.startPoint.X, this.finishPoint.X); + var maxY = Math.Max(this.startPoint.Y, this.finishPoint.Y); + + var width = maxX - minX; + var height = maxY - minY; + + this.BandboxRectangle = new Rectangle(minX, minY, width, height); + } + } +} diff --git a/Mappy/Models/CoreModel.cs b/Mappy/Models/CoreModel.cs index 6b58038..24d880a 100644 --- a/Mappy/Models/CoreModel.cs +++ b/Mappy/Models/CoreModel.cs @@ -1,8 +1,7 @@ namespace Mappy.Models { - using System.ComponentModel; using System.Drawing; - + using Mappy.Models.Enums; using Mappy.Util; public class CoreModel : Notifier, IReadOnlyApplicationModel @@ -20,6 +19,8 @@ public class CoreModel : Notifier, IReadOnlyApplicationModel private Size gridSize = new Size(16, 16); private Color gridColor = MappySettings.Settings.GridColor; + private GUITab guiTab = GUITab.Sections; + private int viewportWidth; private int viewportHeight; @@ -94,6 +95,15 @@ public Color GridColor } } + public GUITab SelectedGUITab + { + get => this.guiTab; + set + { + this.SetField(ref this.guiTab, value, nameof(this.SelectedGUITab)); + } + } + public void SetViewportLocation(Point location) { this.Map.IfSome( diff --git a/Mappy/Models/Enums/GUITab.cs b/Mappy/Models/Enums/GUITab.cs new file mode 100644 index 0000000..445cac7 --- /dev/null +++ b/Mappy/Models/Enums/GUITab.cs @@ -0,0 +1,11 @@ +namespace Mappy.Models.Enums +{ + public enum GUITab + { + Sections, + Features, + Starts, + Attributes, + Other + } +} diff --git a/Mappy/Models/FeatureInstance.cs b/Mappy/Models/FeatureInstance.cs index 926a05b..bec64ed 100644 --- a/Mappy/Models/FeatureInstance.cs +++ b/Mappy/Models/FeatureInstance.cs @@ -1,11 +1,21 @@ namespace Mappy.Models { using System; - + using System.Drawing; using Mappy.Collections; + using Mappy.Data; + using Mappy.Services; public sealed class FeatureInstance { + private static readonly Feature DefaultFeatureRecord = new Feature + { + Name = "default", + Offset = new Point(0, 0), + Footprint = new Size(1, 1), + Image = Mappy.Properties.Resources.nofeature + }; + public FeatureInstance(Guid id, string featureName, int x, int y) : this(id, featureName, new GridCoordinates(x, y)) { @@ -16,10 +26,15 @@ public FeatureInstance(Guid id, string featureName, GridCoordinates location) this.Id = id; this.FeatureName = featureName; this.Location = location; + this.BaseFeature = FeatureService.TryGetFeature(featureName).Or(DefaultFeatureRecord); } + public static FeatureService FeatureService { get; set; } + public Guid Id { get; } + public Feature BaseFeature { get; } + public string FeatureName { get; } public GridCoordinates Location { get; } diff --git a/Mappy/Models/IMainFormViewModel.cs b/Mappy/Models/IMainFormViewModel.cs index dd09b91..f4a0372 100644 --- a/Mappy/Models/IMainFormViewModel.cs +++ b/Mappy/Models/IMainFormViewModel.cs @@ -2,6 +2,7 @@ { using System; using System.Drawing; + using Mappy.Models.Enums; public interface IMainFormViewModel { @@ -132,5 +133,7 @@ public interface IMainFormViewModel void ImportCustomSectionMenuItemClick(); void Load(); + + void ChangeSelectedTabType(GUITab tabType); } } diff --git a/Mappy/Models/IMapModel.cs b/Mappy/Models/IMapModel.cs index abc702d..5b8e310 100644 --- a/Mappy/Models/IMapModel.cs +++ b/Mappy/Models/IMapModel.cs @@ -1,6 +1,7 @@ namespace Mappy.Models { using System; + using System.Collections.Generic; using System.Drawing; public interface IMapModel : IReadOnlyMapModel @@ -24,7 +25,12 @@ public interface IMapModel : IReadOnlyMapModel /// If the ID is not present already, an exception is raised. /// /// The instance to update. - void UpdateFeatureInstance(FeatureInstance instance); + /// + /// The list of FeatureInstance GUIDs that are being updated. + /// The positions of these FeatureInstances will be ignored when + /// calculating if a feature is already at destination coordinates. + /// + void UpdateFeatureInstance(FeatureInstance instance, ISet otherUpdatingFeatures = null); /// /// Removes the feature instance with the given ID. diff --git a/Mappy/Models/IReadOnlyApplicationModel.cs b/Mappy/Models/IReadOnlyApplicationModel.cs index 01030ea..d9a964a 100644 --- a/Mappy/Models/IReadOnlyApplicationModel.cs +++ b/Mappy/Models/IReadOnlyApplicationModel.cs @@ -2,6 +2,7 @@ { using System.ComponentModel; using System.Drawing; + using Mappy.Models.Enums; public interface IReadOnlyApplicationModel : INotifyPropertyChanged { @@ -26,5 +27,7 @@ public interface IReadOnlyApplicationModel : INotifyPropertyChanged Size GridSize { get; } Color GridColor { get; } + + GUITab SelectedGUITab { get; } } } \ No newline at end of file diff --git a/Mappy/Models/MainFormViewModel.cs b/Mappy/Models/MainFormViewModel.cs index 710c7b1..58de13c 100644 --- a/Mappy/Models/MainFormViewModel.cs +++ b/Mappy/Models/MainFormViewModel.cs @@ -4,7 +4,7 @@ using System.Drawing; using System.Linq; using System.Reactive.Linq; - + using Mappy.Models.Enums; using Mappy.Services; public class MainFormViewModel : IMainFormViewModel @@ -341,5 +341,10 @@ public void Load() { this.dispatcher.Initialize(); } + + public void ChangeSelectedTabType(GUITab tabType) + { + this.dispatcher.ChangeSelectedTab(tabType); + } } } diff --git a/Mappy/Models/MapModel.cs b/Mappy/Models/MapModel.cs index 45e3cc4..736e2f0 100644 --- a/Mappy/Models/MapModel.cs +++ b/Mappy/Models/MapModel.cs @@ -167,7 +167,7 @@ public FeatureInstance GetFeatureInstanceAt(int x, int y) /// /// /// - public void UpdateFeatureInstance(FeatureInstance instance) + public void UpdateFeatureInstance(FeatureInstance instance, ISet featureIgnoreList = null) { if (!this.featureInstances.ContainsKey(instance.Id)) { @@ -175,7 +175,7 @@ public void UpdateFeatureInstance(FeatureInstance instance) } this.RemoveFeatureInstanceInternal(instance.Id); - this.AddFeatureInstanceInternal(instance); + this.AddFeatureInstanceInternal(instance, featureIgnoreList); var arg = new FeatureInstanceEventArgs( FeatureInstanceEventArgs.ActionType.Move, @@ -330,16 +330,19 @@ public void DeselectAll() this.DeselectTile(); } - private void AddFeatureInstanceInternal(FeatureInstance instance) + private void AddFeatureInstanceInternal(FeatureInstance instance, ISet featureIgnoreList = null) { if (this.featureInstances.ContainsKey(instance.Id)) { throw new ArgumentException("A FeatureInstance with the given ID already exists."); } - if (this.featureLocationIndex.HasValue(instance.X, instance.Y)) + if (this.featureLocationIndex.TryGetValue(instance.X, instance.Y, out FeatureInstance val)) { - throw new ArgumentException("A FeatureInstance is already present at the target location."); + if (featureIgnoreList != null && !featureIgnoreList.Contains(val.Id)) + { + throw new ArgumentException("A FeatureInstance is already present at the target location."); + } } this.featureInstances[instance.Id] = instance; diff --git a/Mappy/Models/UndoableMapModel.cs b/Mappy/Models/UndoableMapModel.cs index 3138e48..8d78564 100644 --- a/Mappy/Models/UndoableMapModel.cs +++ b/Mappy/Models/UndoableMapModel.cs @@ -11,6 +11,7 @@ using Mappy.Collections; using Mappy.Data; using Mappy.Models.BandboxBehaviours; + using Mappy.Models.Enums; using Mappy.Operations; using Mappy.Operations.SelectionModel; using Mappy.Util; @@ -19,10 +20,14 @@ public sealed class UndoableMapModel : Notifier, IMainModel, IBandboxModel, IRea { private readonly OperationManager undoManager = new OperationManager(); - private readonly IBandboxBehaviour bandboxBehaviour; + private readonly IBandboxBehaviour tileBandboxBehaviour; + + private readonly IBandboxBehaviour freeBandboxBehaviour; private readonly ISelectionModel model; + private IBandboxBehaviour currentBandboxBehaviour; + private Point viewportLocation; private int deltaX; @@ -61,8 +66,13 @@ public UndoableMapModel(ISelectionModel model, string path, bool readOnly) model.HeightGridChanged += this.TileOnHeightGridChanged; model.Attributes.StartPositionChanged += this.AttributesOnStartPositionChanged; - this.bandboxBehaviour = new TileBandboxBehaviour(this); - this.bandboxBehaviour.PropertyChanged += this.BandboxBehaviourPropertyChanged; + this.tileBandboxBehaviour = new TileBandboxBehaviour(this); + this.tileBandboxBehaviour.PropertyChanged += this.BandboxBehaviourPropertyChanged; + + this.freeBandboxBehaviour = new FreeBandboxBehaviour(this); + this.freeBandboxBehaviour.PropertyChanged += this.BandboxBehaviourPropertyChanged; + + this.currentBandboxBehaviour = this.tileBandboxBehaviour; this.undoManager.CanUndoChanged += this.UndoManagerOnCanUndoChanged; this.undoManager.CanRedoChanged += this.UndoManagerOnCanRedoChanged; @@ -120,7 +130,7 @@ public bool IsFileReadOnly public int SeaLevel => this.model.SeaLevel; - public Rectangle BandboxRectangle => this.bandboxBehaviour.BandboxRectangle; + public Rectangle BandboxRectangle => this.currentBandboxBehaviour.BandboxRectangle; public IMapTile BaseTile => this.model.Tile; @@ -405,6 +415,23 @@ public void DeleteSelection() } } + public void UpdateSelectedGUITab(GUITab newTab) + { + switch (newTab) + { + case GUITab.Features: + this.currentBandboxBehaviour = this.freeBandboxBehaviour; + break; + case GUITab.Sections: + case GUITab.Starts: + case GUITab.Attributes: + case GUITab.Other: + default: + this.currentBandboxBehaviour = this.tileBandboxBehaviour; + return; + } + } + public Point? GetStartPosition(int index) { return this.model.Attributes.GetStartPosition(index); @@ -412,25 +439,52 @@ public void DeleteSelection() public void LiftAndSelectArea(int x, int y, int width, int height) { - var liftOp = OperationFactory.CreateClippedLiftAreaOperation(this.model, x, y, width, height); - var index = this.FloatingTiles.Count; - var selectOp = new SelectTileOperation(this.model, index); - this.undoManager.Execute(new CompositeOperation(liftOp, selectOp)); + if (this.currentBandboxBehaviour == this.tileBandboxBehaviour) + { + var liftOp = OperationFactory.CreateClippedLiftAreaOperation(this.model, x, y, width, height); + var index = this.FloatingTiles.Count; + var selectOp = new SelectTileOperation(this.model, index); + this.undoManager.Execute(new CompositeOperation(liftOp, selectOp)); + } + else if (this.currentBandboxBehaviour == this.freeBandboxBehaviour) + { + var loc1 = new Point(x, y); + var loc2 = new Point(x + width, y + height); + + var validItems = new List(); + foreach (var f in this.EnumerateFeatureInstances()) + { + var bounds = f.BaseFeature.GetDrawBounds(this.BaseTile.HeightGrid, f.X, f.Y); + if ((bounds.X + (bounds.Width * 0.5)) >= loc1.X && (bounds.Y + (bounds.Height * 0.5)) >= loc1.Y && + (bounds.X + (bounds.Width * 0.5)) <= loc2.X && (bounds.Y + (bounds.Height * 0.5)) <= loc2.Y) + { + validItems.Add(f); + } + } + + List selections = new List(); + for (int i = 0; i < validItems.Count(); i++) + { + selections.Add(new SelectFeatureOperation(this.model, validItems.ElementAt(i).Id)); + } + + this.undoManager.Execute(new CompositeOperation(selections)); + } } public void StartBandbox(int x, int y) { - this.bandboxBehaviour.StartBandbox(x, y); + this.currentBandboxBehaviour.StartBandbox(x, y); } public void GrowBandbox(int x, int y) { - this.bandboxBehaviour.GrowBandbox(x, y); + this.currentBandboxBehaviour.GrowBandbox(x, y); } public void CommitBandbox() { - this.bandboxBehaviour.CommitBandbox(); + this.currentBandboxBehaviour.CommitBandbox(); } public void ReplaceHeightmap(Grid heightmap) @@ -587,8 +641,8 @@ private bool TranslateFeatureBatch(ICollection ids, int x, int y) return false; } - var isBlocked = !coordSet.Contains(translatedPoint) - && this.HasFeatureInstanceAt(translatedPoint.X, translatedPoint.Y); + var isBlocked = !coordSet.Contains(translatedPoint) && + this.HasFeatureInstanceAt(translatedPoint.X, translatedPoint.Y); if (isBlocked) { return false; diff --git a/Mappy/Operations/BatchMoveFeatureOperation.cs b/Mappy/Operations/BatchMoveFeatureOperation.cs index bb15a7c..e3ef659 100644 --- a/Mappy/Operations/BatchMoveFeatureOperation.cs +++ b/Mappy/Operations/BatchMoveFeatureOperation.cs @@ -29,13 +29,10 @@ public BatchMoveFeatureOperation( public void Execute() { - // BUG: this assumes that the destination of any feature - // does not contain another feature - // that is also about to be moved. foreach (var id in this.ids) { var inst = this.map.GetFeatureInstance(id); - this.map.UpdateFeatureInstance(inst.Translate(this.x, this.y)); + this.map.UpdateFeatureInstance(inst.Translate(this.x, this.y), this.ids); } } diff --git a/Mappy/Program.cs b/Mappy/Program.cs index 662246a..1a828e6 100644 --- a/Mappy/Program.cs +++ b/Mappy/Program.cs @@ -49,6 +49,8 @@ public static void Main() var tileCache = new BitmapCache(); var dialogService = new DialogService(mainForm); var featureService = new FeatureService(); + FeatureInstance.FeatureService = featureService; + var sectionsService = new SectionService(); var sectionFactory = new SectionFactory(tileCache); var sectionBitmapService = new SectionBitmapService(sectionFactory); diff --git a/Mappy/Services/Dispatcher.cs b/Mappy/Services/Dispatcher.cs index 71c8bd2..1b2fd13 100644 --- a/Mappy/Services/Dispatcher.cs +++ b/Mappy/Services/Dispatcher.cs @@ -13,6 +13,7 @@ using Mappy.Data; using Mappy.IO; using Mappy.Models; + using Mappy.Models.Enums; using Mappy.Util; using Mappy.Util.ImageSampling; @@ -545,6 +546,12 @@ public void SelectStartPosition(int index) this.model.Map.IfSome(x => x.SelectStartPosition(index)); } + public void ChangeSelectedTab(GUITab tab) + { + this.model.SelectedGUITab = tab; + this.SetSelectedGUITabForMap(); + } + private static IEnumerable GetMapNames(HpiArchive hpi) { return hpi.GetFiles("maps") @@ -605,6 +612,11 @@ private static bool TryCopyToClipboard(UndoableMapModel map) return false; } + private void SetSelectedGUITabForMap() + { + this.model.Map.IfSome(x => x.UpdateSelectedGUITab(this.model.SelectedGUITab)); + } + private void SaveHpi(UndoableMapModel map, string filename) { // flatten before save --- only the base tile is written to disk @@ -746,11 +758,13 @@ private void OpenFromHapi(string filename) var tntPath = HpiPath.Combine("maps", mapName + ".tnt"); this.model.Map = Maybe.Some(this.mapLoadingService.CreateFromHpi(filename, tntPath, readOnly)); + this.SetSelectedGUITabForMap(); } private void OpenTnt(string filename) { this.model.Map = Maybe.Some(this.mapLoadingService.CreateFromTnt(filename)); + this.SetSelectedGUITabForMap(); } private bool CheckOkayDiscard() @@ -782,6 +796,7 @@ private bool CheckOkayDiscard() private void New(int width, int height) { this.model.Map = Maybe.Some(MapLoadingService.CreateMap(width, height)); + this.SetSelectedGUITabForMap(); } private void OpenSct(string filename) diff --git a/Mappy/UI/Forms/MainForm.Designer.cs b/Mappy/UI/Forms/MainForm.Designer.cs index 22d5d6d..46ddcb8 100644 --- a/Mappy/UI/Forms/MainForm.Designer.cs +++ b/Mappy/UI/Forms/MainForm.Designer.cs @@ -86,19 +86,19 @@ private void InitializeComponent() this.aboutMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.sidebarTabs = new System.Windows.Forms.TabControl(); this.sectionsTab = new System.Windows.Forms.TabPage(); + this.sectionsView = new Mappy.UI.Controls.SectionView(); this.featuresTab = new System.Windows.Forms.TabPage(); + this.featureView = new Mappy.UI.Controls.SectionView(); this.startPositionsTab = new System.Windows.Forms.TabPage(); + this.startPositionsView1 = new Mappy.UI.Controls.StartPositionsView(); this.attributesTab = new System.Windows.Forms.TabPage(); this.seaLevelValueLabel = new System.Windows.Forms.Label(); this.seaLevelLabel = new System.Windows.Forms.Label(); this.seaLevelTrackbar = new System.Windows.Forms.TrackBar(); this.statusStrip = new System.Windows.Forms.StatusStrip(); this.mousePositionLabel = new System.Windows.Forms.ToolStripStatusLabel(); - this.mapViewPanel = new Mappy.UI.Controls.MapViewPanel(); - this.sectionsView = new Mappy.UI.Controls.SectionView(); - this.featureView = new Mappy.UI.Controls.SectionView(); - this.startPositionsView1 = new Mappy.UI.Controls.StartPositionsView(); this.hoveredFeatureLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.mapViewPanel = new Mappy.UI.Controls.MapViewPanel(); toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); @@ -123,60 +123,62 @@ private void InitializeComponent() // toolStripSeparator1 // toolStripSeparator1.Name = "toolStripSeparator1"; - toolStripSeparator1.Size = new System.Drawing.Size(203, 6); + toolStripSeparator1.Size = new System.Drawing.Size(308, 6); // // toolStripSeparator2 // toolStripSeparator2.Name = "toolStripSeparator2"; - toolStripSeparator2.Size = new System.Drawing.Size(203, 6); + toolStripSeparator2.Size = new System.Drawing.Size(308, 6); // // toolStripSeparator8 // toolStripSeparator8.Name = "toolStripSeparator8"; - toolStripSeparator8.Size = new System.Drawing.Size(203, 6); + toolStripSeparator8.Size = new System.Drawing.Size(308, 6); // // toolStripSeparator11 // toolStripSeparator11.Name = "toolStripSeparator11"; - toolStripSeparator11.Size = new System.Drawing.Size(203, 6); + toolStripSeparator11.Size = new System.Drawing.Size(308, 6); // // toolStripSeparator10 // toolStripSeparator10.Name = "toolStripSeparator10"; - toolStripSeparator10.Size = new System.Drawing.Size(203, 6); + toolStripSeparator10.Size = new System.Drawing.Size(308, 6); // // toolStripSeparator7 // toolStripSeparator7.Name = "toolStripSeparator7"; - toolStripSeparator7.Size = new System.Drawing.Size(247, 6); + toolStripSeparator7.Size = new System.Drawing.Size(370, 6); // // toolStripSeparator9 // toolStripSeparator9.Name = "toolStripSeparator9"; - toolStripSeparator9.Size = new System.Drawing.Size(247, 6); + toolStripSeparator9.Size = new System.Drawing.Size(370, 6); // // toolStripSeparator3 // toolStripSeparator3.Name = "toolStripSeparator3"; - toolStripSeparator3.Size = new System.Drawing.Size(247, 6); + toolStripSeparator3.Size = new System.Drawing.Size(370, 6); // // toolStripSeparator4 // toolStripSeparator4.Name = "toolStripSeparator4"; - toolStripSeparator4.Size = new System.Drawing.Size(247, 6); + toolStripSeparator4.Size = new System.Drawing.Size(370, 6); // // toolStripSeparator5 // toolStripSeparator5.Name = "toolStripSeparator5"; - toolStripSeparator5.Size = new System.Drawing.Size(152, 6); + toolStripSeparator5.Size = new System.Drawing.Size(231, 6); // // toolStripSeparator6 // toolStripSeparator6.Name = "toolStripSeparator6"; - toolStripSeparator6.Size = new System.Drawing.Size(152, 6); + toolStripSeparator6.Size = new System.Drawing.Size(231, 6); // // topMenu // + this.topMenu.GripMargin = new System.Windows.Forms.Padding(2, 2, 0, 2); + this.topMenu.ImageScalingSize = new System.Drawing.Size(24, 24); this.topMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.fileMenuItem, this.editMenuItem, @@ -184,7 +186,7 @@ private void InitializeComponent() this.helpMenuItem}); this.topMenu.Location = new System.Drawing.Point(0, 0); this.topMenu.Name = "topMenu"; - this.topMenu.Size = new System.Drawing.Size(784, 24); + this.topMenu.Size = new System.Drawing.Size(1176, 35); this.topMenu.TabIndex = 1; this.topMenu.Text = "menuStrip1"; // @@ -209,14 +211,14 @@ private void InitializeComponent() toolStripSeparator10, this.exitMenuItem}); this.fileMenuItem.Name = "fileMenuItem"; - this.fileMenuItem.Size = new System.Drawing.Size(37, 20); + this.fileMenuItem.Size = new System.Drawing.Size(54, 29); this.fileMenuItem.Text = "&File"; // // newMenuItem // this.newMenuItem.Name = "newMenuItem"; this.newMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N))); - this.newMenuItem.Size = new System.Drawing.Size(206, 22); + this.newMenuItem.Size = new System.Drawing.Size(311, 34); this.newMenuItem.Text = "&New..."; this.newMenuItem.Click += new System.EventHandler(this.NewMenuItemClick); // @@ -224,7 +226,7 @@ private void InitializeComponent() // this.openMenuItem.Name = "openMenuItem"; this.openMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O))); - this.openMenuItem.Size = new System.Drawing.Size(206, 22); + this.openMenuItem.Size = new System.Drawing.Size(311, 34); this.openMenuItem.Text = "&Open..."; this.openMenuItem.Click += new System.EventHandler(this.OpenMenuItemClick); // @@ -233,7 +235,7 @@ private void InitializeComponent() this.saveMenuItem.Enabled = false; this.saveMenuItem.Name = "saveMenuItem"; this.saveMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S))); - this.saveMenuItem.Size = new System.Drawing.Size(206, 22); + this.saveMenuItem.Size = new System.Drawing.Size(311, 34); this.saveMenuItem.Text = "&Save"; this.saveMenuItem.Click += new System.EventHandler(this.SaveMenuItemClick); // @@ -241,7 +243,7 @@ private void InitializeComponent() // this.saveAsMenuItem.Enabled = false; this.saveAsMenuItem.Name = "saveAsMenuItem"; - this.saveAsMenuItem.Size = new System.Drawing.Size(206, 22); + this.saveAsMenuItem.Size = new System.Drawing.Size(311, 34); this.saveAsMenuItem.Text = "Save &As..."; this.saveAsMenuItem.Click += new System.EventHandler(this.SaveAsMenuItemClick); // @@ -250,7 +252,7 @@ private void InitializeComponent() this.closeMenuItem.Enabled = false; this.closeMenuItem.Name = "closeMenuItem"; this.closeMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.W))); - this.closeMenuItem.Size = new System.Drawing.Size(206, 22); + this.closeMenuItem.Size = new System.Drawing.Size(311, 34); this.closeMenuItem.Text = "&Close"; this.closeMenuItem.Click += new System.EventHandler(this.CloseMenuItemClick); // @@ -258,7 +260,7 @@ private void InitializeComponent() // this.importMinimapMenuItem.Enabled = false; this.importMinimapMenuItem.Name = "importMinimapMenuItem"; - this.importMinimapMenuItem.Size = new System.Drawing.Size(206, 22); + this.importMinimapMenuItem.Size = new System.Drawing.Size(311, 34); this.importMinimapMenuItem.Text = "Import Minimap..."; this.importMinimapMenuItem.Click += new System.EventHandler(this.ImportMinimapMenuItemClick); // @@ -266,7 +268,7 @@ private void InitializeComponent() // this.importHeightmapMenuItem.Enabled = false; this.importHeightmapMenuItem.Name = "importHeightmapMenuItem"; - this.importHeightmapMenuItem.Size = new System.Drawing.Size(206, 22); + this.importHeightmapMenuItem.Size = new System.Drawing.Size(311, 34); this.importHeightmapMenuItem.Text = "Import Heightmap..."; this.importHeightmapMenuItem.Click += new System.EventHandler(this.ImportHeightmapMenuItemClick); // @@ -274,7 +276,7 @@ private void InitializeComponent() // this.importCustomSectionMenuItem.Enabled = false; this.importCustomSectionMenuItem.Name = "importCustomSectionMenuItem"; - this.importCustomSectionMenuItem.Size = new System.Drawing.Size(206, 22); + this.importCustomSectionMenuItem.Size = new System.Drawing.Size(311, 34); this.importCustomSectionMenuItem.Text = "Import Custom Section..."; this.importCustomSectionMenuItem.Click += new System.EventHandler(this.ImportCustomSectionMenuItemClick); // @@ -282,7 +284,7 @@ private void InitializeComponent() // this.exportMinimapMenuItem.Enabled = false; this.exportMinimapMenuItem.Name = "exportMinimapMenuItem"; - this.exportMinimapMenuItem.Size = new System.Drawing.Size(206, 22); + this.exportMinimapMenuItem.Size = new System.Drawing.Size(311, 34); this.exportMinimapMenuItem.Text = "Export Minimap..."; this.exportMinimapMenuItem.Click += new System.EventHandler(this.ExportMinimapMenuItemClick); // @@ -290,7 +292,7 @@ private void InitializeComponent() // this.exportHeightmapMenuItem.Enabled = false; this.exportHeightmapMenuItem.Name = "exportHeightmapMenuItem"; - this.exportHeightmapMenuItem.Size = new System.Drawing.Size(206, 22); + this.exportHeightmapMenuItem.Size = new System.Drawing.Size(311, 34); this.exportHeightmapMenuItem.Text = "Export Heightmap..."; this.exportHeightmapMenuItem.Click += new System.EventHandler(this.ExportHeightmapMenuItemClick); // @@ -298,14 +300,14 @@ private void InitializeComponent() // this.exportMapImageMenuItem.Enabled = false; this.exportMapImageMenuItem.Name = "exportMapImageMenuItem"; - this.exportMapImageMenuItem.Size = new System.Drawing.Size(206, 22); + this.exportMapImageMenuItem.Size = new System.Drawing.Size(311, 34); this.exportMapImageMenuItem.Text = "Export Map Image..."; this.exportMapImageMenuItem.Click += new System.EventHandler(this.ExportMapImageMenuItemClick); // // exitMenuItem // this.exitMenuItem.Name = "exitMenuItem"; - this.exitMenuItem.Size = new System.Drawing.Size(206, 22); + this.exitMenuItem.Size = new System.Drawing.Size(311, 34); this.exitMenuItem.Text = "E&xit"; this.exitMenuItem.Click += new System.EventHandler(this.ExitMenuItemClick); // @@ -326,7 +328,7 @@ private void InitializeComponent() toolStripSeparator4, this.preferencesMenuItem}); this.editMenuItem.Name = "editMenuItem"; - this.editMenuItem.Size = new System.Drawing.Size(39, 20); + this.editMenuItem.Size = new System.Drawing.Size(58, 29); this.editMenuItem.Text = "&Edit"; // // undoMenuItem @@ -334,7 +336,7 @@ private void InitializeComponent() this.undoMenuItem.Enabled = false; this.undoMenuItem.Name = "undoMenuItem"; this.undoMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z))); - this.undoMenuItem.Size = new System.Drawing.Size(250, 22); + this.undoMenuItem.Size = new System.Drawing.Size(373, 34); this.undoMenuItem.Text = "&Undo"; this.undoMenuItem.Click += new System.EventHandler(this.UndoMenuItemClick); // @@ -343,7 +345,7 @@ private void InitializeComponent() this.redoMenuItem.Enabled = false; this.redoMenuItem.Name = "redoMenuItem"; this.redoMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y))); - this.redoMenuItem.Size = new System.Drawing.Size(250, 22); + this.redoMenuItem.Size = new System.Drawing.Size(373, 34); this.redoMenuItem.Text = "&Redo"; this.redoMenuItem.Click += new System.EventHandler(this.RedoMenuItemClick); // @@ -352,7 +354,7 @@ private void InitializeComponent() this.cutMenuItem.Enabled = false; this.cutMenuItem.Name = "cutMenuItem"; this.cutMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X))); - this.cutMenuItem.Size = new System.Drawing.Size(250, 22); + this.cutMenuItem.Size = new System.Drawing.Size(373, 34); this.cutMenuItem.Text = "Cut"; this.cutMenuItem.Click += new System.EventHandler(this.CutMenuItemClick); // @@ -361,7 +363,7 @@ private void InitializeComponent() this.copyMenuItem.Enabled = false; this.copyMenuItem.Name = "copyMenuItem"; this.copyMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C))); - this.copyMenuItem.Size = new System.Drawing.Size(250, 22); + this.copyMenuItem.Size = new System.Drawing.Size(373, 34); this.copyMenuItem.Text = "Copy"; this.copyMenuItem.Click += new System.EventHandler(this.CopyMenuItemClick); // @@ -370,7 +372,7 @@ private void InitializeComponent() this.pasteMenuItem.Enabled = false; this.pasteMenuItem.Name = "pasteMenuItem"; this.pasteMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V))); - this.pasteMenuItem.Size = new System.Drawing.Size(250, 22); + this.pasteMenuItem.Size = new System.Drawing.Size(373, 34); this.pasteMenuItem.Text = "Paste"; this.pasteMenuItem.Click += new System.EventHandler(this.PasteMenuItemClick); // @@ -378,7 +380,7 @@ private void InitializeComponent() // this.mapAttributesMenuItem.Enabled = false; this.mapAttributesMenuItem.Name = "mapAttributesMenuItem"; - this.mapAttributesMenuItem.Size = new System.Drawing.Size(250, 22); + this.mapAttributesMenuItem.Size = new System.Drawing.Size(373, 34); this.mapAttributesMenuItem.Text = "Map Attributes..."; this.mapAttributesMenuItem.Click += new System.EventHandler(this.MapAttributesMenuItemClick); // @@ -387,7 +389,7 @@ private void InitializeComponent() this.generateMinimapMenuItem.Enabled = false; this.generateMinimapMenuItem.Name = "generateMinimapMenuItem"; this.generateMinimapMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.G))); - this.generateMinimapMenuItem.Size = new System.Drawing.Size(250, 22); + this.generateMinimapMenuItem.Size = new System.Drawing.Size(373, 34); this.generateMinimapMenuItem.Text = "&Generate Minimap"; this.generateMinimapMenuItem.Click += new System.EventHandler(this.GenerateMinimapMenuItemClick); // @@ -395,7 +397,7 @@ private void InitializeComponent() // this.generateMinimapHighQualityMenuItem.Enabled = false; this.generateMinimapHighQualityMenuItem.Name = "generateMinimapHighQualityMenuItem"; - this.generateMinimapHighQualityMenuItem.Size = new System.Drawing.Size(250, 22); + this.generateMinimapHighQualityMenuItem.Size = new System.Drawing.Size(373, 34); this.generateMinimapHighQualityMenuItem.Text = "Generate Minimap (High Quality)"; this.generateMinimapHighQualityMenuItem.Click += new System.EventHandler(this.GenerateMinimapHighQualityMenuItemClick); // @@ -403,7 +405,7 @@ private void InitializeComponent() // this.preferencesMenuItem.Name = "preferencesMenuItem"; this.preferencesMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.P))); - this.preferencesMenuItem.Size = new System.Drawing.Size(250, 22); + this.preferencesMenuItem.Size = new System.Drawing.Size(373, 34); this.preferencesMenuItem.Text = "&Preferences..."; this.preferencesMenuItem.Click += new System.EventHandler(this.PreferencesMenuItemClick); // @@ -417,21 +419,21 @@ private void InitializeComponent() this.gridMenuItem, this.toggleFeaturesMenuItem}); this.viewMenuItem.Name = "viewMenuItem"; - this.viewMenuItem.Size = new System.Drawing.Size(44, 20); + this.viewMenuItem.Size = new System.Drawing.Size(65, 29); this.viewMenuItem.Text = "&View"; // // toggleHeightmapMenuItem // this.toggleHeightmapMenuItem.Name = "toggleHeightmapMenuItem"; this.toggleHeightmapMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.H))); - this.toggleHeightmapMenuItem.Size = new System.Drawing.Size(229, 22); + this.toggleHeightmapMenuItem.Size = new System.Drawing.Size(345, 34); this.toggleHeightmapMenuItem.Text = "&Heightmap Contours"; this.toggleHeightmapMenuItem.Click += new System.EventHandler(this.ToggleHeightmapMenuItemClick); // // toggleHeightGridMenuItem // this.toggleHeightGridMenuItem.Name = "toggleHeightGridMenuItem"; - this.toggleHeightGridMenuItem.Size = new System.Drawing.Size(229, 22); + this.toggleHeightGridMenuItem.Size = new System.Drawing.Size(345, 34); this.toggleHeightGridMenuItem.Text = "Heightmap &Grid"; this.toggleHeightGridMenuItem.Click += new System.EventHandler(this.ToggleHeightGridMenuItemClick); // @@ -439,14 +441,14 @@ private void InitializeComponent() // this.toggleMinimapMenuItem.Name = "toggleMinimapMenuItem"; this.toggleMinimapMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.M))); - this.toggleMinimapMenuItem.Size = new System.Drawing.Size(229, 22); + this.toggleMinimapMenuItem.Size = new System.Drawing.Size(345, 34); this.toggleMinimapMenuItem.Text = "&Minimap"; this.toggleMinimapMenuItem.Click += new System.EventHandler(this.ToggleMinimapMenuItemClick); // // toggleVoidsMenuItem // this.toggleVoidsMenuItem.Name = "toggleVoidsMenuItem"; - this.toggleVoidsMenuItem.Size = new System.Drawing.Size(229, 22); + this.toggleVoidsMenuItem.Size = new System.Drawing.Size(345, 34); this.toggleVoidsMenuItem.Text = "Voids"; this.toggleVoidsMenuItem.Click += new System.EventHandler(this.ToggleVoidsMenuItemClick); // @@ -465,7 +467,7 @@ private void InitializeComponent() toolStripSeparator6, this.gridColorMenuItem}); this.gridMenuItem.Name = "gridMenuItem"; - this.gridMenuItem.Size = new System.Drawing.Size(229, 22); + this.gridMenuItem.Size = new System.Drawing.Size(345, 34); this.gridMenuItem.Text = "Grid"; // // gridOffMenuItem @@ -473,7 +475,7 @@ private void InitializeComponent() this.gridOffMenuItem.Checked = true; this.gridOffMenuItem.CheckState = System.Windows.Forms.CheckState.Checked; this.gridOffMenuItem.Name = "gridOffMenuItem"; - this.gridOffMenuItem.Size = new System.Drawing.Size(155, 22); + this.gridOffMenuItem.Size = new System.Drawing.Size(234, 34); this.gridOffMenuItem.Tag = "0"; this.gridOffMenuItem.Text = "Off"; this.gridOffMenuItem.Click += new System.EventHandler(this.GridOffMenuItemClick); @@ -481,7 +483,7 @@ private void InitializeComponent() // grid16MenuItem // this.grid16MenuItem.Name = "grid16MenuItem"; - this.grid16MenuItem.Size = new System.Drawing.Size(155, 22); + this.grid16MenuItem.Size = new System.Drawing.Size(234, 34); this.grid16MenuItem.Tag = "16"; this.grid16MenuItem.Text = "16x16"; this.grid16MenuItem.Click += new System.EventHandler(this.GridMenuItemClick); @@ -489,7 +491,7 @@ private void InitializeComponent() // grid32MenuItem // this.grid32MenuItem.Name = "grid32MenuItem"; - this.grid32MenuItem.Size = new System.Drawing.Size(155, 22); + this.grid32MenuItem.Size = new System.Drawing.Size(234, 34); this.grid32MenuItem.Tag = "32"; this.grid32MenuItem.Text = "32x32"; this.grid32MenuItem.Click += new System.EventHandler(this.GridMenuItemClick); @@ -497,7 +499,7 @@ private void InitializeComponent() // grid64MenuItem // this.grid64MenuItem.Name = "grid64MenuItem"; - this.grid64MenuItem.Size = new System.Drawing.Size(155, 22); + this.grid64MenuItem.Size = new System.Drawing.Size(234, 34); this.grid64MenuItem.Tag = "64"; this.grid64MenuItem.Text = "64x64"; this.grid64MenuItem.Click += new System.EventHandler(this.GridMenuItemClick); @@ -505,7 +507,7 @@ private void InitializeComponent() // grid128MenuItem // this.grid128MenuItem.Name = "grid128MenuItem"; - this.grid128MenuItem.Size = new System.Drawing.Size(155, 22); + this.grid128MenuItem.Size = new System.Drawing.Size(234, 34); this.grid128MenuItem.Tag = "128"; this.grid128MenuItem.Text = "128x128"; this.grid128MenuItem.Click += new System.EventHandler(this.GridMenuItemClick); @@ -513,7 +515,7 @@ private void InitializeComponent() // grid256MenuItem // this.grid256MenuItem.Name = "grid256MenuItem"; - this.grid256MenuItem.Size = new System.Drawing.Size(155, 22); + this.grid256MenuItem.Size = new System.Drawing.Size(234, 34); this.grid256MenuItem.Tag = "256"; this.grid256MenuItem.Text = "256x256"; this.grid256MenuItem.Click += new System.EventHandler(this.GridMenuItemClick); @@ -521,7 +523,7 @@ private void InitializeComponent() // grid512MenuItem // this.grid512MenuItem.Name = "grid512MenuItem"; - this.grid512MenuItem.Size = new System.Drawing.Size(155, 22); + this.grid512MenuItem.Size = new System.Drawing.Size(234, 34); this.grid512MenuItem.Tag = "512"; this.grid512MenuItem.Text = "512x512"; this.grid512MenuItem.Click += new System.EventHandler(this.GridMenuItemClick); @@ -529,7 +531,7 @@ private void InitializeComponent() // grid1024MenuItem // this.grid1024MenuItem.Name = "grid1024MenuItem"; - this.grid1024MenuItem.Size = new System.Drawing.Size(155, 22); + this.grid1024MenuItem.Size = new System.Drawing.Size(234, 34); this.grid1024MenuItem.Tag = "1024"; this.grid1024MenuItem.Text = "1024x1024"; this.grid1024MenuItem.Click += new System.EventHandler(this.GridMenuItemClick); @@ -537,7 +539,7 @@ private void InitializeComponent() // gridColorMenuItem // this.gridColorMenuItem.Name = "gridColorMenuItem"; - this.gridColorMenuItem.Size = new System.Drawing.Size(155, 22); + this.gridColorMenuItem.Size = new System.Drawing.Size(234, 34); this.gridColorMenuItem.Text = "Choose Color..."; this.gridColorMenuItem.Click += new System.EventHandler(this.GridColorMenuItemClick); // @@ -546,7 +548,7 @@ private void InitializeComponent() this.toggleFeaturesMenuItem.Checked = true; this.toggleFeaturesMenuItem.CheckState = System.Windows.Forms.CheckState.Checked; this.toggleFeaturesMenuItem.Name = "toggleFeaturesMenuItem"; - this.toggleFeaturesMenuItem.Size = new System.Drawing.Size(229, 22); + this.toggleFeaturesMenuItem.Size = new System.Drawing.Size(345, 34); this.toggleFeaturesMenuItem.Text = "Features"; this.toggleFeaturesMenuItem.Click += new System.EventHandler(this.ToggleFeaturesMenuItemClick); // @@ -555,13 +557,13 @@ private void InitializeComponent() this.helpMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.aboutMenuItem}); this.helpMenuItem.Name = "helpMenuItem"; - this.helpMenuItem.Size = new System.Drawing.Size(44, 20); + this.helpMenuItem.Size = new System.Drawing.Size(65, 29); this.helpMenuItem.Text = "&Help"; // // aboutMenuItem // this.aboutMenuItem.Name = "aboutMenuItem"; - this.aboutMenuItem.Size = new System.Drawing.Size(116, 22); + this.aboutMenuItem.Size = new System.Drawing.Size(176, 34); this.aboutMenuItem.Text = "&About..."; this.aboutMenuItem.Click += new System.EventHandler(this.AboutMenuItemClick); // @@ -572,55 +574,88 @@ private void InitializeComponent() this.sidebarTabs.Controls.Add(this.startPositionsTab); this.sidebarTabs.Controls.Add(this.attributesTab); this.sidebarTabs.Dock = System.Windows.Forms.DockStyle.Left; - this.sidebarTabs.Location = new System.Drawing.Point(0, 24); + this.sidebarTabs.Location = new System.Drawing.Point(0, 35); + this.sidebarTabs.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.sidebarTabs.Name = "sidebarTabs"; this.sidebarTabs.SelectedIndex = 0; - this.sidebarTabs.Size = new System.Drawing.Size(215, 538); + this.sidebarTabs.Size = new System.Drawing.Size(322, 830); this.sidebarTabs.TabIndex = 4; + this.sidebarTabs.SelectedIndexChanged += new System.EventHandler(this.GUITabs_SelectedIndexChanged); // // sectionsTab // this.sectionsTab.Controls.Add(this.sectionsView); - this.sectionsTab.Location = new System.Drawing.Point(4, 22); + this.sectionsTab.Location = new System.Drawing.Point(4, 29); + this.sectionsTab.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.sectionsTab.Name = "sectionsTab"; - this.sectionsTab.Padding = new System.Windows.Forms.Padding(3); - this.sectionsTab.Size = new System.Drawing.Size(207, 512); + this.sectionsTab.Padding = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.sectionsTab.Size = new System.Drawing.Size(314, 797); this.sectionsTab.TabIndex = 0; this.sectionsTab.Text = "Sections"; this.sectionsTab.UseVisualStyleBackColor = true; // + // sectionsView + // + this.sectionsView.Dock = System.Windows.Forms.DockStyle.Fill; + this.sectionsView.ImageSize = new System.Drawing.Size(128, 128); + this.sectionsView.Location = new System.Drawing.Point(4, 5); + this.sectionsView.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6); + this.sectionsView.Name = "sectionsView"; + this.sectionsView.Size = new System.Drawing.Size(306, 787); + this.sectionsView.TabIndex = 3; + // // featuresTab // this.featuresTab.Controls.Add(this.featureView); - this.featuresTab.Location = new System.Drawing.Point(4, 22); + this.featuresTab.Location = new System.Drawing.Point(4, 29); + this.featuresTab.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.featuresTab.Name = "featuresTab"; - this.featuresTab.Padding = new System.Windows.Forms.Padding(3); - this.featuresTab.Size = new System.Drawing.Size(207, 512); + this.featuresTab.Padding = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.featuresTab.Size = new System.Drawing.Size(314, 797); this.featuresTab.TabIndex = 1; this.featuresTab.Text = "Features"; this.featuresTab.UseVisualStyleBackColor = true; // + // featureView + // + this.featureView.Dock = System.Windows.Forms.DockStyle.Fill; + this.featureView.ImageSize = new System.Drawing.Size(64, 64); + this.featureView.Location = new System.Drawing.Point(4, 5); + this.featureView.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6); + this.featureView.Name = "featureView"; + this.featureView.Size = new System.Drawing.Size(306, 787); + this.featureView.TabIndex = 0; + // // startPositionsTab // this.startPositionsTab.Controls.Add(this.startPositionsView1); - this.startPositionsTab.Location = new System.Drawing.Point(4, 22); + this.startPositionsTab.Location = new System.Drawing.Point(4, 29); + this.startPositionsTab.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.startPositionsTab.Name = "startPositionsTab"; - this.startPositionsTab.Padding = new System.Windows.Forms.Padding(3); - this.startPositionsTab.Size = new System.Drawing.Size(207, 512); + this.startPositionsTab.Padding = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.startPositionsTab.Size = new System.Drawing.Size(314, 797); this.startPositionsTab.TabIndex = 2; this.startPositionsTab.Text = "Starts"; this.startPositionsTab.UseVisualStyleBackColor = true; // + // startPositionsView1 + // + this.startPositionsView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.startPositionsView1.Location = new System.Drawing.Point(4, 5); + this.startPositionsView1.Margin = new System.Windows.Forms.Padding(6, 6, 6, 6); + this.startPositionsView1.Name = "startPositionsView1"; + this.startPositionsView1.Size = new System.Drawing.Size(306, 787); + this.startPositionsView1.TabIndex = 0; + // // attributesTab // this.attributesTab.Controls.Add(this.seaLevelValueLabel); this.attributesTab.Controls.Add(this.seaLevelLabel); this.attributesTab.Controls.Add(this.seaLevelTrackbar); - this.attributesTab.Location = new System.Drawing.Point(4, 22); - this.attributesTab.Margin = new System.Windows.Forms.Padding(2); + this.attributesTab.Location = new System.Drawing.Point(4, 29); this.attributesTab.Name = "attributesTab"; - this.attributesTab.Padding = new System.Windows.Forms.Padding(2); - this.attributesTab.Size = new System.Drawing.Size(207, 512); + this.attributesTab.Padding = new System.Windows.Forms.Padding(3, 3, 3, 3); + this.attributesTab.Size = new System.Drawing.Size(314, 795); this.attributesTab.TabIndex = 3; this.attributesTab.Text = "Attributes"; this.attributesTab.UseVisualStyleBackColor = true; @@ -629,10 +664,9 @@ private void InitializeComponent() // this.seaLevelValueLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.seaLevelValueLabel.Enabled = false; - this.seaLevelValueLabel.Location = new System.Drawing.Point(173, 5); - this.seaLevelValueLabel.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.seaLevelValueLabel.Location = new System.Drawing.Point(260, 8); this.seaLevelValueLabel.Name = "seaLevelValueLabel"; - this.seaLevelValueLabel.Size = new System.Drawing.Size(32, 14); + this.seaLevelValueLabel.Size = new System.Drawing.Size(48, 22); this.seaLevelValueLabel.TabIndex = 10; this.seaLevelValueLabel.Text = "0"; this.seaLevelValueLabel.TextAlign = System.Drawing.ContentAlignment.TopRight; @@ -641,10 +675,9 @@ private void InitializeComponent() // this.seaLevelLabel.AutoSize = true; this.seaLevelLabel.Enabled = false; - this.seaLevelLabel.Location = new System.Drawing.Point(4, 5); - this.seaLevelLabel.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.seaLevelLabel.Location = new System.Drawing.Point(6, 8); this.seaLevelLabel.Name = "seaLevelLabel"; - this.seaLevelLabel.Size = new System.Drawing.Size(55, 13); + this.seaLevelLabel.Size = new System.Drawing.Size(79, 20); this.seaLevelLabel.TabIndex = 9; this.seaLevelLabel.Text = "Sea Level"; // @@ -653,11 +686,10 @@ private void InitializeComponent() this.seaLevelTrackbar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.seaLevelTrackbar.Enabled = false; - this.seaLevelTrackbar.Location = new System.Drawing.Point(62, 5); - this.seaLevelTrackbar.Margin = new System.Windows.Forms.Padding(2); + this.seaLevelTrackbar.Location = new System.Drawing.Point(93, 8); this.seaLevelTrackbar.Maximum = 255; this.seaLevelTrackbar.Name = "seaLevelTrackbar"; - this.seaLevelTrackbar.Size = new System.Drawing.Size(106, 45); + this.seaLevelTrackbar.Size = new System.Drawing.Size(159, 69); this.seaLevelTrackbar.TabIndex = 8; this.seaLevelTrackbar.TickFrequency = 16; this.seaLevelTrackbar.ValueChanged += new System.EventHandler(this.SeaLevelTrackBarValueChanged); @@ -665,76 +697,51 @@ private void InitializeComponent() // // statusStrip // + this.statusStrip.ImageScalingSize = new System.Drawing.Size(24, 24); this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.mousePositionLabel, this.hoveredFeatureLabel}); - this.statusStrip.Location = new System.Drawing.Point(215, 540); + this.statusStrip.Location = new System.Drawing.Point(322, 833); this.statusStrip.Name = "statusStrip"; - this.statusStrip.Size = new System.Drawing.Size(569, 22); + this.statusStrip.Padding = new System.Windows.Forms.Padding(2, 0, 21, 0); + this.statusStrip.Size = new System.Drawing.Size(854, 32); this.statusStrip.TabIndex = 6; this.statusStrip.Text = "statusStrip1"; // // mousePositionLabel // this.mousePositionLabel.Name = "mousePositionLabel"; - this.mousePositionLabel.Size = new System.Drawing.Size(49, 17); + this.mousePositionLabel.Size = new System.Drawing.Size(74, 25); this.mousePositionLabel.Text = "X: -, Y: -"; // + // hoveredFeatureLabel + // + this.hoveredFeatureLabel.Name = "hoveredFeatureLabel"; + this.hoveredFeatureLabel.Size = new System.Drawing.Size(33, 25); + this.hoveredFeatureLabel.Text = "---"; + // // mapViewPanel // this.mapViewPanel.Dock = System.Windows.Forms.DockStyle.Fill; - this.mapViewPanel.Location = new System.Drawing.Point(215, 24); + this.mapViewPanel.Location = new System.Drawing.Point(322, 35); + this.mapViewPanel.Margin = new System.Windows.Forms.Padding(6, 8, 6, 8); this.mapViewPanel.Name = "mapViewPanel"; - this.mapViewPanel.Size = new System.Drawing.Size(569, 516); + this.mapViewPanel.Size = new System.Drawing.Size(854, 798); this.mapViewPanel.TabIndex = 5; // - // sectionsView - // - this.sectionsView.Dock = System.Windows.Forms.DockStyle.Fill; - this.sectionsView.ImageSize = new System.Drawing.Size(128, 128); - this.sectionsView.Location = new System.Drawing.Point(3, 3); - this.sectionsView.Margin = new System.Windows.Forms.Padding(4); - this.sectionsView.Name = "sectionsView"; - this.sectionsView.Size = new System.Drawing.Size(201, 506); - this.sectionsView.TabIndex = 3; - // - // featureView - // - this.featureView.Dock = System.Windows.Forms.DockStyle.Fill; - this.featureView.ImageSize = new System.Drawing.Size(64, 64); - this.featureView.Location = new System.Drawing.Point(3, 3); - this.featureView.Margin = new System.Windows.Forms.Padding(4); - this.featureView.Name = "featureView"; - this.featureView.Size = new System.Drawing.Size(201, 506); - this.featureView.TabIndex = 0; - // - // startPositionsView1 - // - this.startPositionsView1.Dock = System.Windows.Forms.DockStyle.Fill; - this.startPositionsView1.Location = new System.Drawing.Point(3, 3); - this.startPositionsView1.Margin = new System.Windows.Forms.Padding(4); - this.startPositionsView1.Name = "startPositionsView1"; - this.startPositionsView1.Size = new System.Drawing.Size(201, 506); - this.startPositionsView1.TabIndex = 0; - // - // hoveredFeatureLabel - // - this.hoveredFeatureLabel.Name = "hoveredFeatureLabel"; - this.hoveredFeatureLabel.Size = new System.Drawing.Size(22, 17); - this.hoveredFeatureLabel.Text = "---"; - // // MainForm // this.AllowDrop = true; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(784, 562); + this.ClientSize = new System.Drawing.Size(1176, 865); this.Controls.Add(this.mapViewPanel); this.Controls.Add(this.statusStrip); this.Controls.Add(this.sidebarTabs); this.Controls.Add(this.topMenu); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MainMenuStrip = this.topMenu; + this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); this.Name = "MainForm"; this.Text = "Mappy"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainFormFormClosing); diff --git a/Mappy/UI/Forms/MainForm.cs b/Mappy/UI/Forms/MainForm.cs index a4c8b2a..718841f 100644 --- a/Mappy/UI/Forms/MainForm.cs +++ b/Mappy/UI/Forms/MainForm.cs @@ -8,6 +8,7 @@ using Mappy.Models; using Mappy.UI.Controls; + using Mappy.Util; public partial class MainForm : Form { @@ -294,5 +295,15 @@ private void ToggleHeightGridMenuItemClick(object sender, EventArgs e) { this.model.ToggleHeightGridMenuItemClick(); } + + private void GUITabs_SelectedIndexChanged(object sender, EventArgs e) + { + if (this.sidebarTabs.SelectedTab == null) + { + return; + } + + this.model.ChangeSelectedTabType(Util.MapTabNameToGUIType(this.sidebarTabs.SelectedTab.Name)); + } } } diff --git a/Mappy/Util/Util.cs b/Mappy/Util/Util.cs index 44ef8a1..dae209f 100644 --- a/Mappy/Util/Util.cs +++ b/Mappy/Util/Util.cs @@ -14,6 +14,7 @@ namespace Mappy.Util using Mappy.Collections; using Mappy.Data; using Mappy.Models; + using Mappy.Models.Enums; using Mappy.Properties; using Mappy.Services; using Mappy.Util.ImageSampling; @@ -172,6 +173,7 @@ public static BackgroundWorker RenderMinimapWorker() public struct FeatureInfo { public Bitmap Image { get; set; } + public Point Location { get; set; } } @@ -187,10 +189,10 @@ public static IEnumerable EnumerateBigMinimapImage(RenderMinimapArgs args args.FeatureService.TryGetFeature(f.FeatureName) .Where(rec => rec.Permanent) .Select(rec => new FeatureInfo - { - Image = rec.Image, - Location = rec.GetDrawBounds(args.MapModel.Tile.HeightGrid, f.X, f.Y).Location - })) + { + Image = rec.Image, + Location = rec.GetDrawBounds(args.MapModel.Tile.HeightGrid, f.X, f.Y).Location + })) .ToList(); featuresList.Sort((a, b) => { @@ -489,6 +491,23 @@ public static GridCoordinates ToGridCoordinates(Point p) return new GridCoordinates(p.X, p.Y); } + public static GUITab MapTabNameToGUIType(string tabName) + { + switch (tabName) + { + case "sectionsTab": + return GUITab.Sections; + case "featuresTab": + return GUITab.Features; + case "attributesTab": + return GUITab.Attributes; + case "startPositionsTab": + return GUITab.Starts; + default: + return GUITab.Other; + } + } + public static TValue GetOrDefault(this IDictionary dict, TKey key, TValue defaultValue) { TValue result;