diff --git a/Source/Core/Builder.csproj b/Source/Core/Builder.csproj index 9d1d26d667ff6ca38046791ff1f1c4dcd8710281..828727cf7e4ed1261c2798370a96a92d26da81e8 100644 --- a/Source/Core/Builder.csproj +++ b/Source/Core/Builder.csproj @@ -677,6 +677,7 @@ <Reference Include="TabControlEX, Version=0.0.3271.41578, Culture=neutral, PublicKeyToken=1db242dc828e4b4e"> <Private>False</Private> </Reference> + <Reference Include="WindowsBase" /> </ItemGroup> <ItemGroup> <EmbeddedResource Include="Controls\CommandPaletteControl.resx"> @@ -733,6 +734,9 @@ <LastGenOutput>Settings.Designer.cs</LastGenOutput> </None> <EmbeddedResource Include="Resources\display2d.shader" /> + <None Include="Resources\Loader.ani" /> + <None Include="Resources\Loader1.ani" /> + <None Include="Resources\Loader2.ani" /> <None Include="Resources\MissingTexture.png" /> <EmbeddedResource Include="Resources\things2d.shader" /> <None Include="Resources\UnknownImage.png" /> @@ -1372,6 +1376,7 @@ <None Include="Resources\MergeGeo.png" /> <None Include="Resources\MergeGeoClassic.png" /> <None Include="Resources\MergeGeoRemoveLines.png" /> + <None Include="Resources\Loader.gif" /> <Content Include="Resources\Model.png" /> <None Include="Resources\ModelDisabled.png" /> <None Include="Resources\ModelFiltered.png" /> diff --git a/Source/Core/Compilers/AccCompiler.cs b/Source/Core/Compilers/AccCompiler.cs index fda95a8a4a324f6a6e4e37ce4f8d113e6b7b84f6..867d1a47150e365b4b1dcb603a50702b0003dcb8 100755 --- a/Source/Core/Compilers/AccCompiler.cs +++ b/Source/Core/Compilers/AccCompiler.cs @@ -105,7 +105,7 @@ namespace CodeImp.DoomBuilder.Compilers // Map SCRIPTS lump is empty. Abort the process without generating any warnings or errors. if(SourceIsMapScriptsLump && stream.Length == 0) return false; - DataLocation dl = new DataLocation(DataLocation.RESOURCE_DIRECTORY, Path.GetDirectoryName(inputfilepath), false, false, false); + DataLocation dl = new DataLocation(DataLocation.RESOURCE_DIRECTORY, Path.GetDirectoryName(inputfilepath), false, false, false, null); //mxd. TextResourceData must point to temp path when compiling WAD lumps for lump to be recognized as map lump when reporting errors... TextResourceData data = new TextResourceData(stream, dl, (SourceIsMapScriptsLump ? inputfile : sourcefile)); if(!parser.Parse(data, info.Files, true, AcsParserSE.IncludeType.NONE, false)) diff --git a/Source/Core/Config/GameConfiguration.cs b/Source/Core/Config/GameConfiguration.cs index 8ef9c3043e2e7aa7d03e16d6b3300867c461d39f..454db430f0e8cd233b7a89b7c9283ab4f587d0fe 100755 --- a/Source/Core/Config/GameConfiguration.cs +++ b/Source/Core/Config/GameConfiguration.cs @@ -549,7 +549,7 @@ namespace CodeImp.DoomBuilder.Config string classname = cfg.ReadSetting("requiredarchives." + cde.Key + "." + cde2.Key + ".class", (string)null); reqEntries.Add(new RequiredArchiveEntry(classname, lumpname)); } - requiredarchives.Add(new RequiredArchive(filename, exclude, reqEntries)); + requiredarchives.Add(new RequiredArchive((string)cde.Key, filename, exclude, reqEntries)); } // Things diff --git a/Source/Core/Config/RequiredArchive.cs b/Source/Core/Config/RequiredArchive.cs index 8567de84dd7ed029b4e5715c1be9975efb3e2c14..f8e5bac83a7655f62dc737c0ab26b2f14c18c914 100644 --- a/Source/Core/Config/RequiredArchive.cs +++ b/Source/Core/Config/RequiredArchive.cs @@ -23,17 +23,20 @@ namespace CodeImp.DoomBuilder.Config class RequiredArchive { + private string id; private string filename; private bool excludeFromTesting; private List<RequiredArchiveEntry> entries; - public RequiredArchive(string filename, bool excludeFromTesting, List<RequiredArchiveEntry> entries) + public RequiredArchive(string id, string filename, bool excludeFromTesting, List<RequiredArchiveEntry> entries) { + this.id = id; this.filename = filename; this.excludeFromTesting = excludeFromTesting; this.entries = entries; } + public string ID { get { return id; } } public string FileName { get { return filename; } } public bool ExcludeFromTesting { get { return excludeFromTesting; } } public IReadOnlyCollection<RequiredArchiveEntry> Entries { get { return entries; } } diff --git a/Source/Core/Controls/ResourceListEditor.Designer.cs b/Source/Core/Controls/ResourceListEditor.Designer.cs index 2e9f7dd3a0e4dbe77f5c02635d8aca7da695f7b0..3ede0039e8aa229a35f160cd7351747c081874c8 100755 --- a/Source/Core/Controls/ResourceListEditor.Designer.cs +++ b/Source/Core/Controls/ResourceListEditor.Designer.cs @@ -28,100 +28,69 @@ namespace CodeImp.DoomBuilder.Controls /// </summary> private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem(new string[] { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ResourceListEditor)); + System.Windows.Forms.ListViewItem listViewItem4 = new System.Windows.Forms.ListViewItem(new string[] { "C:\\Windows\\Doom\\Doom2.wad"}, 3, System.Drawing.SystemColors.GrayText, System.Drawing.SystemColors.Window, null); - System.Windows.Forms.ListViewItem listViewItem2 = new System.Windows.Forms.ListViewItem(new string[] { + System.Windows.Forms.ListViewItem listViewItem5 = new System.Windows.Forms.ListViewItem(new string[] { "C:\\My\\Little\\Textures\\"}, 2, System.Drawing.SystemColors.GrayText, System.Drawing.SystemColors.Window, null); - System.Windows.Forms.ListViewItem listViewItem3 = new System.Windows.Forms.ListViewItem("C:\\My\\Little\\Pony.wad", 1); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ResourceListEditor)); - this.editresource = new System.Windows.Forms.Button(); - this.deleteresources = new System.Windows.Forms.Button(); - this.addresource = new System.Windows.Forms.Button(); - this.resourceitems = new CodeImp.DoomBuilder.Controls.ResourceListView(); - this.column = new System.Windows.Forms.ColumnHeader(); - this.copypastemenu = new System.Windows.Forms.ContextMenuStrip(this.components); - this.copyresources = new System.Windows.Forms.ToolStripMenuItem(); - this.cutresources = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); - this.pasteresources = new System.Windows.Forms.ToolStripMenuItem(); - this.replaceresources = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); - this.removeresources = new System.Windows.Forms.ToolStripMenuItem(); - this.images = new System.Windows.Forms.ImageList(this.components); - this.copypastemenu.SuspendLayout(); - this.SuspendLayout(); - // - // editresource - // - this.editresource.Enabled = false; - this.editresource.Location = new System.Drawing.Point(122, 140); - this.editresource.Name = "editresource"; - this.editresource.Size = new System.Drawing.Size(136, 24); - this.editresource.TabIndex = 0; - this.editresource.Text = "Resource options..."; - this.editresource.UseVisualStyleBackColor = true; - this.editresource.Click += new System.EventHandler(this.editresource_Click); - // - // deleteresources - // - this.deleteresources.Enabled = false; - this.deleteresources.Location = new System.Drawing.Point(259, 140); - this.deleteresources.Name = "deleteresources"; - this.deleteresources.Size = new System.Drawing.Size(88, 24); - this.deleteresources.TabIndex = 0; - this.deleteresources.Text = "Remove"; - this.deleteresources.UseVisualStyleBackColor = true; - this.deleteresources.Click += new System.EventHandler(this.deleteresources_Click); - // - // addresource - // - this.addresource.Location = new System.Drawing.Point(3, 140); - this.addresource.Name = "addresource"; - this.addresource.Size = new System.Drawing.Size(118, 24); - this.addresource.TabIndex = 0; - this.addresource.Text = "Add resource..."; - this.addresource.UseVisualStyleBackColor = true; - this.addresource.Click += new System.EventHandler(this.addresource_Click); - // - // resourceitems - // - this.resourceitems.AllowDrop = true; - this.resourceitems.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.column}); - this.resourceitems.ContextMenuStrip = this.copypastemenu; - this.resourceitems.FullRowSelect = true; - this.resourceitems.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; - this.resourceitems.HideSelection = false; - this.resourceitems.Items.AddRange(new System.Windows.Forms.ListViewItem[] { - listViewItem1, - listViewItem2, - listViewItem3}); - this.resourceitems.Location = new System.Drawing.Point(0, 0); - this.resourceitems.Name = "resourceitems"; - this.resourceitems.ShowGroups = false; - this.resourceitems.ShowItemToolTips = true; - this.resourceitems.Size = new System.Drawing.Size(350, 138); - this.resourceitems.SmallImageList = this.images; - this.resourceitems.TabIndex = 0; - this.resourceitems.UseCompatibleStateImageBehavior = false; - this.resourceitems.View = System.Windows.Forms.View.Details; - this.resourceitems.ClientSizeChanged += new System.EventHandler(this.resourceitems_ClientSizeChanged); - this.resourceitems.SizeChanged += new System.EventHandler(this.resources_SizeChanged); - this.resourceitems.DoubleClick += new System.EventHandler(this.resourceitems_DoubleClick); - this.resourceitems.DragDrop += new System.Windows.Forms.DragEventHandler(this.resourceitems_DragDrop); - this.resourceitems.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventHandler(this.resourceitems_ItemSelectionChanged); - this.resourceitems.KeyUp += new System.Windows.Forms.KeyEventHandler(this.resourceitems_KeyUp); - this.resourceitems.DragOver += new System.Windows.Forms.DragEventHandler(this.resourceitems_DragOver); - // - // column - // - this.column.Text = "Resource location"; - this.column.Width = 200; - // - // copypastemenu - // - this.copypastemenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + System.Windows.Forms.ListViewItem listViewItem6 = new System.Windows.Forms.ListViewItem("C:\\My\\Little\\Pony.wad", 1); + this.editresource = new System.Windows.Forms.Button(); + this.deleteresources = new System.Windows.Forms.Button(); + this.addresource = new System.Windows.Forms.Button(); + this.copypastemenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.copyresources = new System.Windows.Forms.ToolStripMenuItem(); + this.cutresources = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.pasteresources = new System.Windows.Forms.ToolStripMenuItem(); + this.replaceresources = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.removeresources = new System.Windows.Forms.ToolStripMenuItem(); + this.images = new System.Windows.Forms.ImageList(this.components); + this.resourceitems = new CodeImp.DoomBuilder.Controls.ResourceListView(); + this.column = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.copypastemenu.SuspendLayout(); + this.SuspendLayout(); + // + // editresource + // + this.editresource.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.editresource.Enabled = false; + this.editresource.Location = new System.Drawing.Point(122, 140); + this.editresource.Name = "editresource"; + this.editresource.Size = new System.Drawing.Size(136, 24); + this.editresource.TabIndex = 0; + this.editresource.Text = "Resource options..."; + this.editresource.UseVisualStyleBackColor = true; + this.editresource.Click += new System.EventHandler(this.editresource_Click); + // + // deleteresources + // + this.deleteresources.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.deleteresources.Enabled = false; + this.deleteresources.Location = new System.Drawing.Point(259, 140); + this.deleteresources.Name = "deleteresources"; + this.deleteresources.Size = new System.Drawing.Size(88, 24); + this.deleteresources.TabIndex = 0; + this.deleteresources.Text = "Remove"; + this.deleteresources.UseVisualStyleBackColor = true; + this.deleteresources.Click += new System.EventHandler(this.deleteresources_Click); + // + // addresource + // + this.addresource.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.addresource.Location = new System.Drawing.Point(3, 140); + this.addresource.Name = "addresource"; + this.addresource.Size = new System.Drawing.Size(118, 24); + this.addresource.TabIndex = 0; + this.addresource.Text = "Add resource..."; + this.addresource.UseVisualStyleBackColor = true; + this.addresource.Click += new System.EventHandler(this.addresource_Click); + // + // copypastemenu + // + this.copypastemenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.copyresources, this.cutresources, this.toolStripSeparator1, @@ -129,85 +98,123 @@ namespace CodeImp.DoomBuilder.Controls this.replaceresources, this.toolStripSeparator2, this.removeresources}); - this.copypastemenu.Name = "copypastemenu"; - this.copypastemenu.Size = new System.Drawing.Size(118, 126); - this.copypastemenu.Opening += new System.ComponentModel.CancelEventHandler(this.copypastemenu_Opening); - // - // copyresources - // - this.copyresources.Image = global::CodeImp.DoomBuilder.Properties.Resources.Copy; - this.copyresources.Name = "copyresources"; - this.copyresources.Size = new System.Drawing.Size(117, 22); - this.copyresources.Text = "Copy"; - this.copyresources.Click += new System.EventHandler(this.copyresources_Click); - // - // cutresources - // - this.cutresources.Image = global::CodeImp.DoomBuilder.Properties.Resources.Cut; - this.cutresources.Name = "cutresources"; - this.cutresources.Size = new System.Drawing.Size(117, 22); - this.cutresources.Text = "Cut"; - this.cutresources.Click += new System.EventHandler(this.cutresources_Click); - // - // toolStripSeparator1 - // - this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(114, 6); - // - // pasteresources - // - this.pasteresources.Image = global::CodeImp.DoomBuilder.Properties.Resources.Paste; - this.pasteresources.Name = "pasteresources"; - this.pasteresources.Size = new System.Drawing.Size(117, 22); - this.pasteresources.Text = "Paste"; - this.pasteresources.Click += new System.EventHandler(this.pasteresources_Click); - // - // replaceresources - // - this.replaceresources.Image = global::CodeImp.DoomBuilder.Properties.Resources.Replace; - this.replaceresources.Name = "replaceresources"; - this.replaceresources.Size = new System.Drawing.Size(117, 22); - this.replaceresources.Text = "Replace"; - this.replaceresources.Click += new System.EventHandler(this.replaceresources_Click); - // - // toolStripSeparator2 - // - this.toolStripSeparator2.Name = "toolStripSeparator2"; - this.toolStripSeparator2.Size = new System.Drawing.Size(114, 6); - // - // removeresources - // - this.removeresources.Image = global::CodeImp.DoomBuilder.Properties.Resources.SearchClear; - this.removeresources.Name = "removeresources"; - this.removeresources.Size = new System.Drawing.Size(117, 22); - this.removeresources.Text = "Remove"; - this.removeresources.Click += new System.EventHandler(this.removeresources_Click); - // - // images - // - this.images.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("images.ImageStream"))); - this.images.TransparentColor = System.Drawing.Color.Transparent; - this.images.Images.SetKeyName(0, "Folder.ico"); - this.images.Images.SetKeyName(1, "File.ico"); - this.images.Images.SetKeyName(2, "PK3.ico"); - this.images.Images.SetKeyName(3, "FolderLocked.ico"); - this.images.Images.SetKeyName(4, "FileLocked.ico"); - this.images.Images.SetKeyName(5, "PK3Locked.ico"); - // - // ResourceListEditor - // - this.AllowDrop = true; - this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; - this.Controls.Add(this.resourceitems); - this.Controls.Add(this.addresource); - this.Controls.Add(this.editresource); - this.Controls.Add(this.deleteresources); - this.Name = "ResourceListEditor"; - this.Size = new System.Drawing.Size(350, 166); - this.Resize += new System.EventHandler(this.ResourceListEditor_Resize); - this.copypastemenu.ResumeLayout(false); - this.ResumeLayout(false); + this.copypastemenu.Name = "copypastemenu"; + this.copypastemenu.Size = new System.Drawing.Size(118, 126); + this.copypastemenu.Opening += new System.ComponentModel.CancelEventHandler(this.copypastemenu_Opening); + // + // copyresources + // + this.copyresources.Image = global::CodeImp.DoomBuilder.Properties.Resources.Copy; + this.copyresources.Name = "copyresources"; + this.copyresources.Size = new System.Drawing.Size(117, 22); + this.copyresources.Text = "Copy"; + this.copyresources.Click += new System.EventHandler(this.copyresources_Click); + // + // cutresources + // + this.cutresources.Image = global::CodeImp.DoomBuilder.Properties.Resources.Cut; + this.cutresources.Name = "cutresources"; + this.cutresources.Size = new System.Drawing.Size(117, 22); + this.cutresources.Text = "Cut"; + this.cutresources.Click += new System.EventHandler(this.cutresources_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(114, 6); + // + // pasteresources + // + this.pasteresources.Image = global::CodeImp.DoomBuilder.Properties.Resources.Paste; + this.pasteresources.Name = "pasteresources"; + this.pasteresources.Size = new System.Drawing.Size(117, 22); + this.pasteresources.Text = "Paste"; + this.pasteresources.Click += new System.EventHandler(this.pasteresources_Click); + // + // replaceresources + // + this.replaceresources.Image = global::CodeImp.DoomBuilder.Properties.Resources.Replace; + this.replaceresources.Name = "replaceresources"; + this.replaceresources.Size = new System.Drawing.Size(117, 22); + this.replaceresources.Text = "Replace"; + this.replaceresources.Click += new System.EventHandler(this.replaceresources_Click); + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(114, 6); + // + // removeresources + // + this.removeresources.Image = global::CodeImp.DoomBuilder.Properties.Resources.SearchClear; + this.removeresources.Name = "removeresources"; + this.removeresources.Size = new System.Drawing.Size(117, 22); + this.removeresources.Text = "Remove"; + this.removeresources.Click += new System.EventHandler(this.removeresources_Click); + // + // images + // + this.images.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("images.ImageStream"))); + this.images.TransparentColor = System.Drawing.Color.Transparent; + this.images.Images.SetKeyName(0, "Folder.ico"); + this.images.Images.SetKeyName(1, "File.ico"); + this.images.Images.SetKeyName(2, "PK3.ico"); + this.images.Images.SetKeyName(3, "FolderLocked.ico"); + this.images.Images.SetKeyName(4, "FileLocked.ico"); + this.images.Images.SetKeyName(5, "PK3Locked.ico"); + this.images.Images.SetKeyName(6, "Loader.gif"); + // + // resourceitems + // + this.resourceitems.AllowDrop = true; + this.resourceitems.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.resourceitems.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.column}); + this.resourceitems.ContextMenuStrip = this.copypastemenu; + this.resourceitems.FullRowSelect = true; + this.resourceitems.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; + this.resourceitems.HideSelection = false; + this.resourceitems.Items.AddRange(new System.Windows.Forms.ListViewItem[] { + listViewItem4, + listViewItem5, + listViewItem6}); + this.resourceitems.Location = new System.Drawing.Point(0, 0); + this.resourceitems.Name = "resourceitems"; + this.resourceitems.ShowGroups = false; + this.resourceitems.ShowItemToolTips = true; + this.resourceitems.Size = new System.Drawing.Size(350, 138); + this.resourceitems.SmallImageList = this.images; + this.resourceitems.TabIndex = 0; + this.resourceitems.UseCompatibleStateImageBehavior = false; + this.resourceitems.View = System.Windows.Forms.View.Details; + this.resourceitems.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventHandler(this.resourceitems_ItemSelectionChanged); + this.resourceitems.ClientSizeChanged += new System.EventHandler(this.resourceitems_ClientSizeChanged); + this.resourceitems.SizeChanged += new System.EventHandler(this.resources_SizeChanged); + this.resourceitems.DragDrop += new System.Windows.Forms.DragEventHandler(this.resourceitems_DragDrop); + this.resourceitems.DragOver += new System.Windows.Forms.DragEventHandler(this.resourceitems_DragOver); + this.resourceitems.DoubleClick += new System.EventHandler(this.resourceitems_DoubleClick); + this.resourceitems.KeyUp += new System.Windows.Forms.KeyEventHandler(this.resourceitems_KeyUp); + // + // column + // + this.column.Text = "Resource location"; + this.column.Width = 200; + // + // ResourceListEditor + // + this.AllowDrop = true; + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.Controls.Add(this.resourceitems); + this.Controls.Add(this.addresource); + this.Controls.Add(this.editresource); + this.Controls.Add(this.deleteresources); + this.Name = "ResourceListEditor"; + this.Size = new System.Drawing.Size(350, 166); + this.copypastemenu.ResumeLayout(false); + this.ResumeLayout(false); } diff --git a/Source/Core/Controls/ResourceListEditor.cs b/Source/Core/Controls/ResourceListEditor.cs index bda7494df24c1bf8da632780a4ffe37214b480e4..5f945cffbc960a89a9f207408a086f8d990969c0 100755 --- a/Source/Core/Controls/ResourceListEditor.cs +++ b/Source/Core/Controls/ResourceListEditor.cs @@ -20,7 +20,11 @@ using System; using System.Collections.Generic; using System.Drawing; using System.IO; +using System.Threading; +using System.Threading.Tasks; using System.Windows.Forms; +using System.Windows.Threading; +using CodeImp.DoomBuilder.Config; using CodeImp.DoomBuilder.Data; using CodeImp.DoomBuilder.Windows; @@ -30,11 +34,30 @@ namespace CodeImp.DoomBuilder.Controls { internal partial class ResourceListEditor : UserControl { + #region ================== Internal warning struct + class Warning + { + public Panel Wrapper; + public PictureBox Picture; + public Label Text; + + public Warning(Panel wrapper, PictureBox picture, Label text) + { + Wrapper = wrapper; + Picture = picture; + Text = text; + } + } + #endregion + #region ================== Delegates / Events public delegate void ContentChanged(); + public delegate void WarningsChanged(int size); public event ContentChanged OnContentChanged; + public event WarningsChanged OnWarningsChanged; public string StartPath; //mxd + public bool IsMapControl = false; #endregion @@ -47,12 +70,15 @@ namespace CodeImp.DoomBuilder.Controls private readonly int pasteactionkey; private readonly int pastespecialactionkey; private readonly int deleteactionkey; + private readonly Dictionary<string, CancellationTokenSource> loadingrequiredarchives; + private readonly List<Warning> warnings; #endregion #region ================== Properties public Point DialogOffset { get { return dialogoffset; } set { dialogoffset = value; } } + public GameConfiguration GameConfiguration { get; set; } #endregion @@ -64,8 +90,11 @@ namespace CodeImp.DoomBuilder.Controls // Initialize InitializeComponent(); ResizeColumnHeader(); - - if(General.Actions != null) + + loadingrequiredarchives = new Dictionary<string, CancellationTokenSource>(); + warnings = new List<Warning>(); + + if (General.Actions != null) { // Get key shortcuts (mxd) copyactionkey = General.Actions.GetActionByName("builder_copyselection").ShortcutKey; @@ -109,6 +138,266 @@ namespace CodeImp.DoomBuilder.Controls default: return -1; } } + + private List<string> RunCheckRequiredArchives(DataLocation loc, CancellationToken token) + { + return ResourceOptionsForm.CheckRequiredArchives(GameConfiguration, loc, token); + } + + private void StartRequiredArchivesCheck(string location) + { + if (GameConfiguration == null) return; + + DataLocation loc = new DataLocation(); + bool found = false; + + foreach (ListViewItem item in resourceitems.Items) + { + DataLocation dl = (DataLocation)item.Tag; + if (dl.location == location) + { + loc = dl; + found = true; + break; + } + } + + if (!found) return; + + var cancellation = new CancellationTokenSource(); + + General.WriteLogLine(string.Format("Resource check started for: {0}", loc.location)); + + loadingrequiredarchives.Add(location, cancellation); + RefreshLoading(); + var dispatcher = Dispatcher.CurrentDispatcher; + Task.Run(() => RunCheckRequiredArchives(loc, cancellation.Token)).ContinueWith((t) => + { + dispatcher.Invoke(() => + { + try + { + if (!t.IsFaulted) + { + loc.requiredarchives = t.Result; + // in case of dir, option1/2 should be erased + if (loc.type == DataLocation.RESOURCE_DIRECTORY) + loc.option1 = loc.option2 = false; + // check if it has to be force-excluded from testing + foreach (var arc in GameConfiguration.RequiredArchives) + { + if (loc.requiredarchives.Contains(arc.ID) && arc.ExcludeFromTesting) + loc.notfortesting = true; + } + } + else loc.requiredarchives = new List<string>(); + + if (!t.IsCanceled) + { + foreach (ListViewItem item in resourceitems.Items) + { + if (((DataLocation)item.Tag).location == location) + { + item.Tag = loc; + if (OnContentChanged != null) OnContentChanged(); + break; + } + } + } + } + catch (Exception e) + { + General.WriteLogLine(e.ToString()); + } + + cancellation.Dispose(); + + if (!t.IsCanceled && loadingrequiredarchives[location] == cancellation) + { + General.WriteLogLine(string.Format("Resource check completed for: {0} (Completed = {1}, Faulted = {2}, Canceled = {3}, Match = {4})", location, t.IsCompleted, t.IsFaulted, t.IsCanceled, loadingrequiredarchives[location] == cancellation)); + loadingrequiredarchives.Remove(location); + RefreshLoading(); + } + + // if nothing is loading, update warnings if any + if (loadingrequiredarchives.Count == 0) + UpdateWarnings(); + }); + }); + } + + private void ShowWarning(string text, bool loading) + { + Panel p = new Panel(); + Controls.Add(p); + + // find offset + int lastTop = 0; + foreach (Warning w in warnings) + lastTop = Math.Max(lastTop, w.Wrapper.Bottom + 8); + + p.Top = lastTop; + p.Left = 0; + p.Width = Width; + p.Height = 48; + p.BackColor = SystemColors.Info; + p.BorderStyle = BorderStyle.FixedSingle; + p.ForeColor = SystemColors.InfoText; + + PictureBox pb = new PictureBox(); + pb.Width = 16; + pb.Height = 16; + pb.Left = 8; + pb.Top = 8; + pb.Image = loading ? Properties.Resources.Loader: Properties.Resources.Warning; + p.Controls.Add(pb); + + Label l = new Label(); + l.Left = 8 + 16 + 8; + l.Top = 10; + l.MinimumSize = new Size(Width - 32 - 8, 0); + l.MaximumSize = new Size(Width - 32 - 8, 640); + l.Width = l.MinimumSize.Width; + l.Height = 48; + l.Text = text; + l.AutoSize = true; + p.Controls.Add(l); + + // resize panel + p.Height = 22 + l.Height; + + Controls.SetChildIndex(p, 0); + + warnings.Add(new Warning(p, pb, l)); + + lastTop = p.Bottom + 8; + + resourceitems.Height = Height - lastTop - 32; + resourceitems.Top = lastTop; + } + + private int GetWarningsHeight() + { + int lastTop = 0; + foreach (Warning w in warnings) + lastTop = Math.Max(lastTop, w.Wrapper.Bottom + 8); + + return lastTop; + } + + private void UpdateWarnings() + { + int lastH = GetWarningsHeight(); + + foreach (Warning w in warnings) + w.Wrapper.Dispose(); + + warnings.Clear(); + + resourceitems.Height = Height - 32; + resourceitems.Top = 0; + + List<string> requiredarchives = new List<string>(); + foreach (ListViewItem item in resourceitems.Items) + { + DataLocation loc = (DataLocation)item.Tag; + if (loc.requiredarchives != null) + requiredarchives.AddRange(loc.requiredarchives); + } + + // warning 1: you do not have a required file + if (GameConfiguration != null) + { + foreach (RequiredArchive arc in GameConfiguration.RequiredArchives) + { + if (!requiredarchives.Contains(arc.ID)) + ShowWarning(string.Format("Warning: a resource archive is required for this game configuration, but not present:\n \"{0}\"\nWithout it, UDB will have severely limited capabilities.", arc.FileName), false); + } + } + + // warning 2: map without any resources. this makes sense only on map open dialog and not game configurations dialog + if (IsMapControl) + { + if (resourceitems.Items.Count == 0) + ShowWarning("Warning: you are about to edit a map without any resources.\nTextures, flats and sprites may not be shown correctly or may not show up at all.", false); + } + + // warning 3: multiple instances of the same required file + if (GameConfiguration != null) + { + for (int i = 0; i < requiredarchives.Count; i++) + { + if (requiredarchives.IndexOf(requiredarchives[i]) != i) + { + foreach (RequiredArchive arc in GameConfiguration.RequiredArchives) + { + if (arc.ID == requiredarchives[i]) + ShowWarning(string.Format("Warning: required archive was added more than once:\n \"{0}\"\nThis will most likely not work.", arc.FileName), false); + } + } + } + } + + int h = GetWarningsHeight(); + if (lastH != h && OnWarningsChanged != null) + { + OnWarningsChanged(h); + // possibly recalculate size + resourceitems.Height = Height - h - 32; + resourceitems.Top = h; + } + } + + private void RefreshLoading() + { + resourceitems.BeginUpdate(); + + bool anyLoading = false; + + foreach (ListViewItem item in resourceitems.Items) + { + DataLocation dl = (DataLocation)item.Tag; + if (IsLoading(dl.location)) + { + item.ImageIndex = GetLoaderIndex(); + anyLoading |= true; + } + else item.ImageIndex = GetIconIndex(dl.type, item.ForeColor != SystemColors.WindowText); + } + + resourceitems.EndUpdate(); + + if (anyLoading) + { + foreach (Warning w in warnings) + w.Picture.Image = Properties.Resources.Loader; + } + else + { + foreach (Warning w in warnings) + w.Picture.Image = Properties.Resources.Warning; + } + } + + private void CancelLoading(string location) + { + General.WriteLogLine(string.Format("Resource check cancelled for: {0}", location)); + if (loadingrequiredarchives.ContainsKey(location)) + { + loadingrequiredarchives[location].Cancel(); + loadingrequiredarchives.Remove(location); + } + } + + private bool IsLoading(string location) + { + return loadingrequiredarchives.ContainsKey(location); + } + + private int GetLoaderIndex() + { + return 6; + } // This will show a fixed list public void FixedResourceLocationList(DataLocationList list) @@ -123,8 +412,11 @@ namespace CodeImp.DoomBuilder.Controls for(int i = resourceitems.Items.Count - 1; i >= 0; i--) { // Remove item if not fixed - if(resourceitems.Items[i].ForeColor != SystemColors.WindowText) + if (resourceitems.Items[i].ForeColor != SystemColors.WindowText) + { + CancelLoading(((DataLocation)resourceitems.Items[i].Tag).location); resourceitems.Items.RemoveAt(i); + } else currentitems.Add((DataLocation)resourceitems.Items[i].Tag); //mxd } @@ -138,17 +430,25 @@ namespace CodeImp.DoomBuilder.Controls // Add item as fixed resourceitems.Items.Insert(0, new ListViewItem(list[i].location)); resourceitems.Items[0].Tag = list[i]; - resourceitems.Items[0].ImageIndex = GetIconIndex(list[i].type, true); + resourceitems.Items[0].ImageIndex = IsLoading(list[i].location) ? GetLoaderIndex() : GetIconIndex(list[i].type, true); // Set disabled resourceitems.Items[0].ForeColor = SystemColors.GrayText; // Validate path (mxd) resourceitems.Items[0].BackColor = (list[i].IsValid() ? resourceitems.BackColor : Color.MistyRose); + + // Check if resource has no info about membership in Game configuration's requiredarchives + // This normally happens if it was imported from old DBS or drag-dropped + if (list[i].requiredarchives == null) + StartRequiredArchivesCheck(list[i].location); } // Done resourceitems.EndUpdate(); + + if (loadingrequiredarchives.Count == 0) + UpdateWarnings(); } // This will edit the given list @@ -165,8 +465,11 @@ namespace CodeImp.DoomBuilder.Controls for(int i = resourceitems.Items.Count - 1; i >= 0; i--) { // Remove item unless fixed - if(resourceitems.Items[i].ForeColor == SystemColors.WindowText) + if (resourceitems.Items[i].ForeColor == SystemColors.WindowText) + { + CancelLoading(((DataLocation)resourceitems.Items[i].Tag).location); resourceitems.Items.RemoveAt(i); + } } // Go for all items @@ -176,6 +479,9 @@ namespace CodeImp.DoomBuilder.Controls AddItem(dl); } + if (loadingrequiredarchives.Count == 0) + UpdateWarnings(); + // Done resourceitems.EndUpdate(); ResizeColumnHeader(); @@ -208,7 +514,7 @@ namespace CodeImp.DoomBuilder.Controls int index = resourceitems.Items.Count; resourceitems.Items.Add(new ListViewItem(rl.location)); resourceitems.Items[index].Tag = rl; - resourceitems.Items[index].ImageIndex = GetIconIndex(rl.type, false); + resourceitems.Items[index].ImageIndex = IsLoading(rl.location) ? GetLoaderIndex() : GetIconIndex(rl.type, false); // Set normal color resourceitems.Items[index].ForeColor = SystemColors.WindowText; @@ -218,6 +524,12 @@ namespace CodeImp.DoomBuilder.Controls // Done resourceitems.EndUpdate(); + + // Check if resource has no info about membership in Game configuration's requiredarchives + // This normally happens if it was imported from old DBS or drag-dropped + if (rl.requiredarchives == null) + StartRequiredArchivesCheck(rl.location); + return true; } @@ -240,6 +552,7 @@ namespace CodeImp.DoomBuilder.Controls { // Open resource options dialog ResourceOptionsForm resoptions = new ResourceOptionsForm(new DataLocation(), "Add Resource", StartPath); + resoptions.GameConfiguration = GameConfiguration; resoptions.StartPosition = FormStartPosition.Manual; Rectangle startposition = new Rectangle(dialogoffset.X, dialogoffset.Y, 1, 1); startposition = this.RectangleToScreen(startposition); @@ -257,6 +570,9 @@ namespace CodeImp.DoomBuilder.Controls General.Interface.DisplayStatus(StatusType.Warning, "Resource already added!"); //mxd return; //mxd } + + if (loadingrequiredarchives.Count == 0) + UpdateWarnings(); } // Raise content changed event @@ -274,6 +590,7 @@ namespace CodeImp.DoomBuilder.Controls // Open resource options dialog ResourceOptionsForm resoptions = new ResourceOptionsForm((DataLocation)selecteditem.Tag, "Resource Options", StartPath); + resoptions.GameConfiguration = GameConfiguration; resoptions.StartPosition = FormStartPosition.Manual; Rectangle startposition = new Rectangle(dialogoffset.X, dialogoffset.Y, 1, 1); startposition = this.RectangleToScreen(startposition); @@ -292,13 +609,20 @@ namespace CodeImp.DoomBuilder.Controls DataLocation rl = resoptions.ResourceLocation; selecteditem.Text = rl.location; selecteditem.Tag = rl; - selecteditem.ImageIndex = GetIconIndex(rl.type, false); + selecteditem.ImageIndex = IsLoading(rl.location) ? GetLoaderIndex() : GetIconIndex(rl.type, false); // Done resourceitems.EndUpdate(); - + + // Check if resource has no info about membership in Game configuration's requiredarchives + // This normally happens if it was imported from old DBS or drag-dropped + if (rl.requiredarchives == null) + StartRequiredArchivesCheck(rl.location); + else if (loadingrequiredarchives.Count == 0) + UpdateWarnings(); + // Raise content changed event - if(OnContentChanged != null) OnContentChanged(); + if (OnContentChanged != null) OnContentChanged(); } } } @@ -402,19 +726,19 @@ namespace CodeImp.DoomBuilder.Controls { case ".wad": case ".iwad": - if(AddItem(new DataLocation(DataLocation.RESOURCE_WAD, path, false, false, false))) addedfiles++; + if(AddItem(new DataLocation(DataLocation.RESOURCE_WAD, path, false, false, false, null))) addedfiles++; break; case ".pk7": case ".pk3": case ".ipk3": case ".ipk7": - if(AddItem(new DataLocation(DataLocation.RESOURCE_PK3, path, false, false, false))) addedfiles++; + if(AddItem(new DataLocation(DataLocation.RESOURCE_PK3, path, false, false, false, null))) addedfiles++; break; } } else if(Directory.Exists(path)) { - if(AddItem(new DataLocation(DataLocation.RESOURCE_DIRECTORY, path, false, false, false))) addedfiles++; + if(AddItem(new DataLocation(DataLocation.RESOURCE_DIRECTORY, path, false, false, false, null))) addedfiles++; } } @@ -424,9 +748,12 @@ namespace CodeImp.DoomBuilder.Controls return; } } - + + if (loadingrequiredarchives.Count == 0) + UpdateWarnings(); + // Raise content changed event - if(OnContentChanged != null) OnContentChanged(); + if (OnContentChanged != null) OnContentChanged(); } // Client size changed @@ -469,8 +796,11 @@ namespace CodeImp.DoomBuilder.Controls // Display notification General.Interface.DisplayStatus(StatusType.Info, pastedcount + " Resource" + (pastedcount > 1 ? "s" : "") + " Pasted"); + if (loadingrequiredarchives.Count == 0) + UpdateWarnings(); + // Raise content changed event - if(OnContentChanged != null) OnContentChanged(); + if (OnContentChanged != null) OnContentChanged(); } } @@ -500,8 +830,11 @@ namespace CodeImp.DoomBuilder.Controls // Display notification General.Interface.DisplayStatus(StatusType.Info, pastedcount + " Resource" + (pastedcount > 1 ? "s" : "") + " Replaced"); + if (loadingrequiredarchives.Count == 0) + UpdateWarnings(); + // Raise content changed event - if(OnContentChanged != null) OnContentChanged(); + if (OnContentChanged != null) OnContentChanged(); } } @@ -519,8 +852,11 @@ namespace CodeImp.DoomBuilder.Controls ResizeColumnHeader(); + if (loadingrequiredarchives.Count == 0) + UpdateWarnings(); + // Raise content changed event - if(OnContentChanged != null) OnContentChanged(); + if (OnContentChanged != null) OnContentChanged(); } #endregion @@ -579,29 +915,5 @@ namespace CodeImp.DoomBuilder.Controls } #endregion - - #region ================== Events (mxd) - - //mxd. Because anchor-based alignment fails when using high-Dpi settings... - private void ResourceListEditor_Resize(object sender, EventArgs e) - { - resourceitems.Width = this.Width; - resourceitems.Height = this.Height - addresource.Height - addresource.Margin.Top - addresource.Margin.Bottom; - - addresource.Top = resourceitems.Bottom + addresource.Margin.Top; - editresource.Top = addresource.Top; - deleteresources.Top = addresource.Top; - - int buttonwidth = (this.Width - addresource.Margin.Left * 2) / 3; - addresource.Width = buttonwidth; - editresource.Width = buttonwidth; - deleteresources.Width = buttonwidth; - - addresource.Left = 0; - editresource.Left = addresource.Right + addresource.Margin.Left; - deleteresources.Left = editresource.Right + addresource.Margin.Left; - } - - #endregion - } + } } diff --git a/Source/Core/Controls/ResourceListEditor.resx b/Source/Core/Controls/ResourceListEditor.resx index 3d32f7f3694b74090842448f3e2a6ee79b864c50..1354ef582acf2967e09dc582521c9d79fbb9f26b 100755 --- a/Source/Core/Controls/ResourceListEditor.resx +++ b/Source/Core/Controls/ResourceListEditor.resx @@ -112,120 +112,142 @@ <value>2.0</value> </resheader> <resheader name="reader"> - <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <resheader name="writer"> - <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> - <metadata name="copypastemenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <metadata name="copypastemenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <value>195, 17</value> </metadata> - <metadata name="images.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <metadata name="images.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <value>17, 17</value> </metadata> <data name="images.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64"> <value> - AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAi - FgAAAk1TRnQBSQFMAgEBBgEAAZwBAAGcAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA - AwABIAMAAQEBAAEgBgABIDcAApYB/wEAApYB/wEAAkAB/wEAAkAB/wEAAkAB/wEAAkAB/y0AApYB/wEA - ApYB/wEAAkAB/wEAAkAB/wEAAkAB/wEAAkAB/5QAA4UB/wOFAf8DhQH/A4UB/wEAArkB/wEAApYB/wEA - ApYB/wEAAoEB/wEAAoEB/wEAAkAB/xAAA4AB/wOBAf8DgAH/A4AB/wOBAf8DgQH/A4AB/wEAArkB/wEA - ApYB/wEAApYB/wEAAoEB/wEAAoEB/wEAAkAB/5AAA4UB/wOFAf8DxgH/A8kB/wPGAf8BAAK5Af8DoAH/ - A2oB/wNqAf8BAAKBAf8BAAJAAf8MAAOAAf8DVAH/A4AB/wOVAf8DyQH/A9oB/wPaAf8DvAH/AQACuQH/ - A6gB/wOBAf8DgQH/AQACgQH/AQACQAH/jAADhQH/A8EB/wOFAf8D5QH/A+EB/wPlAf8BAAK5Af8BAAP/ - AQAD/wEAA/8BAAKBAf8BAAJAAf8IAAOAAf8DgQH/A4EB/wOAAf8DgQH/A4AB/wOBAf8DgAH/A4EB/wEA - ArkB/wEAA/8BAAP/AQAD/wEAAoEB/wEAAkAB/4gAA4UB/wPBAf8D0QH/A4UB/wPhAf8D4QH/A+UB/wEA - ArkB/wEAApYB/wEAApYB/wEAAoEB/wEAAoEB/wEAAmMB/xAAA48B/wOAAf8DgQH/A4AB/wOBAf8DgAH/ - A4EB/wEAArkB/wEAApYB/wEAApYB/wEAAoEB/wEAAoEB/wEAAmMB/4gAA4UB/wOFAf8DhQH/A8EB/wPe - Af8D3gH/A+EB/wEAArkB/wEAAkAB/wOxAf8DCgH/AQACgQH/AQACQAH/DAADjwH/A+MB/wOPAf8D1QH/ - A9oB/wPeAf8D4wH/A4AB/wEAArkB/wEAAkAB/wOxAf8DgQH/AQACgQH/AQACQAH/iAADhQH/A+EB/wPR - Af8D1QH/A9kB/wPeAf8D4QH/AQACuQH/AQACQAH/AwAB/wMKAf8BAAKWAf8BAAJAAf8MAAOPAf8DjwH/ - A48B/wPRAf8D2gH/A94B/wPeAf8DgAH/AQACuQH/AQACQAH/AwAB/wEPAQcBCAH/AQAClgH/AQACQAH/ - iAADhQH/A94B/wPNAf8D0QH/A9UB/wPZAf8D2QH/A94B/wEAArkB/wEAArkB/wEAApYB/wEAAkAB/xAA - A48B/wPeAf8D0QH/A9EB/wPVAf8D2gH/A9oB/wOAAf8FAAK5Af8BAAK5Af8BAAKWAf8BAAJAAf+MAAOF - Af8D3gH/A80B/wPNAf8D0QH/A9UB/wPZAf8D2QH/A94B/wPZAf8DhQH/FAADjwH/A94B/wPNAf8DzQH/ - A9EB/wPVAf8D2gH/A4AB/wQAA48B/wOPAf8DgQH/kAADhQH/A94B/wPJAf8DyQH/A80B/wPRAf8D1QH/ - A9UB/wPZAf8D1QH/A4UB/xQAA48B/wPeAf8DyQH/A8kB/wPNAf8D0QH/A9UB/wOAAf8EAAOBAf8D0QH/ - A6QB/5AAA4UB/wPeAf8DxgH/A8kB/wPJAf8DzQH/A9EB/wPRAf8D1QH/A9UB/wOFAf8UAAOPAf8D3gH/ - A8UB/wPFAf8DyQH/A80B/wPNAf8DgQH/BAADjwH/A48B/wOAAf+QAAOFAf8D2QH/A8EB/wPBAf8DxgH/ - A8kB/wPNAf8DzQH/A9UB/wPRAf8DhQH/FAADjwH/A9oB/wPBAf8DwQH/A8UB/wPJAf8DzQH/A4AB/wQA - A4AB/wPRAf8DpAH/kAADhQH/A9kB/wPBAf8DxgH/A8YB/wPJAf8DzQH/A80B/wPRAf8D0QH/A4UB/xQA - A48B/wOPAf8DjwH/A48B/wOPAf8DjwH/A48B/wOPAf8EAAOAAf8DoAH/A4EB/5AAA4UB/wP1Af8D4QH/ - A94B/wPeAf8D2QH/A9kB/wPZAf8D1QH/A9UB/wOFAf8QAAOAAf8DgAH/A4EB/wOAAf8DgQH/A4EB/wOB - Af8DgQH/A4EB/wOAAf8DmgH/A58B/wNRAf8DgAH/jAADhQH/A4UB/wOFAf8DhQH/A4UB/wOFAf8DhQH/ - A4UB/wOFAf8DhQH/A4UB/xQAA4EB/wNaAf8DlQH/A8kB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A7wB/wOA - Af8DgAH/A4AB/9AAA4AB/wOAAf8DgAH/A4AB/wOAAf8DgAH/A4AB/wOAAf8DgAH/A4AB/wOAAf//ADQA - Af8DAAH/AwAB/wMAAf8tAAKWAf8BAAKWAf8BAAJAAf8BAAJAAf8BAAJAAf8BAAJAAf9YAAMPAf8DDwH/ - Aw8B/wMPAf8DDwH/Aw8B/wMPAf8DDwH/GAABAgIAAf8BAgIAAf8BAgIAAf8BAgIAAf8BAgIAAf8BAgIA - Af8BAgIAAf8BHQETAQ8B/wFkAWABVgH/AVEBTAEfAf8BDgEJAQAB/wECAgAB/ykAArkB/wEAApYB/wEA - ApYB/wEAAoEB/wEAAoEB/wEAAkAB/wQAAYEBiAGQAf8BYQGBAZAB/wFhAoEB/wFRAoEB/wFRAWEBgQH/ - AUEBWQFhAf8BQQFJAVEB/wExATkBQQH/ASECMQH/AiEBMQH/AREBGQEhAf8DEQH/AhEBIQH/HAADDwH/ - AwEB/wOwAf8DsQH/A7AB/wOtAf8DqwH/A6AB/wMPAf8UAAENAgAB/wExAR8BAAH/AVUBRwEhAf8BnwGC - ASgB/wHbAccBkAH/AeYB1wG0Af8B5gHXAbQB/wG0Aa4BjwH/AWcBXQE6Af8BawFdATkB/wFKAT4BFwH/ - AREBBQEAAf8BAgIAAf8EAAOXAf8DkQH/A4kB/wOEAf8DgQH/A2EB/wNaAf8DTQH/A0AB/wEAArkB/wOg - Af8DagH/A2oB/wEAAoEB/wEAAkAB/wQAAYEBiAGQAf8BkAGoAbAB/wGQAagBsAH/AQEBkAHQAf8BAQGQ - AdAB/wEBAZAB0AH/AQEBkAHAAf8BEQGIAcAB/wERAYEBsAH/AREBgQGwAf8BIQGBAaAB/wEhAYEBkAH/ - ASEBSQFhAf8DkgH/FAADDwH/A6oB/wMBAf8D1wH/A9kB/wPcAf8D3wH/A+EB/wPPAf8DDwH/EwAB/wMA - Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AQ4BBwEDAf8BXgFVAUEB/wFkAVMBJgH/ARwBDQEA - Af8BAgIAAf8EAAOXAf8DsQH/A7EB/wOEAf8DhAH/A4QB/wOBAf8DhAH/A4EB/wEAArkB/wEAA/8BAAP/ - AQAD/wEAAoEB/wEAAkAB/wQAAYEBiAGQAf8BYQHYAv8BkAGoAbAB/wGBAeAC/wFhAdAC/wFRAcgC/wFR - AcgC/wFBAcAB8AH/ATEBsAHwAf8BMQGoAfAB/wEhAaAB4AH/AREBkAHQAf8BIQFpAYEB/wFaAWIBaAH/ - EAADDwH/A6oB/wPBAf8DAQH/A9UB/wPZAf8D3QH/A+EB/wPlAf8D0gH/Aw8B/xgAA1QB/wMAAf8DAAH/ - AwAB/wMAAf8DAAH/AwAB/wQAASgBIAEaAf8BYAFaAVAB/wELAQEBBAH/CAADngH/A74B/wOxAf8DywH/ - A74B/wO4Af8DuAH/A6sB/wOkAf8BAAK5Af8BAAKWAf8BAAKWAf8BAAKBAf8BAAKBAf8BAAJjAf8EAAGB - AZABoAH/AWEB2AL/AZABqAGwAf8BkAHAAdAB/wGBAdgC/wFhAdAC/wFhAdAC/wFRAcgC/wFRAcAC/wFB - AbgB8AH/ATEBsAHwAf8BMQGoAfAB/wERAYgB0AH/ASEBSQFhAf8DkgH/DAADDwH/AwEB/wMBAf8DqgH/ - A84B/wPTAf8D2AH/A9wB/wPgAf8D0QH/Aw8B/xQAA1QB/wPYAf8DVAH/A8AB/wPOAf8D0wH/A9gB/wMA - Af8EAAEiARgBFwH/A8AB/wOBAf8IAAOkAf8DvgH/A7EB/wO+Af8DxAH/A74B/wO+Af8DuAH/A7gB/wEA - ArkB/wEAAkAB/wOxAf8DCgH/AQACgQH/AQACQAH/BAABgQGQAaAB/wGBAdgB8AH/AWEB2AL/AZABqAGw - Af8BgQHgAv8BgQHQAv8BYQHYAv8BYQHQAv8BYQHQAv8BUQHIAv8BQQHAAfAB/wFBAbgB8AH/ATEBsAHw - Af8BIQFpAYEB/wOBAf8MAAMPAf8D1QH/A8EB/wPEAf8DyQH/A88B/wPTAf8D1wH/A9sB/wPNAf8DDwH/ - FAADVAH/A1QB/wNUAf8DwAH/A8kB/wPPAf8D0wH/AwAB/wQAA1QB/wNUAf8BDgEFAQcB/wgAA6QB/wPE - Af8DvgH/A7EB/wPLAf8DxAH/A74B/wO+Af8DvgH/AQACuQH/AQACQAH/AwAB/wMKAf8BAAKWAf8BAAJA - Af8EAAGBAZgBoAH/AZAB4AHwAf8BYQHYAv8BkAGoAbAB/wGQAbgBwAH/AYEB2AL/AWEB2AL/AWEB2AL/ - AWEB2AL/AWEB0AL/AVEB0AL/AVEByAL/AUEBuAHwAf8BMQGgAeAB/wFKAWgBgQH/A5IB/wgAAw8B/wPT - Af8DvAH/A8AB/wPFAf8DyQH/A80B/wPRAf8D1QH/A8wB/wMPAf8UAANUAf8D0wH/A7wB/wPAAf8DxQH/ - A8kB/wPNAf8DAAH/BAABHAESARMB/wPAAf8DgQH/CAADpAH/A8sB/wO+Af8DsQH/A7gB/wPEAf8DvgH/ - A74B/wO+Af8DvgH/AQACuQH/AQACuQH/AQAClgH/AQACQAH/ATkBVwFnAf8DpAH/AYEBmAGgAf8BkAHg - AfAB/wGgAegC/wFhAdgC/wGQAagBsAH/AYEB4AL/AYEB4AL/AYEB4AL/AYEB4AL/AYEB4AL/AYEB4AL/ - AYEB4AL/AYEB2AL/AYEB2AL/AVEBqAHQAf8DgQH/CAADDwH/A9EB/wO3Af8DuwH/A8AB/wPEAf8DyAH/ - A8wB/wPRAf8DyQH/Aw8B/xQAA1QB/wPRAf8DtwH/A7sB/wPAAf8DxAH/A8gB/wMAAf8EAANUAf8DVAH/ - AQcBAAEBAf8IAAOkAf8DywH/A9gB/wO+Af8DsQH/A8sB/wPLAf8DywH/A8sB/wPLAf8DywH/A8sB/wPE - Af8DxAH/A6QB/wOJAf8BkAKgAf8BoAHoAfAB/wGgAegC/wGgAegC/wGQAagBsAH/AZABqAGwAf8BkAGo - AbAB/wGQAagBsAH/AYEBoAGwAf8BgQGgAbAB/wGBAZgBoAH/AYEBmAGgAf8BgQGQAaAB/wGBAZABoAH/ - AYEBiAGQAf8BgQGIAZAB/wgAAw8B/wPRAf8DswH/A7UB/wO5Af8DvwH/A8MB/wPHAf8DywH/A8YB/wMP - Af8UAANUAf8D0QH/A7MB/wO1Af8DuQH/A78B/wPDAf8DAAH/BAABHAESARMB/wPAAf8DgQH/CAADqwH/ - A9IB/wPYAf8D2AH/A7EB/wOxAf8DsQH/A7EB/wOrAf8DqwH/A6QB/wOkAf8DpAH/A6QB/wOeAf8DlwH/ - AZABoAGwAf8BoAHoAfAB/wGgAfAC/wGgAegC/wGgAegC/wGBAdgC/wFhAdgC/wFhAdgC/wFhAdgC/wFh - AdgC/wFhAdgC/wFhAdgC/wGBAYgBkAH/FAADDwH/A9EB/wOtAf8DsQH/A7QB/wO5Af8DvAH/A8EB/wPF - Af8DxAH/Aw8B/xQAA1QB/wPRAf8DrQH/A7EB/wO0Af8DuQH/A7wB/wMAAf8EAANUAf8DVAH/AQcBAAEB - Af8IAAOxAf8D0gH/A9gB/wPYAf8D2AH/A8sB/wO+Af8DvgH/A74B/wO+Af8DvgH/A74B/wOXAf8MAAGQ - AaABsAH/AaAC8AH/AbAC8AH/AaAB8AL/AaAB6AL/AaAB6AL/AYEB2AL/AZACoAH/AYEBmAGgAf8BgQGY - AaAB/wGBAZABoAH/AYECkAH/AYEBiAGQAf8UAAMPAf8DygH/A6gB/wOsAf8DsAH/A7QB/wO4Af8DvAH/ - A8AB/wPBAf8DDwH/FAADVAH/A8oB/wOoAf8DrAH/A7AB/wO0Af8DuAH/AwAB/wQAARwBEgETAf8DwAH/ - A4EB/wgAA7EB/wPSAf8D2AH/A9gB/wPYAf8D2AH/A8QB/wOrAf8DpAH/A6QB/wOkAf8DngH/A5cB/wwA - AZABqAGwAf8BoAHQAeAB/wGwAvAB/wGwAvAB/wGgAfAC/wGgAegC/wGQAaABsAH/A5IB/ygAAw8B/wPL - Af8DqQH/A6wB/wOwAf8DtAH/A7cB/wO7Af8DvQH/A8AB/wMPAf8UAANUAf8DVAH/A1QB/wNUAf8DVAH/ - A1QB/wNUAf8DVAH/BAABEQEJAQoB/wGFAYMBYgH/ARMBCgEJAf8IAAOxAf8DywH/A9gB/wPYAf8D2AH/ - A9gB/wOxAf8DpAH/JAABkAGoAbAB/wGQAagBsAH/AZABqAGwAf8BkAGoAbAB/wGQAagBsAH/A5IB/ywA - Aw8B/wPyAf8D1QH/A9IB/wPRAf8DzgH/A8sB/wPKAf8DxwH/A8YB/wMPAf8TAAH/AQICAAH/AQICAAH/ - AQICAAH/AQICAAH/AQICAAH/AQICAAH/AQICAAH/AQICAAH/AQICAAH/AYEBaAFZAf8BnQGRAUgB/wEt - AR0BAAH/AwAB/wgAA7EB/wOxAf8DsQH/A7EB/wOxAf8DpAH/bAADDwH/Aw8B/wMPAf8DDwH/Aw8B/wMP - Af8DDwH/Aw8B/wMPAf8DDwH/Aw8B/xQAAQUCAAH/AUUBKQEAAf8BnwGCASgB/wHbAccBkAH/AeYB1wG0 - Af8B5gHXAbQB/wHmAdcBtAH/AeYB1wG0Af8B4AHVAbEB/wG0Aa4BjwH/AVIBRgEjAf8BFQEIAQAB/wEC - AgAB/9MAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8BAgIAAf9IAAFCAU0BPgcA - AT4DAAEoAwABQAMAASADAAEBAQABAQYAAQEWAAP/AQAB/wGBAf8BwAQAAfgBAQHgBQAB8AEBAcAFAAHg - AQEBgAUAAcABAQHgBQABwAEBAcAFAAHAAQEBwAUAAcABAwHAASEEAAHAAQcBwAEjBAABwAEHAcABIwQA - AcABBwHAASMEAAHAAQcBwAEjBAABwAEHAcABIwQAAcABBwGAAQEEAAHAAQcBwAEBBAAC/wHgAQMEAAX/ - AcMB/wGBAv8B+AEHAeABAQH/AYEBAAEHAfABBwHAAQEBAAEBAQABAwHgAQcBgAEBAQABAQEAAQMBwAEH - AeABIwEAAQEBAAEBAcABBwHAASMBAAEBAQABAQHAAQcBwAEjAQABAQIAAcABBwHAASMEAAHAAQcBwAEj - BAABwAEHAcABIwMAAQcBwAEHAcABIwEAAQcBAAEHAcABBwHAASMBAAEHAQAB/wHAAQcBwAEjAQAB/wGB - Af8BwAEHAYABAQGBA/8BwAEHAcABAQb/AeABAwL/Cw== + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAs + GwAAAk1TRnQBSQFMAgEBBwEAAcQBAAHEAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABIAMAAQEBAAEgBgABIDcAApYB/wEAApYB/wEAAjsB/wEAAjsB/wEAAjsB/wEAAjsB/y0AApYB/wEA + ApYB/wEAAjsB/wEAAjsB/wEAAjsB/wEAAjsB/xQAAWcBPAEIAf8BoAFcARMB/wG1AWsBGAH/AbUBawEY + Af8BoAFcARMB/wFnATwBCAH/aAADhQH/A4UB/wOFAf8DhQH/AQACuQH/AQAClgH/AQAClgH/AQACgQH/ + AQACgQH/AQACOwH/EAADgAH/A4EB/wOAAf8DgAH/A4EB/wOBAf8DgAH/AQACuQH/AQAClgH/AQAClgH/ + AQACgQH/AQACgQH/AQACOwH/DAABXwE2AQYB/wHRAYEBHgH/Ae8BlQEkAf8B8wGXASUB/wHzAZcBJQH/ + AfMBlwElAf8B8wGXASUB/wHvAZUBJAH/AdEBgQEeAf8BXwE2AQYB/1wAA4UB/wOFAf8DxgH/A8kB/wPG + Af8BAAK5Af8DoAH/A2UB/wNlAf8BAAKBAf8BAAI7Af8MAAOAAf8DTwH/A4AB/wOVAf8DyQH/A9oB/wPa + Af8DvAH/AQACuQH/A6gB/wOBAf8DgQH/AQACgQH/AQACOwH/CAABhgFMAQ0B/wHqAZIBJAH/AfMBlwEl + Af8B8wGXASUB/wHzAZcBJQH/AfMBlwElAf8B8wGXASUB/wHzAZcBJQH/AfMBlwElAf8B8wGXASUB/wHq + AZIBJAH/AYYBTAENAf9UAAOFAf8DwQH/A4UB/wPlAf8D4QH/A+UB/wEAArkB/wEAA/8BAAP/AQAD/wEA + AoEB/wEAAjsB/wgAA4AB/wOBAf8DgQH/A4AB/wOBAf8DgAH/A4EB/wOAAf8DgQH/AQACuQH/AQAD/wEA + A/8BAAP/AQACgQH/AQACOwH/BAABZAFNAQQB/wHyAbYBIAH/AfQBmwElAf8B8wGXASUB/wHyAZYBJQH/ + AdsBiAEgAf8BvAFvARkB/wG8AW8BGQH/AdsBiAEgAf8B8gGWASUB/wHzAZcBJQH/AfMBlwElAf8B6gGS + ASQB/wFfATYBBgH/TAADhQH/A8EB/wPRAf8DhQH/A+EB/wPhAf8D5QH/AQACuQH/AQAClgH/AQAClgH/ + AQACgQH/AQACgQH/AQACXgH/EAADjwH/A4AB/wOBAf8DgAH/A4EB/wOAAf8DgQH/AQACuQH/AQAClgH/ + AQAClgH/AQACgQH/AQACgQH/AQACXgH/BAAB3AGvARkC/wHMASAB/wH9AcMBIQH/Ae0BmwEjAf8BkAFT + ARAB/xAAAY4BUgEPAf8B7AGSASQB/wHzAZcBJQH/AfMBlwElAf8B0QGBAR4B/0wAA4UB/wOFAf8DhQH/ + A8EB/wPeAf8D3gH/A+EB/wEAArkB/wEAAjsB/wOxAf8DBQH/AQACgQH/AQACOwH/DAADjwH/A+MB/wOP + Af8D1QH/A9oB/wPeAf8D4wH/A4AB/wEAArkB/wEAAjsB/wOxAf8DgQH/AQACgQH/AQACOwH/AW0BVQEF + Af8B+wHJAR8C/wHMASAB/wH+AcsBIAH/AZYBcgENAf8YAAGQAVMBEAH/AfIBlgElAf8B8wGXASUB/wHv + AZUBJAH/AWYBOwEIAf9IAAOFAf8D4QH/A9EB/wPVAf8D2QH/A94B/wPhAf8BAAK5Af8BAAI7Af8DAAH/ + AwUB/wEAApYB/wEAAjsB/wwAA48B/wOPAf8DjwH/A9EB/wPaAf8D3gH/A94B/wOAAf8BAAK5Af8BAAI7 + Af8DAAH/AQoBAgEDAf8BAAKWAf8BAAI7Af8BqAGEAQ8C/wHMASAC/wHMASAB/wHmAbcBGwH/IAAB2wGI + ASAB/wHzAZcBJQH/AfMBlwElAf8BnwFdARMB/0gAA4UB/wPeAf8DzQH/A9EB/wPVAf8D2QH/A9kB/wPe + Af8BAAK5Af8BAAK5Af8BAAKWAf8BAAI7Af8QAAOPAf8D3gH/A9EB/wPRAf8D1QH/A9oB/wPaAf8DgAH/ + BQACuQH/AQACuQH/AQAClgH/AQACOwH/BAABvwGWARQC/wHMASAC/wHMASAB/wHFAZ0BFQH/IAABvAFv + ARkB/wHzAZcBJQH/AfMBlwElAf8BtgFrARgB/0gAA4UB/wPeAf8DzQH/A80B/wPRAf8D1QH/A9kB/wPZ + Af8D3gH/A9kB/wOFAf8UAAOPAf8D3gH/A80B/wPNAf8D0QH/A9UB/wPaAf8DgAH/BAADjwH/A48B/wOB + Af8IAAG/AZYBFAL/AcwBIAL/AcwBIAH/AcUBnQEVAf8gAAG8AW8BGQH/AfMBlwElAf8B8wGXASUB/wG2 + AWsBGAH/SAADhQH/A94B/wPJAf8DyQH/A80B/wPRAf8D1QH/A9UB/wPZAf8D1QH/A4UB/xQAA48B/wPe + Af8DyQH/A8kB/wPNAf8D0QH/A9UB/wOAAf8EAAOBAf8D0QH/A6QB/wgAAacBhAEQAv8BzAEgAv8BygEg + Af8B5AGrAR0B/yAAAdsBhwEgAf8B8wGXASUB/wHzAZcBJQH/AaABXAETAf9IAAOFAf8D3gH/A8YB/wPJ + Af8DyQH/A80B/wPRAf8D0QH/A9UB/wPVAf8DhQH/FAADjwH/A94B/wPFAf8DxQH/A8kB/wPNAf8DzQH/ + A4EB/wQAA48B/wOPAf8DgAH/CAABbAFPAQYB/wH0Aa0BIgH/AfQBnQEkAf8B8gGWASUB/wGOAVIBDwH/ + GAABjgFRAQ8B/wHyAZYBJQH/AfMBlwElAf8B7wGVASQB/wFnATwBCAH/SAADhQH/A9kB/wPBAf8DwQH/ + A8YB/wPJAf8DzQH/A80B/wPVAf8D0QH/A4UB/xQAA48B/wPaAf8DwQH/A8EB/wPFAf8DyQH/A80B/wOA + Af8EAAOAAf8D0QH/A6QB/wwAAdEBgQEeAf8B8wGXASUB/wHzAZcBJQH/AewBkgEkAf8BjgFRAQ8B/xAA + AY4BUgEPAf8B7AGSASQB/wHzAZcBJQH/AfMBlwElAf8B0QGBAR4B/0wAA4UB/wPZAf8DwQH/A8YB/wPG + Af8DyQH/A80B/wPNAf8D0QH/A9EB/wOFAf8UAAOPAf8DjwH/A48B/wOPAf8DjwH/A48B/wOPAf8DjwH/ + BAADgAH/A6AB/wOBAf8MAAFfATYBBgH/AeoBkgEkAf8B8wGXASUB/wHzAZcBJQH/AfIBlgElAf8B2wGH + ASAB/wG8AW8BGQH/AbwBbwEZAf8B2wGIASAB/wHyAZYBJQH/AfMBlwElAf8B8wGXASUB/wHqAZIBJAH/ + AV8BNgEGAf9MAAOFAf8D9QH/A+EB/wPeAf8D3gH/A9kB/wPZAf8D2QH/A9UB/wPVAf8DhQH/EAADgAH/ + A4AB/wOBAf8DgAH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgAH/A5oB/wOfAf8DTAH/A4AB/wwAAYYBTAEN + Af8B6gGSASQB/wHzAZcBJQH/AfMBlwElAf8B8wGXASUB/wHzAZcBJQH/AfMBlwElAf8B8wGXASUB/wHz + AZcBJQH/AfMBlwElAf8B6gGSASQB/wGGAUwBDQH/UAADhQH/A4UB/wOFAf8DhQH/A4UB/wOFAf8DhQH/ + A4UB/wOFAf8DhQH/A4UB/xQAA4EB/wNVAf8DlQH/A8kB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A7wB/wOA + Af8DgAH/A4AB/xAAAV4BNgEGAf8B0QGBAR4B/wHvAZUBJAH/AfMBlwElAf8B8wGXASUB/wHzAZcBJQH/ + AfMBlwElAf8B7wGVASQB/wHRAYEBHgH/AV8BNgEGAf+YAAOAAf8DgAH/A4AB/wOAAf8DgAH/A4AB/wOA + Af8DgAH/A4AB/wOAAf8DgAH/HAABZwE8AQgB/wGgAVwBEwH/AbUBawEYAf8BtQFrARgB/wGgAVwBEwH/ + AWcBPAEIAf//AAH/AwAB/wMAAf8DAAH/LQAClgH/AQAClgH/AQACOwH/AQACOwH/AQACOwH/AQACOwH/ + WAADCgH/AwoB/wMKAf8DCgH/AwoB/wMKAf8DCgH/AwoB/xsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA + Af8BGAEOAQoB/wFfAVsBUQH/AUwBRwEaAf8BCQEEAQAB/wMAAf8pAAK5Af8BAAKWAf8BAAKWAf8BAAKB + Af8BAAKBAf8BAAI7Af8EAAGBAYgBkAH/AVwBgQGQAf8BXAKBAf8BTAKBAf8BTAFcAYEB/wE8AVQBXAH/ + ATwBRAFMAf8BLAE0ATwB/wEcAiwB/wIcASwB/wEMARQBHAH/AwwB/wIMARwB/xwAAwoB/wMAAf8DsAH/ + A7EB/wOwAf8DrQH/A6sB/wOgAf8DCgH/FAABCAIAAf8BLAEaAQAB/wFQAUIBHAH/AZ8BggEjAf8B2wHH + AZAB/wHmAdcBtAH/AeYB1wG0Af8BtAGuAY8B/wFiAVgBNQH/AWYBWAE0Af8BRQE5ARIB/wEMAgAB/wMA + Af8EAAOXAf8DkQH/A4kB/wOEAf8DgQH/A1wB/wNVAf8DSAH/AzsB/wEAArkB/wOgAf8DZQH/A2UB/wEA + AoEB/wEAAjsB/wQAAYEBiAGQAf8BkAGoAbAB/wGQAagBsAH/AQABkAHQAf8BAAGQAdAB/wEAAZAB0AH/ + AQABkAHAAf8BDAGIAcAB/wEMAYEBsAH/AQwBgQGwAf8BHAGBAaAB/wEcAYEBkAH/ARwBRAFcAf8DkgH/ + FAADCgH/A6oB/wMAAf8D1wH/A9kB/wPcAf8D3wH/A+EB/wPPAf8DCgH/EwAB/wMAAf8DAAH/AwAB/wMA + Af8DAAH/AwAB/wMAAf8DAAH/AQkBAgEAAf8BWQFQATwB/wFfAU4BIQH/ARcBCAEAAf8DAAH/BAADlwH/ + A7EB/wOxAf8DhAH/A4QB/wOEAf8DgQH/A4QB/wOBAf8BAAK5Af8BAAP/AQAD/wEAA/8BAAKBAf8BAAI7 + Af8EAAGBAYgBkAH/AVwB2AL/AZABqAGwAf8BgQHgAv8BXAHQAv8BTAHIAv8BTAHIAv8BPAHAAfAB/wEs + AbAB8AH/ASwBqAHwAf8BHAGgAeAB/wEMAZAB0AH/ARwBZAGBAf8BVQFdAWMB/xAAAwoB/wOqAf8DwQH/ + AwAB/wPVAf8D2QH/A90B/wPhAf8D5QH/A9IB/wMKAf8YAANPAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA + Af8EAAEjARsBFQH/AVsBVQFLAf8BBgIAAf8IAAOeAf8DvgH/A7EB/wPLAf8DvgH/A7gB/wO4Af8DqwH/ + A6QB/wEAArkB/wEAApYB/wEAApYB/wEAAoEB/wEAAoEB/wEAAl4B/wQAAYEBkAGgAf8BXAHYAv8BkAGo + AbAB/wGQAcAB0AH/AYEB2AL/AVwB0AL/AVwB0AL/AUwByAL/AUwBwAL/ATwBuAHwAf8BLAGwAfAB/wEs + AagB8AH/AQwBiAHQAf8BHAFEAVwB/wOSAf8MAAMKAf8DAAH/AwAB/wOqAf8DzgH/A9MB/wPYAf8D3AH/ + A+AB/wPRAf8DCgH/FAADTwH/A9gB/wNPAf8DwAH/A84B/wPTAf8D2AH/AwAB/wQAAR0BEwESAf8DwAH/ + A4EB/wgAA6QB/wO+Af8DsQH/A74B/wPEAf8DvgH/A74B/wO4Af8DuAH/AQACuQH/AQACOwH/A7EB/wMF + Af8BAAKBAf8BAAI7Af8EAAGBAZABoAH/AYEB2AHwAf8BXAHYAv8BkAGoAbAB/wGBAeAC/wGBAdAC/wFc + AdgC/wFcAdAC/wFcAdAC/wFMAcgC/wE8AcAB8AH/ATwBuAHwAf8BLAGwAfAB/wEcAWQBgQH/A4EB/wwA + AwoB/wPVAf8DwQH/A8QB/wPJAf8DzwH/A9MB/wPXAf8D2wH/A80B/wMKAf8UAANPAf8DTwH/A08B/wPA + Af8DyQH/A88B/wPTAf8DAAH/BAADTwH/A08B/wEJAQABAgH/CAADpAH/A8QB/wO+Af8DsQH/A8sB/wPE + Af8DvgH/A74B/wO+Af8BAAK5Af8BAAI7Af8DAAH/AwUB/wEAApYB/wEAAjsB/wQAAYEBmAGgAf8BkAHg + AfAB/wFcAdgC/wGQAagBsAH/AZABuAHAAf8BgQHYAv8BXAHYAv8BXAHYAv8BXAHYAv8BXAHQAv8BTAHQ + Av8BTAHIAv8BPAG4AfAB/wEsAaAB4AH/AUUBYwGBAf8DkgH/CAADCgH/A9MB/wO8Af8DwAH/A8UB/wPJ + Af8DzQH/A9EB/wPVAf8DzAH/AwoB/xQAA08B/wPTAf8DvAH/A8AB/wPFAf8DyQH/A80B/wMAAf8EAAEX + AQ0BDgH/A8AB/wOBAf8IAAOkAf8DywH/A74B/wOxAf8DuAH/A8QB/wO+Af8DvgH/A74B/wO+Af8BAAK5 + Af8BAAK5Af8BAAKWAf8BAAI7Af8BNAFSAWIB/wOkAf8BgQGYAaAB/wGQAeAB8AH/AaAB6AL/AVwB2AL/ + AZABqAGwAf8BgQHgAv8BgQHgAv8BgQHgAv8BgQHgAv8BgQHgAv8BgQHgAv8BgQHgAv8BgQHYAv8BgQHY + Av8BTAGoAdAB/wOBAf8IAAMKAf8D0QH/A7cB/wO7Af8DwAH/A8QB/wPIAf8DzAH/A9EB/wPJAf8DCgH/ + FAADTwH/A9EB/wO3Af8DuwH/A8AB/wPEAf8DyAH/AwAB/wQAA08B/wNPAf8BAgIAAf8IAAOkAf8DywH/ + A9gB/wO+Af8DsQH/A8sB/wPLAf8DywH/A8sB/wPLAf8DywH/A8sB/wPEAf8DxAH/A6QB/wOJAf8BkAKg + Af8BoAHoAfAB/wGgAegC/wGgAegC/wGQAagBsAH/AZABqAGwAf8BkAGoAbAB/wGQAagBsAH/AYEBoAGw + Af8BgQGgAbAB/wGBAZgBoAH/AYEBmAGgAf8BgQGQAaAB/wGBAZABoAH/AYEBiAGQAf8BgQGIAZAB/wgA + AwoB/wPRAf8DswH/A7UB/wO5Af8DvwH/A8MB/wPHAf8DywH/A8YB/wMKAf8UAANPAf8D0QH/A7MB/wO1 + Af8DuQH/A78B/wPDAf8DAAH/BAABFwENAQ4B/wPAAf8DgQH/CAADqwH/A9IB/wPYAf8D2AH/A7EB/wOx + Af8DsQH/A7EB/wOrAf8DqwH/A6QB/wOkAf8DpAH/A6QB/wOeAf8DlwH/AZABoAGwAf8BoAHoAfAB/wGg + AfAC/wGgAegC/wGgAegC/wGBAdgC/wFcAdgC/wFcAdgC/wFcAdgC/wFcAdgC/wFcAdgC/wFcAdgC/wGB + AYgBkAH/FAADCgH/A9EB/wOtAf8DsQH/A7QB/wO5Af8DvAH/A8EB/wPFAf8DxAH/AwoB/xQAA08B/wPR + Af8DrQH/A7EB/wO0Af8DuQH/A7wB/wMAAf8EAANPAf8DTwH/AQICAAH/CAADsQH/A9IB/wPYAf8D2AH/ + A9gB/wPLAf8DvgH/A74B/wO+Af8DvgH/A74B/wO+Af8DlwH/DAABkAGgAbAB/wGgAvAB/wGwAvAB/wGg + AfAC/wGgAegC/wGgAegC/wGBAdgC/wGQAqAB/wGBAZgBoAH/AYEBmAGgAf8BgQGQAaAB/wGBApAB/wGB + AYgBkAH/FAADCgH/A8oB/wOoAf8DrAH/A7AB/wO0Af8DuAH/A7wB/wPAAf8DwQH/AwoB/xQAA08B/wPK + Af8DqAH/A6wB/wOwAf8DtAH/A7gB/wMAAf8EAAEXAQ0BDgH/A8AB/wOBAf8IAAOxAf8D0gH/A9gB/wPY + Af8D2AH/A9gB/wPEAf8DqwH/A6QB/wOkAf8DpAH/A54B/wOXAf8MAAGQAagBsAH/AaAB0AHgAf8BsALw + Af8BsALwAf8BoAHwAv8BoAHoAv8BkAGgAbAB/wOSAf8oAAMKAf8DywH/A6kB/wOsAf8DsAH/A7QB/wO3 + Af8DuwH/A70B/wPAAf8DCgH/FAADTwH/A08B/wNPAf8DTwH/A08B/wNPAf8DTwH/A08B/wQAAQwBBAEF + Af8BhQGDAV0B/wEOAQUBBAH/CAADsQH/A8sB/wPYAf8D2AH/A9gB/wPYAf8DsQH/A6QB/yQAAZABqAGw + Af8BkAGoAbAB/wGQAagBsAH/AZABqAGwAf8BkAGoAbAB/wOSAf8sAAMKAf8D8gH/A9UB/wPSAf8D0QH/ + A84B/wPLAf8DygH/A8cB/wPGAf8DCgH/EwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wGBAWMBVAH/AZ0BkQFDAf8BKAEYAQAB/wMAAf8IAAOxAf8DsQH/A7EB/wOxAf8DsQH/A6QB/2wA + AwoB/wMKAf8DCgH/AwoB/wMKAf8DCgH/AwoB/wMKAf8DCgH/AwoB/wMKAf8XAAH/AUABJAEAAf8BnwGC + ASMB/wHbAccBkAH/AeYB1wG0Af8B5gHXAbQB/wHmAdcBtAH/AeYB1wG0Af8B4AHVAbEB/wG0Aa4BjwH/ + AU0BQQEeAf8BEAEDAQAB/wMAAf/TAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/0gAAUIBTQE+BwABPgMAASgDAAFAAwABIAMAAQEBAAEBBgABARYAA/8BAAH/AYEB/wHAAfgBHwIA + AfgBAQHgAQAB4AEHAgAB8AEBAcABAAHAAQMCAAHgAQEBgAEAAYABAQIAAcABAQHgAQABgwHBAgABwAEB + AcABAAEHAeACAAHAAQEBwAEAAQ8B8AIAAcABAwHAASEBDwHwAgABwAEHAcABIwEPAfACAAHAAQcBwAEj + AQ8B8AIAAcABBwHAASMBBwHgAgABwAEHAcABIwGDAcECAAHAAQcBwAEjAYABAQIAAcABBwGAAQEBwAED + AgABwAEHAcABAQHgAQcCAAL/AeABAwH4AR8CAAX/AcMB/wGBAv8B+AEHAeABAQH/AYEBAAEHAfABBwHA + AQEBAAEBAQABAwHgAQcBgAEBAQABAQEAAQMBwAEHAeABIwEAAQEBAAEBAcABBwHAASMBAAEBAQABAQHA + AQcBwAEjAQABAQIAAcABBwHAASMEAAHAAQcBwAEjBAABwAEHAcABIwMAAQcBwAEHAcABIwEAAQcBAAEH + AcABBwHAASMBAAEHAQAB/wHAAQcBwAEjAQAB/wGBAf8BwAEHAYABAQGBA/8BwAEHAcABAQb/AeABAwL/ + Cw== </value> </data> - <metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </metadata> </root> \ No newline at end of file diff --git a/Source/Core/Data/DataLocation.cs b/Source/Core/Data/DataLocation.cs index 299259d0d057f96c30a48cdbf7f033b706b96e60..632c5d64732eb2f693f3afc9ce84e5408a3953bb 100755 --- a/Source/Core/Data/DataLocation.cs +++ b/Source/Core/Data/DataLocation.cs @@ -17,6 +17,7 @@ #region ================== Namespaces using System; +using System.Collections.Generic; using System.IO; #endregion @@ -38,9 +39,10 @@ namespace CodeImp.DoomBuilder.Data public bool option1; public bool option2; public bool notfortesting; + public List<string> requiredarchives; // Constructor - public DataLocation(int type, string location, bool option1, bool option2, bool notfortesting) + public DataLocation(int type, string location, bool option1, bool option2, bool notfortesting, List<string> requiredarchives) { // Initialize this.type = type; @@ -50,10 +52,11 @@ namespace CodeImp.DoomBuilder.Data this.option2 = option2; this.notfortesting = notfortesting; this.name = string.Empty; //mxd + this.requiredarchives = requiredarchives; } //mxd. Constructor for WADs inside of PK3s - internal DataLocation(int type, string location, string initiallocation, bool option1, bool option2, bool notfortesting) + internal DataLocation(int type, string location, string initiallocation, bool option1, bool option2, bool notfortesting, List<string> requiredarchives) { // Initialize this.type = type; @@ -62,7 +65,8 @@ namespace CodeImp.DoomBuilder.Data this.option1 = option1; this.option2 = option2; this.notfortesting = notfortesting; - this.name = string.Empty; + this.name = string.Empty; + this.requiredarchives = requiredarchives; } // This displays the struct as string diff --git a/Source/Core/Data/DataLocationList.cs b/Source/Core/Data/DataLocationList.cs index 437f82824fb6ca9a6f1030edeeee0755aec04630..956efe6a17f2928e442c9e927ae5f336f89316de 100755 --- a/Source/Core/Data/DataLocationList.cs +++ b/Source/Core/Data/DataLocationList.cs @@ -20,6 +20,7 @@ using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Globalization; +using System.Linq; using CodeImp.DoomBuilder.IO; #endregion @@ -61,6 +62,9 @@ namespace CodeImp.DoomBuilder.Data if(rlinfo.Contains("option2") && (rlinfo["option2"] is int)) res.option2 = General.Int2Bool((int)rlinfo["option2"]); if(rlinfo.Contains("notfortesting") && (rlinfo["notfortesting"] is int)) res.notfortesting = General.Int2Bool((int)rlinfo["notfortesting"]); + if (rlinfo.Contains("requiredarchives") && rlinfo["requiredarchives"] is string) res.requiredarchives = ((string)rlinfo["requiredarchives"]).Split(',').ToList(); + else res.requiredarchives = null; + // Add resource Add(res); } @@ -101,6 +105,8 @@ namespace CodeImp.DoomBuilder.Data rlinfo.Add("option2", General.Bool2Int(this[i].option2)); rlinfo.Add("notfortesting", General.Bool2Int(this[i].notfortesting)); + if (this[i].requiredarchives != null) rlinfo.Add("requiredarchives", string.Join(",", this[i].requiredarchives.ToArray())); + // Add structure resinfo.Add("resource" + i.ToString(CultureInfo.InvariantCulture), rlinfo); } diff --git a/Source/Core/Data/DataManager.cs b/Source/Core/Data/DataManager.cs index a46b8afff1e5240e3e4d751c5abfc4295598a0aa..cd34525ddf392c2d505c315ee89ce20939671fa2 100755 --- a/Source/Core/Data/DataManager.cs +++ b/Source/Core/Data/DataManager.cs @@ -39,6 +39,7 @@ using CodeImp.DoomBuilder.ZDoom; using Matrix = CodeImp.DoomBuilder.Rendering.Matrix; using CodeImp.DoomBuilder.Controls; using CodeImp.DoomBuilder.Dehacked; +using System.Diagnostics; #endregion @@ -132,7 +133,6 @@ namespace CodeImp.DoomBuilder.Data // Things combined with things created from Decorate private DecorateParser decorate; private ZScriptParser zscript; - private Dictionary<DataReader, ICollection<string>> classesbyarchive; private Dictionary<string, ActorStructure> zdoomclasses; private List<ThingCategory> thingcategories; private Dictionary<int, ThingTypeInfo> thingtypes; @@ -324,29 +324,6 @@ namespace CodeImp.DoomBuilder.Data Load(configlistcopy, maplistcopy); } - // This is used in Load to check for erroneous configuration - private bool MatchRequiredArchive(DataReader dr, RequiredArchive arc) - { - foreach (RequiredArchiveEntry e in arc.Entries) - { - if (e.Class != null && (!classesbyarchive.ContainsKey(dr) || !classesbyarchive[dr].Contains(e.Class.ToLowerInvariant()))) - { - ICollection<string> coll = null; - classesbyarchive.TryGetValue(dr, out coll); - DebugConsole.WriteLine(string.Format("Class {0} does not exist in {1} (classes: {2})", e.Class, dr.GetTitle(), coll != null ? string.Join("; ", coll) : null)); - return false; - } - - if (e.Lump != null && !dr.FileExists(e.Lump)) - { - DebugConsole.WriteLine(string.Format("File {0} does not exist in {1}", e.Lump, dr.GetTitle())); - return false; - } - } - - return true; - } - // This loads all data resources internal void Load(DataLocationList configlist, DataLocationList maplist) { @@ -383,8 +360,6 @@ namespace CodeImp.DoomBuilder.Data cvars = new CvarsCollection(); ambientsounds = new Dictionary<int, AmbientSoundInfo>(); - classesbyarchive = new Dictionary<DataReader, ICollection<string>>(); - // Load texture sets foreach(DefinedTextureSet ts in General.Map.ConfigSettings.TextureSets) texturesets.Add(new MatchingTextureSet(ts)); @@ -413,7 +388,7 @@ namespace CodeImp.DoomBuilder.Data try { // Choose container type - switch(dl.type) + switch (dl.type) { //mxd. Load resource in read-only mode if: // 1. UseResourcesInReadonlyMode map option is set. @@ -423,10 +398,10 @@ namespace CodeImp.DoomBuilder.Data // WAD file container case DataLocation.RESOURCE_WAD: - c = new WADReader(dl, true); - if(((WADReader)c).WadFile.IsOfficialIWAD) //mxd + c = new WADReader(dl, General.Map.Config, true); + if (((WADReader)c).WadFile.IsOfficialIWAD) //mxd { - if(!string.IsNullOrEmpty(prevofficialiwad)) + if (!string.IsNullOrEmpty(prevofficialiwad)) General.ErrorLogger.Add(ErrorType.Warning, "Using more than one official IWAD as a resource is not recommended. Consider removing \"" + prevofficialiwad + "\" or \"" + dl.GetDisplayName() + "\"."); prevofficialiwad = dl.GetDisplayName(); } @@ -434,22 +409,22 @@ namespace CodeImp.DoomBuilder.Data // Directory container case DataLocation.RESOURCE_DIRECTORY: - c = new DirectoryReader(dl, true); + c = new DirectoryReader(dl, General.Map.Config, true); break; // PK3 file container case DataLocation.RESOURCE_PK3: - c = new PK3Reader(dl, true); + c = new PK3Reader(dl, General.Map.Config, true); break; } } - catch(Exception e) + catch (Exception e) { // Unable to load resource General.ErrorLogger.Add(ErrorType.Error, "Unable to load resources from location \"" + dl.location + "\". Please make sure the location is accessible and not in use by another program. The resources will now be loaded with this location excluded. You may reload the resources to try again.\n" + e.GetType().Name + " when creating data reader: " + e.Message); General.WriteLogLine(e.StackTrace); continue; - } + } // Add container if(c != null) @@ -645,36 +620,6 @@ namespace CodeImp.DoomBuilder.Data gldefsentries.Count + " dynamic light definitions, " + glowingflats.Count + " glowing flat definitions, " + skyboxes.Count + " skybox definitions, " + reverbs.Count + " sound environment definitions"); - - - // [ZZ] Error out if a required archive is not present. - foreach (RequiredArchive arc in General.Map.Config.RequiredArchives) - { - bool found = false; - foreach (DataReader dr in containers) - { - if (MatchRequiredArchive(dr, arc)) - { - found = true; - break; - } - } - -#if !DEBUG - if (!found) - { - string err = string.Format("A file that is required for this game configuration ({0}) was not found. The map is loaded with limited functionality.\n\nPlease check that this file is in the resources list.", arc.FileName); - if (arc.ExcludeFromTesting) - err += "\n\nNOTE: This archive needs to be excluded from testing."; - MessageBox.Show( - err, - Application.ProductName, - MessageBoxButtons.OK, MessageBoxIcon.Warning - ); - General.ErrorLogger.Add(ErrorType.Error, err); - } -#endif - } } // This unloads all data @@ -1782,33 +1727,32 @@ namespace CodeImp.DoomBuilder.Data { // Load Decorate info cumulatively (the last Decorate is added to the previous) // I'm not sure if this is the right thing to do though. - long t = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + Stopwatch t = new Stopwatch(); + t.Start(); currentreader = dr; - IEnumerable<TextResourceData> streams = dr.GetDecorateData("ZSCRIPT"); - foreach (TextResourceData data in streams) + foreach (TextResourceData data in dr.GetZScriptData("ZSCRIPT")) { // Parse the data data.Stream.Seek(0, SeekOrigin.Begin); zscript.Parse(data, true); - if (!classesbyarchive.ContainsKey(dr)) classesbyarchive[dr] = new HashSet<string>(); - foreach (string cls in zscript.LastClasses) - classesbyarchive[dr].Add(cls); - //mxd. DECORATE lumps are interdepandable. Can't carry on... if (zscript.HasError) { zscript.LogError(); break; } - } + } - DebugConsole.WriteLine(string.Format("Loading ZScript lumps from {0} took {1}ms", DateTimeOffset.Now.ToUnixTimeMilliseconds() - t)); + DebugConsole.WriteLine(string.Format("Loading ZScript lumps from {0} took {1}ms", dr.Location.location, t.ElapsedMilliseconds)); } + Stopwatch t2 = new Stopwatch(); + t2.Start(); zscript.Finalize(); - if (zscript.HasError) + DebugConsole.WriteLine(string.Format("Finalizing ZScript lumps took {0}ms", t2.ElapsedMilliseconds)); + if (zscript.HasError) zscript.LogError(); //mxd. Add to text resources collection @@ -1835,17 +1779,12 @@ namespace CodeImp.DoomBuilder.Data // Load Decorate info cumulatively (the last Decorate is added to the previous) // I'm not sure if this is the right thing to do though. currentreader = dr; - IEnumerable<TextResourceData> decostreams = dr.GetDecorateData("DECORATE"); - foreach(TextResourceData data in decostreams) + foreach(TextResourceData data in dr.GetDecorateData("DECORATE")) { // Parse the data data.Stream.Seek(0, SeekOrigin.Begin); decorate.Parse(data, true); - if (!classesbyarchive.ContainsKey(dr)) classesbyarchive[dr] = new HashSet<string>(); - foreach (string cls in decorate.LastClasses) - classesbyarchive[dr].Add(cls); - //mxd. DECORATE lumps are interdepandable. Can't carry on... if (decorate.HasError) { diff --git a/Source/Core/Data/DirectoryReader.cs b/Source/Core/Data/DirectoryReader.cs index fa909ba3d4d11a4ccffe6de99bd2d4512872bb90..90c1534536128697a946779c9b0003dd5245d544 100755 --- a/Source/Core/Data/DirectoryReader.cs +++ b/Source/Core/Data/DirectoryReader.cs @@ -38,20 +38,20 @@ namespace CodeImp.DoomBuilder.Data #region ================== Constructor / Disposer // Constructor - public DirectoryReader(DataLocation dl, bool asreadonly) : base(dl, asreadonly) + public DirectoryReader(DataLocation dl, GameConfiguration config, bool asreadonly) : base(dl, asreadonly) { General.WriteLogLine("Opening directory resource \"" + location.location + "\""); // Initialize - files = new DirectoryFilesList(dl.location, true); - Initialize(); + files = new DirectoryFilesList(dl.location, config, true); + Initialize(config); // We have no destructor GC.SuppressFinalize(this); } //mxd. Don't move directory wads anywhere - protected override void Initialize() + protected override void Initialize(GameConfiguration config) { // Load all WAD files in the root as WAD resources string[] wadfiles = GetWadFiles(); @@ -62,8 +62,8 @@ namespace CodeImp.DoomBuilder.Data string wadfilepath = Path.Combine(location.location, wadfile); if(General.Map.FilePathName != wadfilepath) { - DataLocation wdl = new DataLocation(DataLocation.RESOURCE_WAD, wadfilepath, false, false, true); - wads.Add(new WADReader(wdl, isreadonly) { ParentResource = this } ); + DataLocation wdl = new DataLocation(DataLocation.RESOURCE_WAD, wadfilepath, false, false, true, null); + wads.Add(new WADReader(wdl, config, isreadonly) { ParentResource = this } ); } } } @@ -146,7 +146,7 @@ namespace CodeImp.DoomBuilder.Data } catch(Exception e) { - General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while loading patch \"" + pname + "\" from directory: " + e.Message); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while loading patch \"" + pname + "\" from directory: " + e.Message); } // Nothing found @@ -197,7 +197,7 @@ namespace CodeImp.DoomBuilder.Data } catch(Exception e) { - General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while loading texture \"" + pname + "\" from directory: " + e.Message); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while loading texture \"" + pname + "\" from directory: " + e.Message); } // Nothing found @@ -230,7 +230,7 @@ namespace CodeImp.DoomBuilder.Data } catch(Exception e) { - General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while loading HiRes texture \"" + name + "\" from directory: " + e.Message); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while loading HiRes texture \"" + name + "\" from directory: " + e.Message); } // Nothing found @@ -263,7 +263,7 @@ namespace CodeImp.DoomBuilder.Data } catch(Exception e) { - General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while loading colormap \"" + pname + "\" from directory: " + e.Message); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while loading colormap \"" + pname + "\" from directory: " + e.Message); } // Nothing found @@ -300,7 +300,7 @@ namespace CodeImp.DoomBuilder.Data } catch(Exception e) { - General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while loading sprite \"" + pname + "\" from directory: " + e.Message); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while loading sprite \"" + pname + "\" from directory: " + e.Message); } // Nothing found @@ -331,7 +331,7 @@ namespace CodeImp.DoomBuilder.Data } catch(Exception e) { - General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while checking sprite \"" + pname + "\" existance in directory: " + e.Message); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while checking sprite \"" + pname + "\" existance in directory: " + e.Message); } // Nothing found @@ -368,7 +368,7 @@ namespace CodeImp.DoomBuilder.Data } catch(Exception e) { - General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while loading voxel \"" + name + "\" from directory: " + e.Message); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, e.GetType().Name + " while loading voxel \"" + name + "\" from directory: " + e.Message); } // Nothing found @@ -471,7 +471,7 @@ namespace CodeImp.DoomBuilder.Data if(casecorrectfilename == null) { - General.ErrorLogger.Add(ErrorType.Error, "Unable to load file " + filename + ": file doesn't exist"); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, "Unable to load file " + filename + ": file doesn't exist"); return null; } @@ -484,7 +484,7 @@ namespace CodeImp.DoomBuilder.Data } catch(Exception e) { - General.ErrorLogger.Add(ErrorType.Error, "Unable to load file: " + e.Message); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, "Unable to load file: " + e.Message); } return s; } @@ -504,7 +504,7 @@ namespace CodeImp.DoomBuilder.Data } catch(Exception e) { - General.ErrorLogger.Add(ErrorType.Error, "Unable to save file: " + e.Message); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, "Unable to save file: " + e.Message); return false; } diff --git a/Source/Core/Data/PK3Reader.cs b/Source/Core/Data/PK3Reader.cs index 79d96e940dc9bc01d07e57b7c1b93d7e8ebe8a85..9dd0cd23a51942318373570d750768f0742d6e91 100755 --- a/Source/Core/Data/PK3Reader.cs +++ b/Source/Core/Data/PK3Reader.cs @@ -68,17 +68,18 @@ namespace CodeImp.DoomBuilder.Data #region ================== Constructor / Disposer // Constructor - public PK3Reader(DataLocation dl, bool asreadonly) : base(dl, asreadonly) + public PK3Reader(DataLocation dl, GameConfiguration config, bool asreadonly) : base(dl, asreadonly) { - LoadFrom(dl, asreadonly); + LoadFrom(dl, config, asreadonly); } - private void LoadFrom(DataLocation dl, bool asreadonly) + private void LoadFrom(DataLocation dl, GameConfiguration config, bool asreadonly) { FileAccess access; FileShare share; isreadonly = asreadonly; + config = config; // Determine if opening for read only if (isreadonly) @@ -143,10 +144,10 @@ namespace CodeImp.DoomBuilder.Data filestream = null; // Make files list - files = new DirectoryFilesList(dl.GetDisplayName(), fileentries); + files = new DirectoryFilesList(dl.GetDisplayName(), config, Silent, fileentries); // Initialize without path (because we use paths relative to the PK3 file) - Initialize(); + Initialize(config); // We have no destructor GC.SuppressFinalize(this); @@ -589,7 +590,7 @@ namespace CodeImp.DoomBuilder.Data catch(SharpCompress.Compressors.Deflate.ZlibException) { // This happens when the PK3 was modified externally and the resources were not reloaded - General.ErrorLogger.Add(ErrorType.Error, "Cannot load the file \"" + filename + "\" from archive \"" + location.GetDisplayName() + "\". Did you modify the archive without reloading the resouces?"); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, "Cannot load the file \"" + filename + "\" from archive \"" + location.GetDisplayName() + "\". Did you modify the archive without reloading the resouces?"); filedata.Dispose(); filedata = null; @@ -598,7 +599,7 @@ namespace CodeImp.DoomBuilder.Data } catch(NotSupportedException e) { - General.ErrorLogger.Add(ErrorType.Error, "Cannot load the file \"" + filename + "\" from archive \"" + location.GetDisplayName() + "\". " + e.Message); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, "Cannot load the file \"" + filename + "\" from archive \"" + location.GetDisplayName() + "\". " + e.Message); filedata.Dispose(); filedata = null; @@ -618,7 +619,7 @@ namespace CodeImp.DoomBuilder.Data if(filedata == null) { //mxd - General.ErrorLogger.Add(ErrorType.Error, "Cannot find the file \"" + filename + "\" in archive \"" + location.GetDisplayName() + "\"."); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, "Cannot find the file \"" + filename + "\" in archive \"" + location.GetDisplayName() + "\"."); return null; } @@ -656,7 +657,7 @@ namespace CodeImp.DoomBuilder.Data + ", started at " + checkresult.Processes[0].StartTime + ")."; } - General.ErrorLogger.Add(ErrorType.Error, errmsg); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, errmsg); return false; } @@ -667,7 +668,7 @@ namespace CodeImp.DoomBuilder.Data if(za == null) { string errmsg = "Unable to save file \"" + filename + "\" into archive \"" + location.GetDisplayName() + "\". Unable to open target file as a zip archive."; - General.ErrorLogger.Add(ErrorType.Error, errmsg); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, errmsg); return false; } @@ -720,7 +721,7 @@ namespace CodeImp.DoomBuilder.Data case 60: case 62: case 124: - General.ErrorLogger.Add(ErrorType.Error, "Error in \"" + location.GetDisplayName() + "\": unsupported character \"" + c + "\" in path \"" + path + "\". File loading was skipped."); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, "Error in \"" + location.GetDisplayName() + "\": unsupported character \"" + c + "\" in path \"" + path + "\". File loading was skipped."); return false; default: diff --git a/Source/Core/Data/PK3StructuredReader.cs b/Source/Core/Data/PK3StructuredReader.cs index 5bc3aaf1282b054321efc584e2224e3a97f9ee6e..e3320dc5672e77fb6db28f5f717cdbe7b1793fb9 100755 --- a/Source/Core/Data/PK3StructuredReader.cs +++ b/Source/Core/Data/PK3StructuredReader.cs @@ -38,11 +38,14 @@ namespace CodeImp.DoomBuilder.Data protected const string COLORMAPS_DIR = "colormaps"; protected const string GRAPHICS_DIR = "graphics"; //mxd protected const string VOXELS_DIR = "voxels"; //mxd - + #endregion #region ================== Variables - + + // Optional setting + public bool Silent = false; + // Source protected readonly bool roottextures; protected readonly bool rootflats; @@ -70,7 +73,7 @@ namespace CodeImp.DoomBuilder.Data } // Call this to initialize this class - protected virtual void Initialize() + protected virtual void Initialize(GameConfiguration config) { // [ZZ] we can have wad files already. dispose if any. if (wads != null) foreach (WADReader wr in wads) wr.Dispose(); @@ -80,8 +83,8 @@ namespace CodeImp.DoomBuilder.Data foreach(string w in wadfiles) { string tempfile = CreateTempFile(w); - DataLocation wdl = new DataLocation(DataLocation.RESOURCE_WAD, tempfile, Path.Combine(location.GetDisplayName(), Path.GetFileName(w)), false, false, true); - wads.Add(new WADReader(wdl, location.type != DataLocation.RESOURCE_DIRECTORY) { ParentResource = this } ); + DataLocation wdl = new DataLocation(DataLocation.RESOURCE_WAD, tempfile, Path.Combine(location.GetDisplayName(), Path.GetFileName(w)), false, false, true, new List<string>()); + wads.Add(new WADReader(wdl, config, location.type != DataLocation.RESOURCE_DIRECTORY) { ParentResource = this } ); } } @@ -144,7 +147,7 @@ namespace CodeImp.DoomBuilder.Data if(stream.Length > 767) //mxd palette = new Playpal(stream); else - General.ErrorLogger.Add(ErrorType.Warning, "Warning: invalid palette \"" + foundfile + "\""); + if (!Silent) General.ErrorLogger.Add(ErrorType.Warning, "Warning: invalid palette \"" + foundfile + "\""); stream.Dispose(); } @@ -175,7 +178,7 @@ namespace CodeImp.DoomBuilder.Data if(stream.Length >= 256) //mxd colormap = new ColorMap(stream, palette); else - General.ErrorLogger.Add(ErrorType.Warning, "Warning: invalid colormap \"" + foundfile + "\""); + if (!Silent) General.ErrorLogger.Add(ErrorType.Warning, "Warning: invalid colormap \"" + foundfile + "\""); stream.Dispose(); } @@ -217,7 +220,7 @@ namespace CodeImp.DoomBuilder.Data if((texture1file != null) && FileExists(texture1file)) { MemoryStream filedata = LoadFile(texture1file); - WADReader.LoadTextureSet("TEXTURE1", filedata, ref imgset, pnames); + WADReader.LoadTextureSet("TEXTURE1", filedata, ref imgset, pnames, Silent); filedata.Dispose(); } @@ -226,7 +229,7 @@ namespace CodeImp.DoomBuilder.Data if((texture2file != null) && FileExists(texture2file)) { MemoryStream filedata = LoadFile(texture2file); - WADReader.LoadTextureSet("TEXTURE2", filedata, ref imgset, pnames); + WADReader.LoadTextureSet("TEXTURE2", filedata, ref imgset, pnames, Silent); filedata.Dispose(); } @@ -282,7 +285,7 @@ namespace CodeImp.DoomBuilder.Data if(string.IsNullOrEmpty(Path.GetFileNameWithoutExtension(f))) { // Can't load image without name - General.ErrorLogger.Add(ErrorType.Error, "Can't load an unnamed HiRes texture from \"" + Path.Combine(this.location.GetDisplayName(), HIRES_DIR) + "\". Please consider giving names to your resources."); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, "Can't load an unnamed HiRes texture from \"" + Path.Combine(this.location.GetDisplayName(), HIRES_DIR) + "\". Please consider giving names to your resources."); } else { @@ -813,7 +816,7 @@ namespace CodeImp.DoomBuilder.Data if(string.IsNullOrEmpty(Path.GetFileNameWithoutExtension(f))) { // Can't load image without name - General.ErrorLogger.Add(ErrorType.Error, "Can't load an unnamed texture from \"" + path + "\". Please consider giving names to your resources."); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, "Can't load an unnamed texture from \"" + path + "\". Please consider giving names to your resources."); } else { @@ -843,7 +846,7 @@ namespace CodeImp.DoomBuilder.Data } else { - General.ErrorLogger.Add(ErrorType.Warning, "Unable to load " + type + " file \"" + fullname + "\""); + if (!Silent) General.ErrorLogger.Add(ErrorType.Warning, "Unable to load " + type + " file \"" + fullname + "\""); return new string[0]; } } diff --git a/Source/Core/Data/Scripting/AccScriptHandler.cs b/Source/Core/Data/Scripting/AccScriptHandler.cs index 024324bcf1466fc0c0d01ef51b991bbc77bdff86..9d3f31b733cc8bfa4077d48d3e481eaabfb00973 100755 --- a/Source/Core/Data/Scripting/AccScriptHandler.cs +++ b/Source/Core/Data/Scripting/AccScriptHandler.cs @@ -25,7 +25,7 @@ namespace CodeImp.DoomBuilder.Data.Scripting target.Items.Clear(); AcsParserSE parser = new AcsParserSE { AddArgumentsToScriptNames = true, IsMapScriptsLump = tab is ScriptLumpDocumentTab, IgnoreErrors = true }; - DataLocation dl = new DataLocation(DataLocation.RESOURCE_DIRECTORY, Path.GetDirectoryName(string.IsNullOrEmpty(tab.Filename)? tab.Title : tab.Filename), false, false, false); + DataLocation dl = new DataLocation(DataLocation.RESOURCE_DIRECTORY, Path.GetDirectoryName(string.IsNullOrEmpty(tab.Filename)? tab.Title : tab.Filename), false, false, false, null); TextResourceData data = new TextResourceData(stream, dl, (parser.IsMapScriptsLump ? "?SCRIPTS" : tab.Filename)); if(parser.Parse(data, false)) diff --git a/Source/Core/Data/WADReader.cs b/Source/Core/Data/WADReader.cs index 4945463cd8705086e39567d082457e584bdb5617..47d06605cb6e268885b4007e51ce1c24f4122b75 100755 --- a/Source/Core/Data/WADReader.cs +++ b/Source/Core/Data/WADReader.cs @@ -61,6 +61,9 @@ namespace CodeImp.DoomBuilder.Data #region ================== Variables + // Optional setting + public bool Silent = false; + // Source private WAD file; private bool is_iwad; @@ -89,7 +92,7 @@ namespace CodeImp.DoomBuilder.Data #region ================== Constructor / Disposer // Constructor - public WADReader(DataLocation dl, bool asreadonly) : base(dl, asreadonly) + public WADReader(DataLocation dl, GameConfiguration config, bool asreadonly) : base(dl, asreadonly) { General.WriteLogLine("Opening WAD resource \"" + location.location + "\""); @@ -99,14 +102,14 @@ namespace CodeImp.DoomBuilder.Data // Initialize file = new WAD(location.location, asreadonly); strictpatches = dl.option1; - Initialize(); //mxd + Initialize(config); //mxd // We have no destructor GC.SuppressFinalize(this); } //mxd. Constructor for temporary WAD files - internal WADReader(DataLocation dl, bool asreadonly, bool create) : base(dl, asreadonly) + internal WADReader(DataLocation dl, GameConfiguration config, bool asreadonly, bool create) : base(dl, asreadonly) { if(!create) { @@ -119,14 +122,14 @@ namespace CodeImp.DoomBuilder.Data // Initialize file = new WAD(location.location, asreadonly); strictpatches = dl.option1; - Initialize(); + Initialize(config); // We have no destructor GC.SuppressFinalize(this); } //mxd - private void Initialize() + private void Initialize(GameConfiguration config) { is_iwad = file.IsIWAD; isreadonly |= file.IsReadOnly; // Just in case... @@ -141,13 +144,13 @@ namespace CodeImp.DoomBuilder.Data voxelranges = new List<LumpRange>(); //mxd // Find ranges - FindRanges(patchranges, General.Map.Config.PatchRanges, "patches", "Patch"); - FindRanges(spriteranges, General.Map.Config.SpriteRanges, "sprites", "Sprite"); - FindRanges(flatranges, General.Map.Config.FlatRanges, "flats", "Flat"); - FindRanges(textureranges, General.Map.Config.TextureRanges, "textures", "Texture"); - FindRanges(hiresranges, General.Map.Config.HiResRanges, "hires", "HiRes texture"); - FindRanges(colormapranges, General.Map.Config.ColormapRanges, "colormaps", "Colormap"); - FindRanges(voxelranges, General.Map.Config.VoxelRanges, "voxels", "Voxel"); + FindRanges(config, patchranges, config.PatchRanges, "patches", "Patch"); + FindRanges(config, spriteranges, config.SpriteRanges, "sprites", "Sprite"); + FindRanges(config, flatranges, config.FlatRanges, "flats", "Flat"); + FindRanges(config, textureranges, config.TextureRanges, "textures", "Texture"); + FindRanges(config, hiresranges, config.HiResRanges, "hires", "HiRes texture"); + FindRanges(config, colormapranges, config.ColormapRanges, "colormaps", "Colormap"); + FindRanges(config, voxelranges, config.VoxelRanges, "voxels", "Voxel"); //mxd invertedflatranges = new List<LumpRange>(); @@ -225,7 +228,7 @@ namespace CodeImp.DoomBuilder.Data } // This fills a ranges list - private void FindRanges(List<LumpRange> ranges, IDictionary rangeinfos, string rangename, string elementname) + private void FindRanges(GameConfiguration config, List<LumpRange> ranges, IDictionary rangeinfos, string rangename, string elementname) { Dictionary<LumpRange, KeyValuePair<string, string>> failedranges = new Dictionary<LumpRange, KeyValuePair<string, string>>(); //mxd Dictionary<int, bool> successfulrangestarts = new Dictionary<int, bool>(); //mxd @@ -234,8 +237,8 @@ namespace CodeImp.DoomBuilder.Data foreach(DictionaryEntry r in rangeinfos) { // Read start and end - string rangestart = General.Map.Config.ReadSetting(rangename + "." + r.Key + ".start", ""); - string rangeend = General.Map.Config.ReadSetting(rangename + "." + r.Key + ".end", ""); + string rangestart = config.ReadSetting(rangename + "." + r.Key + ".start", ""); + string rangeend = config.ReadSetting(rangename + "." + r.Key + ".end", ""); if((rangestart.Length > 0) && (rangeend.Length > 0)) { // Find ranges @@ -271,7 +274,7 @@ namespace CodeImp.DoomBuilder.Data foreach(KeyValuePair<LumpRange, KeyValuePair<string, string>> group in failedranges) { if(successfulrangestarts.ContainsKey(group.Key.start)) continue; - General.ErrorLogger.Add(ErrorType.Warning, "\"" + group.Value.Key + "\" range at index " + group.Key.start + " is not closed in resource \"" + location.GetDisplayName() + "\" (\"" + group.Value.Value + "\" marker is missing)."); + if (!Silent) General.ErrorLogger.Add(ErrorType.Warning, "\"" + group.Value.Key + "\" range at index " + group.Key.start + " is not closed in resource \"" + location.GetDisplayName() + "\" (\"" + group.Value.Value + "\" marker is missing)."); } //mxd. Check duplicates @@ -280,8 +283,10 @@ namespace CodeImp.DoomBuilder.Data HashSet<string> names = new HashSet<string>(StringComparer.OrdinalIgnoreCase); for(int i = range.start + 1; i < range.end; i++) { - if(names.Contains(file.Lumps[i].Name)) - General.ErrorLogger.Add(ErrorType.Warning, elementname + " \"" + file.Lumps[i].Name + "\", index " + i + " is double defined in resource \"" + location.GetDisplayName() + "\"."); + if (names.Contains(file.Lumps[i].Name)) + { + if (!Silent) General.ErrorLogger.Add(ErrorType.Warning, elementname + " \"" + file.Lumps[i].Name + "\", index " + i + " is double defined in resource \"" + location.GetDisplayName() + "\"."); + } else names.Add(file.Lumps[i].Name); } @@ -430,11 +435,11 @@ namespace CodeImp.DoomBuilder.Data Lump lump = file.FindLump("TEXTURE1"); if(lump != null) { - LoadTextureSet("TEXTURE1", lump.GetSafeStream(), ref images, pnames); + LoadTextureSet("TEXTURE1", lump.GetSafeStream(), ref images, pnames, Silent); if(images.Count > 0) images.RemoveAt(0); //mxd. The first TEXTURE1 texture cannot be used. Let's remove it here } lump = file.FindLump("TEXTURE2"); - if(lump != null) LoadTextureSet("TEXTURE2", lump.GetSafeStream(), ref images, pnames); + if(lump != null) LoadTextureSet("TEXTURE2", lump.GetSafeStream(), ref images, pnames, Silent); // Read ranges from configuration foreach(LumpRange range in textureranges) @@ -454,7 +459,7 @@ namespace CodeImp.DoomBuilder.Data else { // Can't load image without size - General.ErrorLogger.Add(ErrorType.Error, "Can't load texture \"" + file.Lumps[i].Name + "\" from \"" + location.GetDisplayName() + "\" because it doesn't contain any data."); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, "Can't load texture \"" + file.Lumps[i].Name + "\" from \"" + location.GetDisplayName() + "\" because it doesn't contain any data."); } } } @@ -512,7 +517,7 @@ namespace CodeImp.DoomBuilder.Data else { // Can't load image without size - General.ErrorLogger.Add(ErrorType.Error, "Can't load HiRes texture \"" + file.Lumps[i].Name + "\" from \"" + location.GetDisplayName() + "\" because it doesn't contain any data."); + if (!Silent) General.ErrorLogger.Add(ErrorType.Error, "Can't load HiRes texture \"" + file.Lumps[i].Name + "\" from \"" + location.GetDisplayName() + "\" because it doesn't contain any data."); } } } @@ -547,7 +552,7 @@ namespace CodeImp.DoomBuilder.Data } // This loads a set of textures - public static void LoadTextureSet(string sourcename, Stream texturedata, ref List<ImageData> images, PatchNames pnames) + public static void LoadTextureSet(string sourcename, Stream texturedata, ref List<ImageData> images, PatchNames pnames, bool silent) { if(texturedata.Length == 0) return; BinaryReader reader = new BinaryReader(texturedata); @@ -608,7 +613,7 @@ namespace CodeImp.DoomBuilder.Data else { // Can't load image without name - General.ErrorLogger.Add(ErrorType.Error, "Can't load an unnamed texture from \"" + sourcename + "\". Please consider giving names to your resources."); + if (!silent) General.ErrorLogger.Add(ErrorType.Error, "Can't load an unnamed texture from \"" + sourcename + "\". Please consider giving names to your resources."); } // Go for all patches in texture @@ -631,7 +636,7 @@ namespace CodeImp.DoomBuilder.Data else { // Can't load image without name - General.ErrorLogger.Add(ErrorType.Error, "Can't use an unnamed patch referenced in \"" + sourcename + "\". Please consider giving names to your resources."); + if (!silent) General.ErrorLogger.Add(ErrorType.Error, "Can't use an unnamed patch referenced in \"" + sourcename + "\". Please consider giving names to your resources."); } } } diff --git a/Source/Core/General/Launcher.cs b/Source/Core/General/Launcher.cs index 75df9c159a95c079e17eedf3e176bb6be6f32d42..ad71842b96426ce0bac7e68e76f5c6d9e04d4ab9 100755 --- a/Source/Core/General/Launcher.cs +++ b/Source/Core/General/Launcher.cs @@ -149,7 +149,7 @@ namespace CodeImp.DoomBuilder //mxd. General.Map.FilePathName will be empty when a newly created map was not saved yet. if(!string.IsNullOrEmpty(General.Map.FilePathName)) { - DataLocation maplocation = new DataLocation(DataLocation.RESOURCE_WAD, General.Map.FilePathName, false, false, false); + DataLocation maplocation = new DataLocation(DataLocation.RESOURCE_WAD, General.Map.FilePathName, false, false, false, null); locations.Remove(maplocation); //If maplocation was already added as a resource, make sure it's singular and is last in the list locations.Add(maplocation); } diff --git a/Source/Core/General/MapManager.cs b/Source/Core/General/MapManager.cs index 20b06028b12635af653fcb48f9a21bf651565487..47d9069a4196eeb53e14e7d9c2b19461119040af 100755 --- a/Source/Core/General/MapManager.cs +++ b/Source/Core/General/MapManager.cs @@ -295,12 +295,12 @@ namespace CodeImp.DoomBuilder map = new MapSet(); // Create temp wadfile - DataLocation templocation = new DataLocation(DataLocation.RESOURCE_WAD, General.MakeTempFilename(temppath), false, false, false); //mxd + DataLocation templocation = new DataLocation(DataLocation.RESOURCE_WAD, General.MakeTempFilename(temppath), false, false, false, null); //mxd General.WriteLogLine("Creating temporary file: " + templocation.location); #if DEBUG - tempwadreader = new WADReader(templocation, false, true); + tempwadreader = new WADReader(templocation, General.Map.Config, false, true); #else - try { tempwadreader = new WADReader(templocation, false, true); } + try { tempwadreader = new WADReader(templocation, General.Map.Config, false, true); } catch(Exception e) { General.ShowErrorMessage("Error while creating a temporary wad file:\n" + e.GetType().Name + ": " + e.Message, MessageBoxButtons.OK); @@ -389,12 +389,12 @@ namespace CodeImp.DoomBuilder map = new MapSet(); // Create temp wadfile - DataLocation templocation = new DataLocation(DataLocation.RESOURCE_WAD, General.MakeTempFilename(temppath), false, false, false); //mxd + DataLocation templocation = new DataLocation(DataLocation.RESOURCE_WAD, General.MakeTempFilename(temppath), false, false, false, null); //mxd General.WriteLogLine("Creating temporary file: " + templocation.location); #if DEBUG - tempwadreader = new WADReader(templocation, false, true); + tempwadreader = new WADReader(templocation, General.Map.Config, false, true); #else - try { tempwadreader = new WADReader(templocation, false, true); } catch(Exception e) + try { tempwadreader = new WADReader(templocation, General.Map.Config, false, true); } catch(Exception e) { General.ShowErrorMessage("Error while creating a temporary wad file:\n" + e.GetType().Name + ": " + e.Message, MessageBoxButtons.OK); return false; @@ -427,7 +427,7 @@ namespace CodeImp.DoomBuilder // Load data manager General.WriteLogLine("Loading data resources..."); data = new DataManager(); - DataLocation maplocation = new DataLocation(DataLocation.RESOURCE_WAD, filepathname, options.StrictPatches, false, false); + DataLocation maplocation = new DataLocation(DataLocation.RESOURCE_WAD, filepathname, options.StrictPatches, false, false, null); data.Load(configinfo.Resources, options.Resources, maplocation); // Remove unused sectors @@ -486,14 +486,14 @@ namespace CodeImp.DoomBuilder WAD mapwad; // Create temp wadfile - DataLocation templocation = new DataLocation(DataLocation.RESOURCE_WAD, General.MakeTempFilename(temppath), false, false, false); //mxd + DataLocation templocation = new DataLocation(DataLocation.RESOURCE_WAD, General.MakeTempFilename(temppath), false, false, false, null); //mxd General.WriteLogLine("Creating temporary file: " + templocation.location); if(tempwadreader != null) tempwadreader.Dispose(); #if DEBUG - tempwadreader = new WADReader(templocation, false, true); + tempwadreader = new WADReader(templocation, General.Map.Config, false, true); #else - try { tempwadreader = new WADReader(templocation, false, true); } catch(Exception e) + try { tempwadreader = new WADReader(templocation, General.Map.Config, false, true); } catch(Exception e) { General.ShowErrorMessage("Error while creating a temporary wad file:\n" + e.GetType().Name + ": " + e.Message, MessageBoxButtons.OK); return false; @@ -2370,7 +2370,7 @@ namespace CodeImp.DoomBuilder data = new DataManager(); if(!string.IsNullOrEmpty(filepathname)) { - DataLocation maplocation = new DataLocation(DataLocation.RESOURCE_WAD, filepathname, options.StrictPatches, false, false); + DataLocation maplocation = new DataLocation(DataLocation.RESOURCE_WAD, filepathname, options.StrictPatches, false, false, null); data.Load(configinfo.Resources, options.Resources, maplocation); } else diff --git a/Source/Core/IO/DirectoryFilesList.cs b/Source/Core/IO/DirectoryFilesList.cs index 426e45e7ce66f0b67f1e360fe25305f2e9d1ac90..cf5e33666b50b91dc43091aa10a076d0ce89db76 100755 --- a/Source/Core/IO/DirectoryFilesList.cs +++ b/Source/Core/IO/DirectoryFilesList.cs @@ -19,6 +19,7 @@ using System; using System.Collections.Generic; using System.IO; +using CodeImp.DoomBuilder.Config; using CodeImp.DoomBuilder.Data; #endregion @@ -68,7 +69,7 @@ namespace CodeImp.DoomBuilder.IO #region ================== Constructor / Disposer // Constructor to fill list from directory and optionally subdirectories - public DirectoryFilesList(string path, bool subdirectories) + public DirectoryFilesList(string path, GameConfiguration config, bool subdirectories) { path = Path.GetFullPath(path); string[] files = Directory.GetFiles(path, "*", subdirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly); @@ -85,25 +86,28 @@ namespace CodeImp.DoomBuilder.IO continue; } - if(General.Map.Config.IgnoredFileExtensions.Contains(e.extension)) continue; - - bool skipfolder = false; - foreach(string ef in General.Map.Config.IgnoredDirectoryNames) + if (config != null) { - if(e.path.StartsWith(ef + Path.DirectorySeparatorChar)) + if (config.IgnoredFileExtensions.Contains(e.extension)) continue; + + bool skipfolder = false; + foreach (string ef in config.IgnoredDirectoryNames) { - skipfolder = true; - break; + if (e.path.StartsWith(ef + Path.DirectorySeparatorChar)) + { + skipfolder = true; + break; + } } + if (skipfolder) continue; } - if(skipfolder) continue; AddOrReplaceEntry(e); } } // Constructor for custom list - public DirectoryFilesList(string resourcename, ICollection<DirectoryFileEntry> sourceentries) + public DirectoryFilesList(string resourcename, GameConfiguration config, bool silent, ICollection<DirectoryFileEntry> sourceentries) { entries = new Dictionary<string, DirectoryFileEntry>(sourceentries.Count, new PathEqualityComparer()); wadentries = new List<string>(); @@ -115,22 +119,25 @@ namespace CodeImp.DoomBuilder.IO continue; } - if(General.Map.Config.IgnoredFileExtensions.Contains(e.extension)) continue; - - bool skipfolder = false; - foreach(string ef in General.Map.Config.IgnoredDirectoryNames) + if (config != null) { - if(e.path.StartsWith(ef + Path.DirectorySeparatorChar)) + if (config.IgnoredFileExtensions.Contains(e.extension)) continue; + + bool skipfolder = false; + foreach (string ef in config.IgnoredDirectoryNames) { - skipfolder = true; - break; + if (e.path.StartsWith(ef + Path.DirectorySeparatorChar)) + { + skipfolder = true; + break; + } } + if (skipfolder) continue; } - if(skipfolder) continue; if(entries.ContainsKey(e.filepathname)) { - General.ErrorLogger.Add(ErrorType.Warning, "Resource \"" + resourcename + "\" contains multiple files with the same filename. See: \"" + e.filepathname + "\""); + if (!silent) General.ErrorLogger.Add(ErrorType.Warning, "Resource \"" + resourcename + "\" contains multiple files with the same filename. See: \"" + e.filepathname + "\""); continue; } diff --git a/Source/Core/Properties/Resources.Designer.cs b/Source/Core/Properties/Resources.Designer.cs index 0b487770cc582ba0df5eec07a61be9346d49afec..f4a71b5804fe03b892a802c86e0ed2903b263389 100755 --- a/Source/Core/Properties/Resources.Designer.cs +++ b/Source/Core/Properties/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace CodeImp.DoomBuilder.Properties { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { @@ -810,6 +810,16 @@ namespace CodeImp.DoomBuilder.Properties { } } + /// <summary> + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// </summary> + internal static System.Drawing.Bitmap Loader { + get { + object obj = ResourceManager.GetObject("Loader", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// <summary> /// Looks up a localized resource of type System.Drawing.Bitmap. /// </summary> diff --git a/Source/Core/Properties/Resources.resx b/Source/Core/Properties/Resources.resx index b52d9d290d57189c06fd655fda9b7bddd7806424..a08407a32a00c08c1764620bff67feb673568e18 100755 --- a/Source/Core/Properties/Resources.resx +++ b/Source/Core/Properties/Resources.resx @@ -622,4 +622,7 @@ <data name="UDB2" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\UDB2.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> + <data name="Loader" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\Loader.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> </root> \ No newline at end of file diff --git a/Source/Core/Resources/Loader.gif b/Source/Core/Resources/Loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..0ca31e02ad293c5a84d04dd0774d4a166383dd8a Binary files /dev/null and b/Source/Core/Resources/Loader.gif differ diff --git a/Source/Core/Windows/ConfigForm.Designer.cs b/Source/Core/Windows/ConfigForm.Designer.cs index b29135c8719771d78201fedff539c2eedcc1cdb2..5b4bd93d3debbf11180f719e357dea8d8fbeb8ea 100755 --- a/Source/Core/Windows/ConfigForm.Designer.cs +++ b/Source/Core/Windows/ConfigForm.Designer.cs @@ -28,881 +28,886 @@ namespace CodeImp.DoomBuilder.Windows /// </summary> private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - System.Windows.Forms.Label label5; - System.Windows.Forms.Label label6; - System.Windows.Forms.Label label3; - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfigForm)); - System.Windows.Forms.Label label2; - System.Windows.Forms.Label label7; - System.Windows.Forms.Label label9; - System.Windows.Forms.Label label1; - System.Windows.Forms.Label label8; - System.Windows.Forms.Label label4; - System.Windows.Forms.Label label10; - this.linuxpaths = new System.Windows.Forms.CheckBox(); - this.labelparameters = new System.Windows.Forms.Label(); - this.cancel = new System.Windows.Forms.Button(); - this.apply = new System.Windows.Forms.Button(); - this.tabs = new System.Windows.Forms.TabControl(); - this.tabresources = new System.Windows.Forms.TabPage(); - this.configdata = new CodeImp.DoomBuilder.Controls.ResourceListEditor(); - this.tabnodebuilder = new System.Windows.Forms.TabPage(); - this.nodebuildertest = new System.Windows.Forms.ComboBox(); - this.nodebuildersave = new System.Windows.Forms.ComboBox(); - this.tabtesting = new System.Windows.Forms.TabPage(); - this.btnRemoveEngine = new System.Windows.Forms.Button(); - this.btnNewEngine = new System.Windows.Forms.Button(); - this.cbEngineSelector = new System.Windows.Forms.ComboBox(); - this.label13 = new System.Windows.Forms.Label(); - this.shortpaths = new System.Windows.Forms.CheckBox(); - this.customparameters = new System.Windows.Forms.CheckBox(); - this.skill = new CodeImp.DoomBuilder.Controls.ActionSelectorControl(); - this.browsetestprogram = new System.Windows.Forms.Button(); - this.noresultlabel = new System.Windows.Forms.Label(); - this.testresult = new System.Windows.Forms.TextBox(); - this.labelresult = new System.Windows.Forms.Label(); - this.testparameters = new System.Windows.Forms.TextBox(); - this.testapplication = new System.Windows.Forms.TextBox(); - this.tabtextures = new System.Windows.Forms.TabPage(); - this.exporttexturesets = new System.Windows.Forms.Button(); - this.importtexturesets = new System.Windows.Forms.Button(); - this.listtextures = new System.Windows.Forms.ListView(); - this.smallimages = new System.Windows.Forms.ImageList(this.components); - this.restoretexturesets = new System.Windows.Forms.Button(); - this.edittextureset = new System.Windows.Forms.Button(); - this.pastetexturesets = new System.Windows.Forms.Button(); - this.copytexturesets = new System.Windows.Forms.Button(); - this.removetextureset = new System.Windows.Forms.Button(); - this.addtextureset = new System.Windows.Forms.Button(); - this.tabmodes = new System.Windows.Forms.TabPage(); - this.startmode = new System.Windows.Forms.ComboBox(); - this.label11 = new System.Windows.Forms.Label(); - this.listmodes = new System.Windows.Forms.ListView(); - this.colmodename = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.colmodeplugin = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.listconfigs = new System.Windows.Forms.ListView(); - this.columnname = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.copypastemenu = new System.Windows.Forms.ContextMenuStrip(this.components); - this.copyall = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); - this.pasteall = new System.Windows.Forms.ToolStripMenuItem(); - this.pasteresources = new System.Windows.Forms.ToolStripMenuItem(); - this.pasteengines = new System.Windows.Forms.ToolStripMenuItem(); - this.pastecolorpresets = new System.Windows.Forms.ToolStripMenuItem(); - this.testprogramdialog = new System.Windows.Forms.OpenFileDialog(); - this.hintlabel = new System.Windows.Forms.Label(); - this.hint = new System.Windows.Forms.PictureBox(); - this.tooltip = new System.Windows.Forms.ToolTip(this.components); - this.importtexturesetdialog = new System.Windows.Forms.OpenFileDialog(); - this.exporttexturesetdialog = new System.Windows.Forms.SaveFileDialog(); - label5 = new System.Windows.Forms.Label(); - label6 = new System.Windows.Forms.Label(); - label3 = new System.Windows.Forms.Label(); - label2 = new System.Windows.Forms.Label(); - label7 = new System.Windows.Forms.Label(); - label9 = new System.Windows.Forms.Label(); - label1 = new System.Windows.Forms.Label(); - label8 = new System.Windows.Forms.Label(); - label4 = new System.Windows.Forms.Label(); - label10 = new System.Windows.Forms.Label(); - this.tabs.SuspendLayout(); - this.tabresources.SuspendLayout(); - this.tabnodebuilder.SuspendLayout(); - this.tabtesting.SuspendLayout(); - this.tabtextures.SuspendLayout(); - this.tabmodes.SuspendLayout(); - this.copypastemenu.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.hint)).BeginInit(); - this.SuspendLayout(); - // - // label5 - // - label5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - label5.AutoSize = true; - label5.Location = new System.Drawing.Point(12, 272); - label5.Name = "label5"; - label5.Size = new System.Drawing.Size(299, 39); - label5.TabIndex = 19; - label5.Text = "Drag && drop resources to add them.\r\nDrag items to change order (lower items over" + + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.Label label5; + System.Windows.Forms.Label label6; + System.Windows.Forms.Label label3; + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfigForm)); + System.Windows.Forms.Label label2; + System.Windows.Forms.Label label7; + System.Windows.Forms.Label label9; + System.Windows.Forms.Label label1; + System.Windows.Forms.Label label8; + System.Windows.Forms.Label label4; + System.Windows.Forms.Label label10; + this.linuxpaths = new System.Windows.Forms.CheckBox(); + this.labelparameters = new System.Windows.Forms.Label(); + this.cancel = new System.Windows.Forms.Button(); + this.apply = new System.Windows.Forms.Button(); + this.tabs = new System.Windows.Forms.TabControl(); + this.tabresources = new System.Windows.Forms.TabPage(); + this.configdata = new CodeImp.DoomBuilder.Controls.ResourceListEditor(); + this.tabnodebuilder = new System.Windows.Forms.TabPage(); + this.nodebuildertest = new System.Windows.Forms.ComboBox(); + this.nodebuildersave = new System.Windows.Forms.ComboBox(); + this.tabtesting = new System.Windows.Forms.TabPage(); + this.btnRemoveEngine = new System.Windows.Forms.Button(); + this.btnNewEngine = new System.Windows.Forms.Button(); + this.cbEngineSelector = new System.Windows.Forms.ComboBox(); + this.label13 = new System.Windows.Forms.Label(); + this.shortpaths = new System.Windows.Forms.CheckBox(); + this.customparameters = new System.Windows.Forms.CheckBox(); + this.skill = new CodeImp.DoomBuilder.Controls.ActionSelectorControl(); + this.browsetestprogram = new System.Windows.Forms.Button(); + this.noresultlabel = new System.Windows.Forms.Label(); + this.testresult = new System.Windows.Forms.TextBox(); + this.labelresult = new System.Windows.Forms.Label(); + this.testparameters = new System.Windows.Forms.TextBox(); + this.testapplication = new System.Windows.Forms.TextBox(); + this.tabtextures = new System.Windows.Forms.TabPage(); + this.exporttexturesets = new System.Windows.Forms.Button(); + this.importtexturesets = new System.Windows.Forms.Button(); + this.listtextures = new System.Windows.Forms.ListView(); + this.smallimages = new System.Windows.Forms.ImageList(this.components); + this.restoretexturesets = new System.Windows.Forms.Button(); + this.edittextureset = new System.Windows.Forms.Button(); + this.pastetexturesets = new System.Windows.Forms.Button(); + this.copytexturesets = new System.Windows.Forms.Button(); + this.removetextureset = new System.Windows.Forms.Button(); + this.addtextureset = new System.Windows.Forms.Button(); + this.tabmodes = new System.Windows.Forms.TabPage(); + this.startmode = new System.Windows.Forms.ComboBox(); + this.label11 = new System.Windows.Forms.Label(); + this.listmodes = new System.Windows.Forms.ListView(); + this.colmodename = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.colmodeplugin = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.listconfigs = new System.Windows.Forms.ListView(); + this.columnname = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.copypastemenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.copyall = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.pasteall = new System.Windows.Forms.ToolStripMenuItem(); + this.pasteresources = new System.Windows.Forms.ToolStripMenuItem(); + this.pasteengines = new System.Windows.Forms.ToolStripMenuItem(); + this.pastecolorpresets = new System.Windows.Forms.ToolStripMenuItem(); + this.testprogramdialog = new System.Windows.Forms.OpenFileDialog(); + this.hintlabel = new System.Windows.Forms.Label(); + this.hint = new System.Windows.Forms.PictureBox(); + this.tooltip = new System.Windows.Forms.ToolTip(this.components); + this.importtexturesetdialog = new System.Windows.Forms.OpenFileDialog(); + this.exporttexturesetdialog = new System.Windows.Forms.SaveFileDialog(); + label5 = new System.Windows.Forms.Label(); + label6 = new System.Windows.Forms.Label(); + label3 = new System.Windows.Forms.Label(); + label2 = new System.Windows.Forms.Label(); + label7 = new System.Windows.Forms.Label(); + label9 = new System.Windows.Forms.Label(); + label1 = new System.Windows.Forms.Label(); + label8 = new System.Windows.Forms.Label(); + label4 = new System.Windows.Forms.Label(); + label10 = new System.Windows.Forms.Label(); + this.tabs.SuspendLayout(); + this.tabresources.SuspendLayout(); + this.tabnodebuilder.SuspendLayout(); + this.tabtesting.SuspendLayout(); + this.tabtextures.SuspendLayout(); + this.tabmodes.SuspendLayout(); + this.copypastemenu.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.hint)).BeginInit(); + this.SuspendLayout(); + // + // label5 + // + label5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + label5.AutoSize = true; + label5.Location = new System.Drawing.Point(12, 272); + label5.Name = "label5"; + label5.Size = new System.Drawing.Size(299, 39); + label5.TabIndex = 19; + label5.Text = "Drag && drop resources to add them.\r\nDrag items to change order (lower items over" + "ride higher items).\r\nUse the context menu to cut, copy, paste or remove items."; - // - // label6 - // - label6.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + // + // label6 + // + label6.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - label6.AutoEllipsis = true; - label6.Location = new System.Drawing.Point(12, 15); - label6.Name = "label6"; - label6.Size = new System.Drawing.Size(457, 37); - label6.TabIndex = 21; - label6.Text = "These are the resources that will be loaded when this configuration is chosen for" + + label6.AutoEllipsis = true; + label6.Location = new System.Drawing.Point(12, 15); + label6.Name = "label6"; + label6.Size = new System.Drawing.Size(457, 37); + label6.TabIndex = 21; + label6.Text = "These are the resources that will be loaded when this configuration is chosen for" + " editing. Usually you add your IWAD (like DOOM.WAD or DOOM2.WAD) here."; - // - // label3 - // - label3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + // + // label3 + // + label3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - label3.AutoEllipsis = true; - label3.Location = new System.Drawing.Point(12, 15); - label3.Name = "label3"; - label3.Size = new System.Drawing.Size(468, 54); - label3.TabIndex = 22; - label3.Text = resources.GetString("label3.Text"); - // - // label2 - // - label2.AutoSize = true; - label2.Location = new System.Drawing.Point(12, 86); - label2.Name = "label2"; - label2.Size = new System.Drawing.Size(144, 13); - label2.TabIndex = 24; - label2.Text = "Configuration for saving map:"; - // - // label7 - // - label7.AutoSize = true; - label7.Location = new System.Drawing.Point(35, 125); - label7.Name = "label7"; - label7.Size = new System.Drawing.Size(121, 13); - label7.TabIndex = 26; - label7.Text = "Configuration for testing:"; - // - // label9 - // - label9.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + label3.AutoEllipsis = true; + label3.Location = new System.Drawing.Point(12, 15); + label3.Name = "label3"; + label3.Size = new System.Drawing.Size(468, 54); + label3.TabIndex = 22; + label3.Text = resources.GetString("label3.Text"); + // + // label2 + // + label2.AutoSize = true; + label2.Location = new System.Drawing.Point(12, 86); + label2.Name = "label2"; + label2.Size = new System.Drawing.Size(144, 13); + label2.TabIndex = 24; + label2.Text = "Configuration for saving map:"; + // + // label7 + // + label7.AutoSize = true; + label7.Location = new System.Drawing.Point(35, 125); + label7.Name = "label7"; + label7.Size = new System.Drawing.Size(121, 13); + label7.TabIndex = 26; + label7.Text = "Configuration for testing:"; + // + // label9 + // + label9.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - label9.AutoEllipsis = true; - label9.Location = new System.Drawing.Point(12, 15); - label9.Name = "label9"; - label9.Size = new System.Drawing.Size(477, 54); - label9.TabIndex = 23; - label9.Text = "Here you can specify the program settings to use for launching a game engine when" + + label9.AutoEllipsis = true; + label9.Location = new System.Drawing.Point(12, 15); + label9.Name = "label9"; + label9.Size = new System.Drawing.Size(477, 54); + label9.TabIndex = 23; + label9.Text = "Here you can specify the program settings to use for launching a game engine when" + " testing the map. Press F1 for help with custom parameters."; - // - // label1 - // - label1.AutoSize = true; - label1.Location = new System.Drawing.Point(15, 89); - label1.Name = "label1"; - label1.Size = new System.Drawing.Size(62, 13); - label1.TabIndex = 24; - label1.Text = "Application:"; - // - // label8 - // - label8.AutoSize = true; - label8.Location = new System.Drawing.Point(21, 119); - label8.Name = "label8"; - label8.Size = new System.Drawing.Size(58, 13); - label8.TabIndex = 34; - label8.Text = "Skill Level:"; - // - // label4 - // - label4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + // + // label1 + // + label1.AutoSize = true; + label1.Location = new System.Drawing.Point(15, 89); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(62, 13); + label1.TabIndex = 24; + label1.Text = "Application:"; + // + // label8 + // + label8.AutoSize = true; + label8.Location = new System.Drawing.Point(21, 119); + label8.Name = "label8"; + label8.Size = new System.Drawing.Size(58, 13); + label8.TabIndex = 34; + label8.Text = "Skill Level:"; + // + // label4 + // + label4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - label4.AutoEllipsis = true; - label4.Location = new System.Drawing.Point(12, 15); - label4.Name = "label4"; - label4.Size = new System.Drawing.Size(483, 46); - label4.TabIndex = 24; - label4.Text = "Texture Sets are a way to group textures and flats into categories, so that you c" + + label4.AutoEllipsis = true; + label4.Location = new System.Drawing.Point(12, 15); + label4.Name = "label4"; + label4.Size = new System.Drawing.Size(483, 46); + label4.TabIndex = 24; + label4.Text = "Texture Sets are a way to group textures and flats into categories, so that you c" + "an easily find a texture for the specific style or purpose you need by selecting" + " one of the categories."; - // - // label10 - // - label10.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + // + // label10 + // + label10.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - label10.AutoEllipsis = true; - label10.Location = new System.Drawing.Point(12, 15); - label10.Name = "label10"; - label10.Size = new System.Drawing.Size(470, 58); - label10.TabIndex = 25; - label10.Text = resources.GetString("label10.Text"); - // - // linuxpaths - // - this.linuxpaths.AutoSize = true; - this.linuxpaths.Location = new System.Drawing.Point(375, 217); - this.linuxpaths.Name = "linuxpaths"; - this.linuxpaths.Size = new System.Drawing.Size(102, 17); - this.linuxpaths.TabIndex = 41; - this.linuxpaths.Text = "Use Linux paths"; - this.linuxpaths.UseVisualStyleBackColor = true; - this.linuxpaths.Visible = false; - this.linuxpaths.CheckedChanged += new System.EventHandler(this.Linuxpaths_CheckedChanged); - // - // labelparameters - // - this.labelparameters.AutoSize = true; - this.labelparameters.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.labelparameters.ForeColor = System.Drawing.SystemColors.HotTrack; - this.labelparameters.Location = new System.Drawing.Point(16, 169); - this.labelparameters.Name = "labelparameters"; - this.labelparameters.Size = new System.Drawing.Size(63, 13); - this.labelparameters.TabIndex = 27; - this.labelparameters.Text = "Parameters:"; - this.tooltip.SetToolTip(this.labelparameters, resources.GetString("labelparameters.ToolTip")); - this.labelparameters.Visible = false; - // - // cancel - // - this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.cancel.Location = new System.Drawing.Point(671, 379); - this.cancel.Name = "cancel"; - this.cancel.Size = new System.Drawing.Size(112, 25); - this.cancel.TabIndex = 3; - this.cancel.Text = "Cancel"; - this.cancel.UseVisualStyleBackColor = true; - this.cancel.Click += new System.EventHandler(this.cancel_Click); - // - // apply - // - this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.apply.Location = new System.Drawing.Point(553, 379); - this.apply.Name = "apply"; - this.apply.Size = new System.Drawing.Size(112, 25); - this.apply.TabIndex = 2; - this.apply.Text = "OK"; - this.apply.UseVisualStyleBackColor = true; - this.apply.Click += new System.EventHandler(this.apply_Click); - // - // tabs - // - this.tabs.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + label10.AutoEllipsis = true; + label10.Location = new System.Drawing.Point(12, 15); + label10.Name = "label10"; + label10.Size = new System.Drawing.Size(470, 58); + label10.TabIndex = 25; + label10.Text = resources.GetString("label10.Text"); + // + // linuxpaths + // + this.linuxpaths.AutoSize = true; + this.linuxpaths.Location = new System.Drawing.Point(375, 217); + this.linuxpaths.Name = "linuxpaths"; + this.linuxpaths.Size = new System.Drawing.Size(102, 17); + this.linuxpaths.TabIndex = 41; + this.linuxpaths.Text = "Use Linux paths"; + this.linuxpaths.UseVisualStyleBackColor = true; + this.linuxpaths.Visible = false; + this.linuxpaths.CheckedChanged += new System.EventHandler(this.Linuxpaths_CheckedChanged); + // + // labelparameters + // + this.labelparameters.AutoSize = true; + this.labelparameters.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelparameters.ForeColor = System.Drawing.SystemColors.HotTrack; + this.labelparameters.Location = new System.Drawing.Point(16, 169); + this.labelparameters.Name = "labelparameters"; + this.labelparameters.Size = new System.Drawing.Size(63, 13); + this.labelparameters.TabIndex = 27; + this.labelparameters.Text = "Parameters:"; + this.tooltip.SetToolTip(this.labelparameters, resources.GetString("labelparameters.ToolTip")); + this.labelparameters.Visible = false; + // + // cancel + // + this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancel.Location = new System.Drawing.Point(671, 379); + this.cancel.Name = "cancel"; + this.cancel.Size = new System.Drawing.Size(112, 25); + this.cancel.TabIndex = 3; + this.cancel.Text = "Cancel"; + this.cancel.UseVisualStyleBackColor = true; + this.cancel.Click += new System.EventHandler(this.cancel_Click); + // + // apply + // + this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.apply.Location = new System.Drawing.Point(553, 379); + this.apply.Name = "apply"; + this.apply.Size = new System.Drawing.Size(112, 25); + this.apply.TabIndex = 2; + this.apply.Text = "OK"; + this.apply.UseVisualStyleBackColor = true; + this.apply.Click += new System.EventHandler(this.apply_Click); + // + // tabs + // + this.tabs.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Right))); - this.tabs.Controls.Add(this.tabresources); - this.tabs.Controls.Add(this.tabnodebuilder); - this.tabs.Controls.Add(this.tabtesting); - this.tabs.Controls.Add(this.tabtextures); - this.tabs.Controls.Add(this.tabmodes); - this.tabs.Enabled = false; - this.tabs.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tabs.Location = new System.Drawing.Point(277, 12); - this.tabs.Name = "tabs"; - this.tabs.Padding = new System.Drawing.Point(24, 3); - this.tabs.SelectedIndex = 0; - this.tabs.Size = new System.Drawing.Size(506, 358); - this.tabs.TabIndex = 1; - // - // tabresources - // - this.tabresources.Controls.Add(label6); - this.tabresources.Controls.Add(this.configdata); - this.tabresources.Controls.Add(label5); - this.tabresources.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tabresources.Location = new System.Drawing.Point(4, 22); - this.tabresources.Name = "tabresources"; - this.tabresources.Padding = new System.Windows.Forms.Padding(6); - this.tabresources.Size = new System.Drawing.Size(498, 332); - this.tabresources.TabIndex = 0; - this.tabresources.Text = "Resources"; - this.tabresources.UseVisualStyleBackColor = true; - // - // configdata - // - this.configdata.AllowDrop = true; - this.configdata.DialogOffset = new System.Drawing.Point(-120, 10); - this.configdata.Location = new System.Drawing.Point(15, 55); - this.configdata.Name = "configdata"; - this.configdata.Size = new System.Drawing.Size(467, 204); - this.configdata.TabIndex = 0; - this.configdata.OnContentChanged += new CodeImp.DoomBuilder.Controls.ResourceListEditor.ContentChanged(this.resourcelocations_OnContentChanged); - // - // tabnodebuilder - // - this.tabnodebuilder.Controls.Add(label7); - this.tabnodebuilder.Controls.Add(this.nodebuildertest); - this.tabnodebuilder.Controls.Add(label2); - this.tabnodebuilder.Controls.Add(this.nodebuildersave); - this.tabnodebuilder.Controls.Add(label3); - this.tabnodebuilder.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tabnodebuilder.Location = new System.Drawing.Point(4, 22); - this.tabnodebuilder.Name = "tabnodebuilder"; - this.tabnodebuilder.Padding = new System.Windows.Forms.Padding(6); - this.tabnodebuilder.Size = new System.Drawing.Size(498, 332); - this.tabnodebuilder.TabIndex = 1; - this.tabnodebuilder.Text = "Nodebuilder"; - this.tabnodebuilder.UseVisualStyleBackColor = true; - // - // nodebuildertest - // - this.nodebuildertest.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.tabs.Controls.Add(this.tabresources); + this.tabs.Controls.Add(this.tabnodebuilder); + this.tabs.Controls.Add(this.tabtesting); + this.tabs.Controls.Add(this.tabtextures); + this.tabs.Controls.Add(this.tabmodes); + this.tabs.Enabled = false; + this.tabs.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tabs.Location = new System.Drawing.Point(277, 12); + this.tabs.Name = "tabs"; + this.tabs.Padding = new System.Drawing.Point(24, 3); + this.tabs.SelectedIndex = 0; + this.tabs.Size = new System.Drawing.Size(506, 358); + this.tabs.TabIndex = 1; + // + // tabresources + // + this.tabresources.Controls.Add(label6); + this.tabresources.Controls.Add(this.configdata); + this.tabresources.Controls.Add(label5); + this.tabresources.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tabresources.Location = new System.Drawing.Point(4, 22); + this.tabresources.Name = "tabresources"; + this.tabresources.Padding = new System.Windows.Forms.Padding(6); + this.tabresources.Size = new System.Drawing.Size(498, 332); + this.tabresources.TabIndex = 0; + this.tabresources.Text = "Resources"; + this.tabresources.UseVisualStyleBackColor = true; + // + // configdata + // + this.configdata.AllowDrop = true; + this.configdata.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.configdata.DialogOffset = new System.Drawing.Point(-120, 10); + this.configdata.GameConfiguration = null; + this.configdata.Location = new System.Drawing.Point(15, 55); + this.configdata.Name = "configdata"; + this.configdata.Size = new System.Drawing.Size(467, 204); + this.configdata.TabIndex = 0; + this.configdata.OnContentChanged += new CodeImp.DoomBuilder.Controls.ResourceListEditor.ContentChanged(this.resourcelocations_OnContentChanged); + this.configdata.OnWarningsChanged += new CodeImp.DoomBuilder.Controls.ResourceListEditor.WarningsChanged(this.configdata_OnWarningsChanged); + // + // tabnodebuilder + // + this.tabnodebuilder.Controls.Add(label7); + this.tabnodebuilder.Controls.Add(this.nodebuildertest); + this.tabnodebuilder.Controls.Add(label2); + this.tabnodebuilder.Controls.Add(this.nodebuildersave); + this.tabnodebuilder.Controls.Add(label3); + this.tabnodebuilder.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tabnodebuilder.Location = new System.Drawing.Point(4, 22); + this.tabnodebuilder.Name = "tabnodebuilder"; + this.tabnodebuilder.Padding = new System.Windows.Forms.Padding(6); + this.tabnodebuilder.Size = new System.Drawing.Size(498, 332); + this.tabnodebuilder.TabIndex = 1; + this.tabnodebuilder.Text = "Nodebuilder"; + this.tabnodebuilder.UseVisualStyleBackColor = true; + // + // nodebuildertest + // + this.nodebuildertest.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.nodebuildertest.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.nodebuildertest.FormattingEnabled = true; - this.nodebuildertest.Location = new System.Drawing.Point(167, 122); - this.nodebuildertest.Name = "nodebuildertest"; - this.nodebuildertest.Size = new System.Drawing.Size(313, 21); - this.nodebuildertest.Sorted = true; - this.nodebuildertest.TabIndex = 1; - this.nodebuildertest.SelectedIndexChanged += new System.EventHandler(this.nodebuildertest_SelectedIndexChanged); - // - // nodebuildersave - // - this.nodebuildersave.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.nodebuildertest.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.nodebuildertest.FormattingEnabled = true; + this.nodebuildertest.Location = new System.Drawing.Point(167, 122); + this.nodebuildertest.Name = "nodebuildertest"; + this.nodebuildertest.Size = new System.Drawing.Size(313, 21); + this.nodebuildertest.Sorted = true; + this.nodebuildertest.TabIndex = 1; + this.nodebuildertest.SelectedIndexChanged += new System.EventHandler(this.nodebuildertest_SelectedIndexChanged); + // + // nodebuildersave + // + this.nodebuildersave.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.nodebuildersave.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.nodebuildersave.FormattingEnabled = true; - this.nodebuildersave.Location = new System.Drawing.Point(167, 83); - this.nodebuildersave.Name = "nodebuildersave"; - this.nodebuildersave.Size = new System.Drawing.Size(313, 21); - this.nodebuildersave.Sorted = true; - this.nodebuildersave.TabIndex = 0; - this.nodebuildersave.SelectedIndexChanged += new System.EventHandler(this.nodebuildersave_SelectedIndexChanged); - // - // tabtesting - // - this.tabtesting.Controls.Add(this.linuxpaths); - this.tabtesting.Controls.Add(this.btnRemoveEngine); - this.tabtesting.Controls.Add(this.btnNewEngine); - this.tabtesting.Controls.Add(this.cbEngineSelector); - this.tabtesting.Controls.Add(this.label13); - this.tabtesting.Controls.Add(this.shortpaths); - this.tabtesting.Controls.Add(this.customparameters); - this.tabtesting.Controls.Add(this.skill); - this.tabtesting.Controls.Add(label8); - this.tabtesting.Controls.Add(this.browsetestprogram); - this.tabtesting.Controls.Add(this.noresultlabel); - this.tabtesting.Controls.Add(this.testresult); - this.tabtesting.Controls.Add(this.labelresult); - this.tabtesting.Controls.Add(this.testparameters); - this.tabtesting.Controls.Add(this.labelparameters); - this.tabtesting.Controls.Add(this.testapplication); - this.tabtesting.Controls.Add(label1); - this.tabtesting.Controls.Add(label9); - this.tabtesting.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tabtesting.Location = new System.Drawing.Point(4, 22); - this.tabtesting.Name = "tabtesting"; - this.tabtesting.Padding = new System.Windows.Forms.Padding(6); - this.tabtesting.Size = new System.Drawing.Size(498, 332); - this.tabtesting.TabIndex = 2; - this.tabtesting.Text = "Testing"; - this.tabtesting.UseVisualStyleBackColor = true; - // - // btnRemoveEngine - // - this.btnRemoveEngine.Image = global::CodeImp.DoomBuilder.Properties.Resources.SearchClear; - this.btnRemoveEngine.Location = new System.Drawing.Point(463, 51); - this.btnRemoveEngine.Name = "btnRemoveEngine"; - this.btnRemoveEngine.Size = new System.Drawing.Size(26, 24); - this.btnRemoveEngine.TabIndex = 40; - this.tooltip.SetToolTip(this.btnRemoveEngine, "Remove currently selected game engine"); - this.btnRemoveEngine.UseVisualStyleBackColor = true; - this.btnRemoveEngine.Click += new System.EventHandler(this.btnRemoveEngine_Click); - // - // btnNewEngine - // - this.btnNewEngine.Image = global::CodeImp.DoomBuilder.Properties.Resources.Add; - this.btnNewEngine.Location = new System.Drawing.Point(433, 51); - this.btnNewEngine.Name = "btnNewEngine"; - this.btnNewEngine.Size = new System.Drawing.Size(26, 24); - this.btnNewEngine.TabIndex = 39; - this.tooltip.SetToolTip(this.btnNewEngine, "Add new game engine"); - this.btnNewEngine.UseVisualStyleBackColor = true; - this.btnNewEngine.Click += new System.EventHandler(this.btnNewEngine_Click); - // - // cbEngineSelector - // - this.cbEngineSelector.FormattingEnabled = true; - this.cbEngineSelector.Location = new System.Drawing.Point(87, 53); - this.cbEngineSelector.Name = "cbEngineSelector"; - this.cbEngineSelector.Size = new System.Drawing.Size(340, 21); - this.cbEngineSelector.TabIndex = 38; - this.cbEngineSelector.DropDown += new System.EventHandler(this.cbEngineSelector_DropDown); - this.cbEngineSelector.SelectedIndexChanged += new System.EventHandler(this.cbEngineSelector_SelectedIndexChanged); - // - // label13 - // - this.label13.AutoSize = true; - this.label13.Location = new System.Drawing.Point(36, 56); - this.label13.Name = "label13"; - this.label13.Size = new System.Drawing.Size(43, 13); - this.label13.TabIndex = 37; - this.label13.Text = "Engine:"; - // - // shortpaths - // - this.shortpaths.AutoSize = true; - this.shortpaths.Location = new System.Drawing.Point(87, 217); - this.shortpaths.Name = "shortpaths"; - this.shortpaths.Size = new System.Drawing.Size(269, 17); - this.shortpaths.TabIndex = 5; - this.shortpaths.Text = "Use short paths and file names (MSDOS 8.3 format)"; - this.shortpaths.UseVisualStyleBackColor = true; - this.shortpaths.Visible = false; - this.shortpaths.CheckedChanged += new System.EventHandler(this.shortpaths_CheckedChanged); - // - // customparameters - // - this.customparameters.AutoSize = true; - this.customparameters.Location = new System.Drawing.Point(87, 146); - this.customparameters.Name = "customparameters"; - this.customparameters.Size = new System.Drawing.Size(129, 17); - this.customparameters.TabIndex = 3; - this.customparameters.Text = "Customize parameters"; - this.customparameters.UseVisualStyleBackColor = true; - this.customparameters.CheckedChanged += new System.EventHandler(this.customparameters_CheckedChanged); - // - // skill - // - this.skill.BackColor = System.Drawing.Color.Transparent; - this.skill.Cursor = System.Windows.Forms.Cursors.Default; - this.skill.Empty = false; - this.skill.GeneralizedCategories = null; - this.skill.GeneralizedOptions = null; - this.skill.Location = new System.Drawing.Point(87, 116); - this.skill.Name = "skill"; - this.skill.Size = new System.Drawing.Size(402, 21); - this.skill.TabIndex = 2; - this.skill.Value = 402; - this.skill.ValueChanges += new System.EventHandler(this.skill_ValueChanges); - // - // browsetestprogram - // - this.browsetestprogram.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.browsetestprogram.Image = global::CodeImp.DoomBuilder.Properties.Resources.Folder; - this.browsetestprogram.Location = new System.Drawing.Point(459, 84); - this.browsetestprogram.Name = "browsetestprogram"; - this.browsetestprogram.Size = new System.Drawing.Size(30, 24); - this.browsetestprogram.TabIndex = 1; - this.browsetestprogram.Text = " "; - this.tooltip.SetToolTip(this.browsetestprogram, "Browse game engine"); - this.browsetestprogram.UseVisualStyleBackColor = true; - this.browsetestprogram.Click += new System.EventHandler(this.browsetestprogram_Click); - // - // noresultlabel - // - this.noresultlabel.Location = new System.Drawing.Point(84, 244); - this.noresultlabel.Name = "noresultlabel"; - this.noresultlabel.Size = new System.Drawing.Size(272, 43); - this.noresultlabel.TabIndex = 32; - this.noresultlabel.Text = "An example result cannot be displayed, because it requires a map to be loaded."; - this.noresultlabel.Visible = false; - // - // testresult - // - this.testresult.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.nodebuildersave.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.nodebuildersave.FormattingEnabled = true; + this.nodebuildersave.Location = new System.Drawing.Point(167, 83); + this.nodebuildersave.Name = "nodebuildersave"; + this.nodebuildersave.Size = new System.Drawing.Size(313, 21); + this.nodebuildersave.Sorted = true; + this.nodebuildersave.TabIndex = 0; + this.nodebuildersave.SelectedIndexChanged += new System.EventHandler(this.nodebuildersave_SelectedIndexChanged); + // + // tabtesting + // + this.tabtesting.Controls.Add(this.linuxpaths); + this.tabtesting.Controls.Add(this.btnRemoveEngine); + this.tabtesting.Controls.Add(this.btnNewEngine); + this.tabtesting.Controls.Add(this.cbEngineSelector); + this.tabtesting.Controls.Add(this.label13); + this.tabtesting.Controls.Add(this.shortpaths); + this.tabtesting.Controls.Add(this.customparameters); + this.tabtesting.Controls.Add(this.skill); + this.tabtesting.Controls.Add(label8); + this.tabtesting.Controls.Add(this.browsetestprogram); + this.tabtesting.Controls.Add(this.noresultlabel); + this.tabtesting.Controls.Add(this.testresult); + this.tabtesting.Controls.Add(this.labelresult); + this.tabtesting.Controls.Add(this.testparameters); + this.tabtesting.Controls.Add(this.labelparameters); + this.tabtesting.Controls.Add(this.testapplication); + this.tabtesting.Controls.Add(label1); + this.tabtesting.Controls.Add(label9); + this.tabtesting.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tabtesting.Location = new System.Drawing.Point(4, 22); + this.tabtesting.Name = "tabtesting"; + this.tabtesting.Padding = new System.Windows.Forms.Padding(6); + this.tabtesting.Size = new System.Drawing.Size(498, 332); + this.tabtesting.TabIndex = 2; + this.tabtesting.Text = "Testing"; + this.tabtesting.UseVisualStyleBackColor = true; + // + // btnRemoveEngine + // + this.btnRemoveEngine.Image = global::CodeImp.DoomBuilder.Properties.Resources.SearchClear; + this.btnRemoveEngine.Location = new System.Drawing.Point(463, 51); + this.btnRemoveEngine.Name = "btnRemoveEngine"; + this.btnRemoveEngine.Size = new System.Drawing.Size(26, 24); + this.btnRemoveEngine.TabIndex = 40; + this.tooltip.SetToolTip(this.btnRemoveEngine, "Remove currently selected game engine"); + this.btnRemoveEngine.UseVisualStyleBackColor = true; + this.btnRemoveEngine.Click += new System.EventHandler(this.btnRemoveEngine_Click); + // + // btnNewEngine + // + this.btnNewEngine.Image = global::CodeImp.DoomBuilder.Properties.Resources.Add; + this.btnNewEngine.Location = new System.Drawing.Point(433, 51); + this.btnNewEngine.Name = "btnNewEngine"; + this.btnNewEngine.Size = new System.Drawing.Size(26, 24); + this.btnNewEngine.TabIndex = 39; + this.tooltip.SetToolTip(this.btnNewEngine, "Add new game engine"); + this.btnNewEngine.UseVisualStyleBackColor = true; + this.btnNewEngine.Click += new System.EventHandler(this.btnNewEngine_Click); + // + // cbEngineSelector + // + this.cbEngineSelector.FormattingEnabled = true; + this.cbEngineSelector.Location = new System.Drawing.Point(87, 53); + this.cbEngineSelector.Name = "cbEngineSelector"; + this.cbEngineSelector.Size = new System.Drawing.Size(340, 21); + this.cbEngineSelector.TabIndex = 38; + this.cbEngineSelector.DropDown += new System.EventHandler(this.cbEngineSelector_DropDown); + this.cbEngineSelector.SelectedIndexChanged += new System.EventHandler(this.cbEngineSelector_SelectedIndexChanged); + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(36, 56); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(43, 13); + this.label13.TabIndex = 37; + this.label13.Text = "Engine:"; + // + // shortpaths + // + this.shortpaths.AutoSize = true; + this.shortpaths.Location = new System.Drawing.Point(87, 217); + this.shortpaths.Name = "shortpaths"; + this.shortpaths.Size = new System.Drawing.Size(269, 17); + this.shortpaths.TabIndex = 5; + this.shortpaths.Text = "Use short paths and file names (MSDOS 8.3 format)"; + this.shortpaths.UseVisualStyleBackColor = true; + this.shortpaths.Visible = false; + this.shortpaths.CheckedChanged += new System.EventHandler(this.shortpaths_CheckedChanged); + // + // customparameters + // + this.customparameters.AutoSize = true; + this.customparameters.Location = new System.Drawing.Point(87, 146); + this.customparameters.Name = "customparameters"; + this.customparameters.Size = new System.Drawing.Size(129, 17); + this.customparameters.TabIndex = 3; + this.customparameters.Text = "Customize parameters"; + this.customparameters.UseVisualStyleBackColor = true; + this.customparameters.CheckedChanged += new System.EventHandler(this.customparameters_CheckedChanged); + // + // skill + // + this.skill.BackColor = System.Drawing.Color.Transparent; + this.skill.Cursor = System.Windows.Forms.Cursors.Default; + this.skill.Empty = false; + this.skill.GeneralizedCategories = null; + this.skill.GeneralizedOptions = null; + this.skill.Location = new System.Drawing.Point(87, 116); + this.skill.Name = "skill"; + this.skill.Size = new System.Drawing.Size(402, 21); + this.skill.TabIndex = 2; + this.skill.Value = 402; + this.skill.ValueChanges += new System.EventHandler(this.skill_ValueChanges); + // + // browsetestprogram + // + this.browsetestprogram.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.browsetestprogram.Image = global::CodeImp.DoomBuilder.Properties.Resources.Folder; + this.browsetestprogram.Location = new System.Drawing.Point(459, 84); + this.browsetestprogram.Name = "browsetestprogram"; + this.browsetestprogram.Size = new System.Drawing.Size(30, 24); + this.browsetestprogram.TabIndex = 1; + this.browsetestprogram.Text = " "; + this.tooltip.SetToolTip(this.browsetestprogram, "Browse game engine"); + this.browsetestprogram.UseVisualStyleBackColor = true; + this.browsetestprogram.Click += new System.EventHandler(this.browsetestprogram_Click); + // + // noresultlabel + // + this.noresultlabel.Location = new System.Drawing.Point(84, 244); + this.noresultlabel.Name = "noresultlabel"; + this.noresultlabel.Size = new System.Drawing.Size(272, 43); + this.noresultlabel.TabIndex = 32; + this.noresultlabel.Text = "An example result cannot be displayed, because it requires a map to be loaded."; + this.noresultlabel.Visible = false; + // + // testresult + // + this.testresult.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.testresult.BackColor = System.Drawing.SystemColors.Control; - this.testresult.Location = new System.Drawing.Point(86, 241); - this.testresult.Multiline = true; - this.testresult.Name = "testresult"; - this.testresult.ReadOnly = true; - this.testresult.Size = new System.Drawing.Size(403, 79); - this.testresult.TabIndex = 6; - this.testresult.Visible = false; - // - // labelresult - // - this.labelresult.AutoSize = true; - this.labelresult.Location = new System.Drawing.Point(38, 244); - this.labelresult.Name = "labelresult"; - this.labelresult.Size = new System.Drawing.Size(40, 13); - this.labelresult.TabIndex = 30; - this.labelresult.Text = "Result:"; - this.labelresult.Visible = false; - // - // testparameters - // - this.testparameters.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.testresult.BackColor = System.Drawing.SystemColors.Control; + this.testresult.Location = new System.Drawing.Point(86, 241); + this.testresult.Multiline = true; + this.testresult.Name = "testresult"; + this.testresult.ReadOnly = true; + this.testresult.Size = new System.Drawing.Size(403, 79); + this.testresult.TabIndex = 6; + this.testresult.Visible = false; + // + // labelresult + // + this.labelresult.AutoSize = true; + this.labelresult.Location = new System.Drawing.Point(38, 244); + this.labelresult.Name = "labelresult"; + this.labelresult.Size = new System.Drawing.Size(40, 13); + this.labelresult.TabIndex = 30; + this.labelresult.Text = "Result:"; + this.labelresult.Visible = false; + // + // testparameters + // + this.testparameters.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.testparameters.Location = new System.Drawing.Point(87, 166); - this.testparameters.Multiline = true; - this.testparameters.Name = "testparameters"; - this.testparameters.Size = new System.Drawing.Size(402, 41); - this.testparameters.TabIndex = 4; - this.testparameters.Visible = false; - this.testparameters.TextChanged += new System.EventHandler(this.testparameters_TextChanged); - // - // testapplication - // - this.testapplication.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.testparameters.Location = new System.Drawing.Point(87, 166); + this.testparameters.Multiline = true; + this.testparameters.Name = "testparameters"; + this.testparameters.Size = new System.Drawing.Size(402, 41); + this.testparameters.TabIndex = 4; + this.testparameters.Visible = false; + this.testparameters.TextChanged += new System.EventHandler(this.testparameters_TextChanged); + // + // testapplication + // + this.testapplication.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.testapplication.Location = new System.Drawing.Point(87, 86); - this.testapplication.Name = "testapplication"; - this.testapplication.ReadOnly = true; - this.testapplication.Size = new System.Drawing.Size(366, 20); - this.testapplication.TabIndex = 0; - this.testapplication.TextChanged += new System.EventHandler(this.testapplication_TextChanged); - // - // tabtextures - // - this.tabtextures.Controls.Add(this.exporttexturesets); - this.tabtextures.Controls.Add(this.importtexturesets); - this.tabtextures.Controls.Add(this.listtextures); - this.tabtextures.Controls.Add(this.restoretexturesets); - this.tabtextures.Controls.Add(this.edittextureset); - this.tabtextures.Controls.Add(this.pastetexturesets); - this.tabtextures.Controls.Add(this.copytexturesets); - this.tabtextures.Controls.Add(this.removetextureset); - this.tabtextures.Controls.Add(this.addtextureset); - this.tabtextures.Controls.Add(label4); - this.tabtextures.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tabtextures.Location = new System.Drawing.Point(4, 22); - this.tabtextures.Name = "tabtextures"; - this.tabtextures.Size = new System.Drawing.Size(498, 332); - this.tabtextures.TabIndex = 3; - this.tabtextures.Text = "Textures"; - this.tabtextures.UseVisualStyleBackColor = true; - // - // exporttexturesets - // - this.exporttexturesets.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.exporttexturesets.Enabled = false; - this.exporttexturesets.Location = new System.Drawing.Point(414, 282); - this.exporttexturesets.Name = "exporttexturesets"; - this.exporttexturesets.Size = new System.Drawing.Size(68, 24); - this.exporttexturesets.TabIndex = 25; - this.exporttexturesets.Text = "Export"; - this.exporttexturesets.UseVisualStyleBackColor = true; - this.exporttexturesets.Click += new System.EventHandler(this.exporttexturesets_Click); - // - // importtexturesets - // - this.importtexturesets.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.importtexturesets.Location = new System.Drawing.Point(340, 282); - this.importtexturesets.Name = "importtexturesets"; - this.importtexturesets.Size = new System.Drawing.Size(68, 24); - this.importtexturesets.TabIndex = 25; - this.importtexturesets.Text = "Import"; - this.importtexturesets.UseVisualStyleBackColor = true; - this.importtexturesets.Click += new System.EventHandler(this.importtexturesets_Click); - // - // listtextures - // - this.listtextures.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.testapplication.Location = new System.Drawing.Point(87, 86); + this.testapplication.Name = "testapplication"; + this.testapplication.ReadOnly = true; + this.testapplication.Size = new System.Drawing.Size(366, 20); + this.testapplication.TabIndex = 0; + this.testapplication.TextChanged += new System.EventHandler(this.testapplication_TextChanged); + // + // tabtextures + // + this.tabtextures.Controls.Add(this.exporttexturesets); + this.tabtextures.Controls.Add(this.importtexturesets); + this.tabtextures.Controls.Add(this.listtextures); + this.tabtextures.Controls.Add(this.restoretexturesets); + this.tabtextures.Controls.Add(this.edittextureset); + this.tabtextures.Controls.Add(this.pastetexturesets); + this.tabtextures.Controls.Add(this.copytexturesets); + this.tabtextures.Controls.Add(this.removetextureset); + this.tabtextures.Controls.Add(this.addtextureset); + this.tabtextures.Controls.Add(label4); + this.tabtextures.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tabtextures.Location = new System.Drawing.Point(4, 22); + this.tabtextures.Name = "tabtextures"; + this.tabtextures.Size = new System.Drawing.Size(498, 332); + this.tabtextures.TabIndex = 3; + this.tabtextures.Text = "Textures"; + this.tabtextures.UseVisualStyleBackColor = true; + // + // exporttexturesets + // + this.exporttexturesets.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.exporttexturesets.Enabled = false; + this.exporttexturesets.Location = new System.Drawing.Point(414, 282); + this.exporttexturesets.Name = "exporttexturesets"; + this.exporttexturesets.Size = new System.Drawing.Size(68, 24); + this.exporttexturesets.TabIndex = 25; + this.exporttexturesets.Text = "Export"; + this.exporttexturesets.UseVisualStyleBackColor = true; + this.exporttexturesets.Click += new System.EventHandler(this.exporttexturesets_Click); + // + // importtexturesets + // + this.importtexturesets.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.importtexturesets.Location = new System.Drawing.Point(340, 282); + this.importtexturesets.Name = "importtexturesets"; + this.importtexturesets.Size = new System.Drawing.Size(68, 24); + this.importtexturesets.TabIndex = 25; + this.importtexturesets.Text = "Import"; + this.importtexturesets.UseVisualStyleBackColor = true; + this.importtexturesets.Click += new System.EventHandler(this.importtexturesets_Click); + // + // listtextures + // + this.listtextures.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.listtextures.FullRowSelect = true; - this.listtextures.HideSelection = false; - this.listtextures.Location = new System.Drawing.Point(15, 64); - this.listtextures.Name = "listtextures"; - this.listtextures.ShowGroups = false; - this.listtextures.Size = new System.Drawing.Size(467, 174); - this.listtextures.SmallImageList = this.smallimages; - this.listtextures.Sorting = System.Windows.Forms.SortOrder.Ascending; - this.listtextures.TabIndex = 0; - this.listtextures.UseCompatibleStateImageBehavior = false; - this.listtextures.View = System.Windows.Forms.View.List; - this.listtextures.SelectedIndexChanged += new System.EventHandler(this.listtextures_SelectedIndexChanged); - this.listtextures.DoubleClick += new System.EventHandler(this.listtextures_DoubleClick); - // - // smallimages - // - this.smallimages.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("smallimages.ImageStream"))); - this.smallimages.TransparentColor = System.Drawing.Color.Transparent; - this.smallimages.Images.SetKeyName(0, "KnownTextureSet.ico"); - // - // restoretexturesets - // - this.restoretexturesets.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.restoretexturesets.Location = new System.Drawing.Point(15, 282); - this.restoretexturesets.Name = "restoretexturesets"; - this.restoretexturesets.Size = new System.Drawing.Size(140, 24); - this.restoretexturesets.TabIndex = 6; - this.restoretexturesets.Text = "Add Default Sets"; - this.restoretexturesets.UseVisualStyleBackColor = true; - this.restoretexturesets.Click += new System.EventHandler(this.restoretexturesets_Click); - // - // edittextureset - // - this.edittextureset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.edittextureset.Enabled = false; - this.edittextureset.Location = new System.Drawing.Point(88, 244); - this.edittextureset.Name = "edittextureset"; - this.edittextureset.Size = new System.Drawing.Size(67, 24); - this.edittextureset.TabIndex = 2; - this.edittextureset.Text = "Edit..."; - this.edittextureset.UseVisualStyleBackColor = true; - this.edittextureset.Click += new System.EventHandler(this.edittextureset_Click); - // - // pastetexturesets - // - this.pastetexturesets.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.pastetexturesets.Enabled = false; - this.pastetexturesets.Location = new System.Drawing.Point(414, 244); - this.pastetexturesets.Name = "pastetexturesets"; - this.pastetexturesets.Size = new System.Drawing.Size(68, 24); - this.pastetexturesets.TabIndex = 5; - this.pastetexturesets.Text = "Paste"; - this.pastetexturesets.UseVisualStyleBackColor = true; - this.pastetexturesets.Click += new System.EventHandler(this.pastetexturesets_Click); - // - // copytexturesets - // - this.copytexturesets.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.copytexturesets.Enabled = false; - this.copytexturesets.Location = new System.Drawing.Point(340, 244); - this.copytexturesets.Name = "copytexturesets"; - this.copytexturesets.Size = new System.Drawing.Size(68, 24); - this.copytexturesets.TabIndex = 4; - this.copytexturesets.Text = "Copy"; - this.copytexturesets.UseVisualStyleBackColor = true; - this.copytexturesets.Click += new System.EventHandler(this.copytexturesets_Click); - // - // removetextureset - // - this.removetextureset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.removetextureset.Enabled = false; - this.removetextureset.Location = new System.Drawing.Point(161, 244); - this.removetextureset.Name = "removetextureset"; - this.removetextureset.Size = new System.Drawing.Size(68, 24); - this.removetextureset.TabIndex = 3; - this.removetextureset.Text = "Remove"; - this.removetextureset.UseVisualStyleBackColor = true; - this.removetextureset.Click += new System.EventHandler(this.removetextureset_Click); - // - // addtextureset - // - this.addtextureset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.addtextureset.Location = new System.Drawing.Point(15, 244); - this.addtextureset.Name = "addtextureset"; - this.addtextureset.Size = new System.Drawing.Size(67, 24); - this.addtextureset.TabIndex = 1; - this.addtextureset.Text = "Add..."; - this.addtextureset.UseVisualStyleBackColor = true; - this.addtextureset.Click += new System.EventHandler(this.addtextureset_Click); - // - // tabmodes - // - this.tabmodes.Controls.Add(this.startmode); - this.tabmodes.Controls.Add(this.label11); - this.tabmodes.Controls.Add(this.listmodes); - this.tabmodes.Controls.Add(label10); - this.tabmodes.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tabmodes.Location = new System.Drawing.Point(4, 22); - this.tabmodes.Name = "tabmodes"; - this.tabmodes.Size = new System.Drawing.Size(498, 332); - this.tabmodes.TabIndex = 4; - this.tabmodes.Text = "Modes"; - this.tabmodes.UseVisualStyleBackColor = true; - // - // startmode - // - this.startmode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.startmode.FormattingEnabled = true; - this.startmode.Location = new System.Drawing.Point(215, 288); - this.startmode.Name = "startmode"; - this.startmode.Size = new System.Drawing.Size(267, 21); - this.startmode.TabIndex = 27; - this.startmode.SelectedIndexChanged += new System.EventHandler(this.startmode_SelectedIndexChanged); - // - // label11 - // - this.label11.AutoSize = true; - this.label11.Location = new System.Drawing.Point(12, 291); - this.label11.Name = "label11"; - this.label11.Size = new System.Drawing.Size(197, 13); - this.label11.TabIndex = 26; - this.label11.Text = "When opening a map, start in this mode:"; - // - // listmodes - // - this.listmodes.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.listtextures.FullRowSelect = true; + this.listtextures.HideSelection = false; + this.listtextures.Location = new System.Drawing.Point(15, 64); + this.listtextures.Name = "listtextures"; + this.listtextures.ShowGroups = false; + this.listtextures.Size = new System.Drawing.Size(467, 174); + this.listtextures.SmallImageList = this.smallimages; + this.listtextures.Sorting = System.Windows.Forms.SortOrder.Ascending; + this.listtextures.TabIndex = 0; + this.listtextures.UseCompatibleStateImageBehavior = false; + this.listtextures.View = System.Windows.Forms.View.List; + this.listtextures.SelectedIndexChanged += new System.EventHandler(this.listtextures_SelectedIndexChanged); + this.listtextures.DoubleClick += new System.EventHandler(this.listtextures_DoubleClick); + // + // smallimages + // + this.smallimages.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("smallimages.ImageStream"))); + this.smallimages.TransparentColor = System.Drawing.Color.Transparent; + this.smallimages.Images.SetKeyName(0, "KnownTextureSet.ico"); + // + // restoretexturesets + // + this.restoretexturesets.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.restoretexturesets.Location = new System.Drawing.Point(15, 282); + this.restoretexturesets.Name = "restoretexturesets"; + this.restoretexturesets.Size = new System.Drawing.Size(140, 24); + this.restoretexturesets.TabIndex = 6; + this.restoretexturesets.Text = "Add Default Sets"; + this.restoretexturesets.UseVisualStyleBackColor = true; + this.restoretexturesets.Click += new System.EventHandler(this.restoretexturesets_Click); + // + // edittextureset + // + this.edittextureset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.edittextureset.Enabled = false; + this.edittextureset.Location = new System.Drawing.Point(88, 244); + this.edittextureset.Name = "edittextureset"; + this.edittextureset.Size = new System.Drawing.Size(67, 24); + this.edittextureset.TabIndex = 2; + this.edittextureset.Text = "Edit..."; + this.edittextureset.UseVisualStyleBackColor = true; + this.edittextureset.Click += new System.EventHandler(this.edittextureset_Click); + // + // pastetexturesets + // + this.pastetexturesets.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.pastetexturesets.Enabled = false; + this.pastetexturesets.Location = new System.Drawing.Point(414, 244); + this.pastetexturesets.Name = "pastetexturesets"; + this.pastetexturesets.Size = new System.Drawing.Size(68, 24); + this.pastetexturesets.TabIndex = 5; + this.pastetexturesets.Text = "Paste"; + this.pastetexturesets.UseVisualStyleBackColor = true; + this.pastetexturesets.Click += new System.EventHandler(this.pastetexturesets_Click); + // + // copytexturesets + // + this.copytexturesets.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.copytexturesets.Enabled = false; + this.copytexturesets.Location = new System.Drawing.Point(340, 244); + this.copytexturesets.Name = "copytexturesets"; + this.copytexturesets.Size = new System.Drawing.Size(68, 24); + this.copytexturesets.TabIndex = 4; + this.copytexturesets.Text = "Copy"; + this.copytexturesets.UseVisualStyleBackColor = true; + this.copytexturesets.Click += new System.EventHandler(this.copytexturesets_Click); + // + // removetextureset + // + this.removetextureset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.removetextureset.Enabled = false; + this.removetextureset.Location = new System.Drawing.Point(161, 244); + this.removetextureset.Name = "removetextureset"; + this.removetextureset.Size = new System.Drawing.Size(68, 24); + this.removetextureset.TabIndex = 3; + this.removetextureset.Text = "Remove"; + this.removetextureset.UseVisualStyleBackColor = true; + this.removetextureset.Click += new System.EventHandler(this.removetextureset_Click); + // + // addtextureset + // + this.addtextureset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.addtextureset.Location = new System.Drawing.Point(15, 244); + this.addtextureset.Name = "addtextureset"; + this.addtextureset.Size = new System.Drawing.Size(67, 24); + this.addtextureset.TabIndex = 1; + this.addtextureset.Text = "Add..."; + this.addtextureset.UseVisualStyleBackColor = true; + this.addtextureset.Click += new System.EventHandler(this.addtextureset_Click); + // + // tabmodes + // + this.tabmodes.Controls.Add(this.startmode); + this.tabmodes.Controls.Add(this.label11); + this.tabmodes.Controls.Add(this.listmodes); + this.tabmodes.Controls.Add(label10); + this.tabmodes.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tabmodes.Location = new System.Drawing.Point(4, 22); + this.tabmodes.Name = "tabmodes"; + this.tabmodes.Size = new System.Drawing.Size(498, 332); + this.tabmodes.TabIndex = 4; + this.tabmodes.Text = "Modes"; + this.tabmodes.UseVisualStyleBackColor = true; + // + // startmode + // + this.startmode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.startmode.FormattingEnabled = true; + this.startmode.Location = new System.Drawing.Point(215, 288); + this.startmode.Name = "startmode"; + this.startmode.Size = new System.Drawing.Size(267, 21); + this.startmode.TabIndex = 27; + this.startmode.SelectedIndexChanged += new System.EventHandler(this.startmode_SelectedIndexChanged); + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(12, 291); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(197, 13); + this.label11.TabIndex = 26; + this.label11.Text = "When opening a map, start in this mode:"; + // + // listmodes + // + this.listmodes.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.listmodes.CheckBoxes = true; - this.listmodes.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.listmodes.CheckBoxes = true; + this.listmodes.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.colmodename, this.colmodeplugin}); - this.listmodes.FullRowSelect = true; - this.listmodes.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; - this.listmodes.HideSelection = false; - this.listmodes.Location = new System.Drawing.Point(15, 70); - this.listmodes.MultiSelect = false; - this.listmodes.Name = "listmodes"; - this.listmodes.ShowGroups = false; - this.listmodes.Size = new System.Drawing.Size(467, 201); - this.listmodes.Sorting = System.Windows.Forms.SortOrder.Ascending; - this.listmodes.TabIndex = 0; - this.listmodes.UseCompatibleStateImageBehavior = false; - this.listmodes.View = System.Windows.Forms.View.Details; - this.listmodes.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.listmodes_ItemChecked); - // - // colmodename - // - this.colmodename.Text = "Editing Mode"; - this.colmodename.Width = 179; - // - // colmodeplugin - // - this.colmodeplugin.Text = "Plugin"; - this.colmodeplugin.Width = 221; - // - // listconfigs - // - this.listconfigs.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.listmodes.FullRowSelect = true; + this.listmodes.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.listmodes.HideSelection = false; + this.listmodes.Location = new System.Drawing.Point(15, 70); + this.listmodes.MultiSelect = false; + this.listmodes.Name = "listmodes"; + this.listmodes.ShowGroups = false; + this.listmodes.Size = new System.Drawing.Size(467, 201); + this.listmodes.Sorting = System.Windows.Forms.SortOrder.Ascending; + this.listmodes.TabIndex = 0; + this.listmodes.UseCompatibleStateImageBehavior = false; + this.listmodes.View = System.Windows.Forms.View.Details; + this.listmodes.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.listmodes_ItemChecked); + // + // colmodename + // + this.colmodename.Text = "Editing Mode"; + this.colmodename.Width = 179; + // + // colmodeplugin + // + this.colmodeplugin.Text = "Plugin"; + this.colmodeplugin.Width = 221; + // + // listconfigs + // + this.listconfigs.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); - this.listconfigs.CheckBoxes = true; - this.listconfigs.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.listconfigs.CheckBoxes = true; + this.listconfigs.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.columnname}); - this.listconfigs.ContextMenuStrip = this.copypastemenu; - this.listconfigs.FullRowSelect = true; - this.listconfigs.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; - this.listconfigs.HideSelection = false; - this.listconfigs.Location = new System.Drawing.Point(12, 12); - this.listconfigs.MultiSelect = false; - this.listconfigs.Name = "listconfigs"; - this.listconfigs.ShowGroups = false; - this.listconfigs.Size = new System.Drawing.Size(259, 358); - this.listconfigs.TabIndex = 0; - this.listconfigs.UseCompatibleStateImageBehavior = false; - this.listconfigs.View = System.Windows.Forms.View.Details; - this.listconfigs.KeyUp += new System.Windows.Forms.KeyEventHandler(this.listconfigs_KeyUp); - this.listconfigs.MouseUp += new System.Windows.Forms.MouseEventHandler(this.listconfigs_MouseUp); - // - // columnname - // - this.columnname.Text = "Configuration"; - this.columnname.Width = 200; - // - // copypastemenu - // - this.copypastemenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.listconfigs.ContextMenuStrip = this.copypastemenu; + this.listconfigs.FullRowSelect = true; + this.listconfigs.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; + this.listconfigs.HideSelection = false; + this.listconfigs.Location = new System.Drawing.Point(12, 12); + this.listconfigs.MultiSelect = false; + this.listconfigs.Name = "listconfigs"; + this.listconfigs.ShowGroups = false; + this.listconfigs.Size = new System.Drawing.Size(259, 358); + this.listconfigs.TabIndex = 0; + this.listconfigs.UseCompatibleStateImageBehavior = false; + this.listconfigs.View = System.Windows.Forms.View.Details; + this.listconfigs.KeyUp += new System.Windows.Forms.KeyEventHandler(this.listconfigs_KeyUp); + this.listconfigs.MouseUp += new System.Windows.Forms.MouseEventHandler(this.listconfigs_MouseUp); + // + // columnname + // + this.columnname.Text = "Configuration"; + this.columnname.Width = 200; + // + // copypastemenu + // + this.copypastemenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.copyall, this.toolStripSeparator1, this.pasteall, this.pasteresources, this.pasteengines, this.pastecolorpresets}); - this.copypastemenu.Name = "copypastemenu"; - this.copypastemenu.Size = new System.Drawing.Size(175, 120); - this.copypastemenu.Opening += new System.ComponentModel.CancelEventHandler(this.copypastemenu_Opening); - // - // copyall - // - this.copyall.Image = global::CodeImp.DoomBuilder.Properties.Resources.Copy; - this.copyall.Name = "copyall"; - this.copyall.Size = new System.Drawing.Size(174, 22); - this.copyall.Text = "Copy"; - this.copyall.Click += new System.EventHandler(this.copyall_Click); - // - // toolStripSeparator1 - // - this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(171, 6); - // - // pasteall - // - this.pasteall.Image = global::CodeImp.DoomBuilder.Properties.Resources.Paste; - this.pasteall.Name = "pasteall"; - this.pasteall.Size = new System.Drawing.Size(174, 22); - this.pasteall.Text = "Paste"; - this.pasteall.Click += new System.EventHandler(this.pasteall_Click); - // - // pasteresources - // - this.pasteresources.Image = global::CodeImp.DoomBuilder.Properties.Resources.PasteSpecial; - this.pasteresources.Name = "pasteresources"; - this.pasteresources.Size = new System.Drawing.Size(174, 22); - this.pasteresources.Text = "Paste Resources"; - this.pasteresources.Click += new System.EventHandler(this.pasteresources_Click); - // - // pasteengines - // - this.pasteengines.Image = global::CodeImp.DoomBuilder.Properties.Resources.PasteSpecial; - this.pasteengines.Name = "pasteengines"; - this.pasteengines.Size = new System.Drawing.Size(174, 22); - this.pasteengines.Text = "Paste Test Engines"; - this.pasteengines.Click += new System.EventHandler(this.pasteengines_Click); - // - // pastecolorpresets - // - this.pastecolorpresets.Image = global::CodeImp.DoomBuilder.Properties.Resources.PasteSpecial; - this.pastecolorpresets.Name = "pastecolorpresets"; - this.pastecolorpresets.Size = new System.Drawing.Size(174, 22); - this.pastecolorpresets.Text = "Paste Color Presets"; - this.pastecolorpresets.Click += new System.EventHandler(this.pastecolorpresets_Click); - // - // testprogramdialog - // - this.testprogramdialog.Filter = "Executable Files (*.exe)|*.exe|Batch Files (*.bat)|*.bat"; - this.testprogramdialog.Title = "Browse Test Program"; - // - // hintlabel - // - this.hintlabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.hintlabel.AutoSize = true; - this.hintlabel.Location = new System.Drawing.Point(30, 384); - this.hintlabel.Name = "hintlabel"; - this.hintlabel.Size = new System.Drawing.Size(276, 13); - this.hintlabel.TabIndex = 6; - this.hintlabel.Text = "Use the context menu to copy-paste game configurations"; - // - // hint - // - this.hint.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.hint.Image = global::CodeImp.DoomBuilder.Properties.Resources.Lightbulb; - this.hint.Location = new System.Drawing.Point(12, 383); - this.hint.Name = "hint"; - this.hint.Size = new System.Drawing.Size(16, 16); - this.hint.TabIndex = 5; - this.hint.TabStop = false; - // - // tooltip - // - this.tooltip.AutomaticDelay = 0; - this.tooltip.AutoPopDelay = 30000; - this.tooltip.InitialDelay = 10; - this.tooltip.ReshowDelay = 100; - this.tooltip.ToolTipTitle = "Supported Placeholders:"; - this.tooltip.UseAnimation = false; - this.tooltip.UseFading = false; - // - // importtexturesetdialog - // - this.importtexturesetdialog.Filter = "Texture Set Configuration File|*.cfg|All files|*.*"; - this.importtexturesetdialog.RestoreDirectory = true; - // - // exporttexturesetdialog - // - this.exporttexturesetdialog.DefaultExt = "cfg"; - this.exporttexturesetdialog.FileName = "ExportedTextureSets.cfg"; - this.exporttexturesetdialog.Filter = "Texture Set Configuration File|*.cfg|All files|*.*"; - this.exporttexturesetdialog.RestoreDirectory = true; - // - // ConfigForm - // - this.AcceptButton = this.apply; - this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; - this.CancelButton = this.cancel; - this.ClientSize = new System.Drawing.Size(794, 416); - this.Controls.Add(this.hintlabel); - this.Controls.Add(this.hint); - this.Controls.Add(this.listconfigs); - this.Controls.Add(this.tabs); - this.Controls.Add(this.cancel); - this.Controls.Add(this.apply); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "ConfigForm"; - this.Opacity = 0D; - this.ShowIcon = false; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Game Configurations"; - this.Shown += new System.EventHandler(this.ConfigForm_Shown); - this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.ConfigForm_HelpRequested); - this.tabs.ResumeLayout(false); - this.tabresources.ResumeLayout(false); - this.tabresources.PerformLayout(); - this.tabnodebuilder.ResumeLayout(false); - this.tabnodebuilder.PerformLayout(); - this.tabtesting.ResumeLayout(false); - this.tabtesting.PerformLayout(); - this.tabtextures.ResumeLayout(false); - this.tabmodes.ResumeLayout(false); - this.tabmodes.PerformLayout(); - this.copypastemenu.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.hint)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); + this.copypastemenu.Name = "copypastemenu"; + this.copypastemenu.Size = new System.Drawing.Size(175, 120); + this.copypastemenu.Opening += new System.ComponentModel.CancelEventHandler(this.copypastemenu_Opening); + // + // copyall + // + this.copyall.Image = global::CodeImp.DoomBuilder.Properties.Resources.Copy; + this.copyall.Name = "copyall"; + this.copyall.Size = new System.Drawing.Size(174, 22); + this.copyall.Text = "Copy"; + this.copyall.Click += new System.EventHandler(this.copyall_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(171, 6); + // + // pasteall + // + this.pasteall.Image = global::CodeImp.DoomBuilder.Properties.Resources.Paste; + this.pasteall.Name = "pasteall"; + this.pasteall.Size = new System.Drawing.Size(174, 22); + this.pasteall.Text = "Paste"; + this.pasteall.Click += new System.EventHandler(this.pasteall_Click); + // + // pasteresources + // + this.pasteresources.Image = global::CodeImp.DoomBuilder.Properties.Resources.PasteSpecial; + this.pasteresources.Name = "pasteresources"; + this.pasteresources.Size = new System.Drawing.Size(174, 22); + this.pasteresources.Text = "Paste Resources"; + this.pasteresources.Click += new System.EventHandler(this.pasteresources_Click); + // + // pasteengines + // + this.pasteengines.Image = global::CodeImp.DoomBuilder.Properties.Resources.PasteSpecial; + this.pasteengines.Name = "pasteengines"; + this.pasteengines.Size = new System.Drawing.Size(174, 22); + this.pasteengines.Text = "Paste Test Engines"; + this.pasteengines.Click += new System.EventHandler(this.pasteengines_Click); + // + // pastecolorpresets + // + this.pastecolorpresets.Image = global::CodeImp.DoomBuilder.Properties.Resources.PasteSpecial; + this.pastecolorpresets.Name = "pastecolorpresets"; + this.pastecolorpresets.Size = new System.Drawing.Size(174, 22); + this.pastecolorpresets.Text = "Paste Color Presets"; + this.pastecolorpresets.Click += new System.EventHandler(this.pastecolorpresets_Click); + // + // testprogramdialog + // + this.testprogramdialog.Filter = "Executable Files (*.exe)|*.exe|Batch Files (*.bat)|*.bat"; + this.testprogramdialog.Title = "Browse Test Program"; + // + // hintlabel + // + this.hintlabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.hintlabel.AutoSize = true; + this.hintlabel.Location = new System.Drawing.Point(30, 384); + this.hintlabel.Name = "hintlabel"; + this.hintlabel.Size = new System.Drawing.Size(276, 13); + this.hintlabel.TabIndex = 6; + this.hintlabel.Text = "Use the context menu to copy-paste game configurations"; + // + // hint + // + this.hint.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.hint.Image = global::CodeImp.DoomBuilder.Properties.Resources.Lightbulb; + this.hint.Location = new System.Drawing.Point(12, 383); + this.hint.Name = "hint"; + this.hint.Size = new System.Drawing.Size(16, 16); + this.hint.TabIndex = 5; + this.hint.TabStop = false; + // + // tooltip + // + this.tooltip.AutomaticDelay = 0; + this.tooltip.AutoPopDelay = 30000; + this.tooltip.InitialDelay = 10; + this.tooltip.ReshowDelay = 100; + this.tooltip.ToolTipTitle = "Supported Placeholders:"; + this.tooltip.UseAnimation = false; + this.tooltip.UseFading = false; + // + // importtexturesetdialog + // + this.importtexturesetdialog.Filter = "Texture Set Configuration File|*.cfg|All files|*.*"; + this.importtexturesetdialog.RestoreDirectory = true; + // + // exporttexturesetdialog + // + this.exporttexturesetdialog.DefaultExt = "cfg"; + this.exporttexturesetdialog.FileName = "ExportedTextureSets.cfg"; + this.exporttexturesetdialog.Filter = "Texture Set Configuration File|*.cfg|All files|*.*"; + this.exporttexturesetdialog.RestoreDirectory = true; + // + // ConfigForm + // + this.AcceptButton = this.apply; + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.CancelButton = this.cancel; + this.ClientSize = new System.Drawing.Size(794, 416); + this.Controls.Add(this.hintlabel); + this.Controls.Add(this.hint); + this.Controls.Add(this.listconfigs); + this.Controls.Add(this.tabs); + this.Controls.Add(this.cancel); + this.Controls.Add(this.apply); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "ConfigForm"; + this.Opacity = 0D; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Game Configurations"; + this.Shown += new System.EventHandler(this.ConfigForm_Shown); + this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.ConfigForm_HelpRequested); + this.tabs.ResumeLayout(false); + this.tabresources.ResumeLayout(false); + this.tabresources.PerformLayout(); + this.tabnodebuilder.ResumeLayout(false); + this.tabnodebuilder.PerformLayout(); + this.tabtesting.ResumeLayout(false); + this.tabtesting.PerformLayout(); + this.tabtextures.ResumeLayout(false); + this.tabmodes.ResumeLayout(false); + this.tabmodes.PerformLayout(); + this.copypastemenu.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.hint)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); } diff --git a/Source/Core/Windows/ConfigForm.cs b/Source/Core/Windows/ConfigForm.cs index b8bb0fc8e90a44a32695828705886d7aef1fe614..0701b517c68fc540774a629f9b8ae1f886041482 100755 --- a/Source/Core/Windows/ConfigForm.cs +++ b/Source/Core/Windows/ConfigForm.cs @@ -41,6 +41,7 @@ namespace CodeImp.DoomBuilder.Windows private List<DefinedTextureSet> copiedsets; private bool preventchanges; private bool reloadresources; + private readonly int initialformheight; //mxd. "Copy/Paste" stuff private ConfigurationInfo configinfocopy; @@ -109,6 +110,9 @@ namespace CodeImp.DoomBuilder.Windows //mxd. Trigger change to update the right panel... listconfigs_MouseUp(this, new MouseEventArgs(MouseButtons.None, 0, 0, 0, 0)); + + // + initialformheight = Height; } // This shows a specific page @@ -140,8 +144,9 @@ namespace CodeImp.DoomBuilder.Windows // Set defaults configinfo.ApplyDefaults(gameconfig); - + // Fill resources list + configdata.GameConfiguration = gameconfig; configdata.EditResourceLocationList(configinfo.Resources); // Go for all nodebuilder save items @@ -1125,6 +1130,12 @@ namespace CodeImp.DoomBuilder.Windows General.Interface.DisplayStatus(StatusType.Info, "Pasted color presets from \"" + configinfocopy.Name + "\""); } - #endregion - } + #endregion + + private void configdata_OnWarningsChanged(int size) + { + Height = initialformheight + size; + Refresh(); + } + } } diff --git a/Source/Core/Windows/ConfigForm.resx b/Source/Core/Windows/ConfigForm.resx index ddb168f8527496ab3e9722c849b4e2cffd8aaee5..b70bfa7284e7b3453c5e4527742e20453fbb443b 100755 --- a/Source/Core/Windows/ConfigForm.resx +++ b/Source/Core/Windows/ConfigForm.resx @@ -223,7 +223,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAA4 - CAAAAk1TRnQBSQFMAwEBAAEsAQIBLAECARMBAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA + CAAAAk1TRnQBSQFMAwEBAAE8AQIBPAECARMBAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA AUwDAAEQAwABAQEAAQgFAAHAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/Source/Core/Windows/MapOptionsForm.Designer.cs b/Source/Core/Windows/MapOptionsForm.Designer.cs index adf58dd86098589330383dfab8d664b286c652c4..4f96a70385f9772c44009c11631ea0edea7dd50a 100755 --- a/Source/Core/Windows/MapOptionsForm.Designer.cs +++ b/Source/Core/Windows/MapOptionsForm.Designer.cs @@ -28,255 +28,266 @@ namespace CodeImp.DoomBuilder.Windows /// </summary> private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - System.Windows.Forms.Label label3; - System.Windows.Forms.Label label2; - System.Windows.Forms.Label label1; - System.Windows.Forms.GroupBox panelsettings; - System.Windows.Forms.Label label4; - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MapOptionsForm)); - this.examplelabel = new System.Windows.Forms.Label(); - this.scriptcompiler = new System.Windows.Forms.ComboBox(); - this.scriptcompilerlabel = new System.Windows.Forms.Label(); - this.levelname = new System.Windows.Forms.TextBox(); - this.config = new System.Windows.Forms.ComboBox(); - this.apply = new System.Windows.Forms.Button(); - this.cancel = new System.Windows.Forms.Button(); - this.panelres = new System.Windows.Forms.GroupBox(); - this.longtexturenames = new System.Windows.Forms.CheckBox(); - this.strictpatches = new System.Windows.Forms.CheckBox(); - this.datalocations = new CodeImp.DoomBuilder.Controls.ResourceListEditor(); - this.tooltip = new System.Windows.Forms.ToolTip(this.components); - this.label5 = new System.Windows.Forms.Label(); - this.prepostcommands = new System.Windows.Forms.Button(); - label3 = new System.Windows.Forms.Label(); - label2 = new System.Windows.Forms.Label(); - label1 = new System.Windows.Forms.Label(); - panelsettings = new System.Windows.Forms.GroupBox(); - label4 = new System.Windows.Forms.Label(); - panelsettings.SuspendLayout(); - this.panelres.SuspendLayout(); - this.SuspendLayout(); - // - // label3 - // - label3.AutoSize = true; - label3.Location = new System.Drawing.Point(239, 83); - label3.Name = "label3"; - label3.Size = new System.Drawing.Size(52, 13); - label3.TabIndex = 9; - label3.Text = "example: "; - // - // label2 - // - label2.AutoSize = true; - label2.Location = new System.Drawing.Point(58, 83); - label2.Name = "label2"; - label2.Size = new System.Drawing.Size(65, 13); - label2.TabIndex = 7; - label2.Text = "Level name:"; - // - // label1 - // - label1.Location = new System.Drawing.Point(13, 27); - label1.Name = "label1"; - label1.Size = new System.Drawing.Size(110, 14); - label1.TabIndex = 5; - label1.Text = "Game Configuration:"; - label1.TextAlign = System.Drawing.ContentAlignment.TopRight; - // - // panelsettings - // - panelsettings.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.Label label3; + System.Windows.Forms.Label label2; + System.Windows.Forms.Label label1; + System.Windows.Forms.GroupBox panelsettings; + System.Windows.Forms.Label label4; + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MapOptionsForm)); + this.examplelabel = new System.Windows.Forms.Label(); + this.scriptcompiler = new System.Windows.Forms.ComboBox(); + this.scriptcompilerlabel = new System.Windows.Forms.Label(); + this.levelname = new System.Windows.Forms.TextBox(); + this.config = new System.Windows.Forms.ComboBox(); + this.apply = new System.Windows.Forms.Button(); + this.cancel = new System.Windows.Forms.Button(); + this.panelres = new System.Windows.Forms.GroupBox(); + this.longtexturenames = new System.Windows.Forms.CheckBox(); + this.strictpatches = new System.Windows.Forms.CheckBox(); + this.datalocations = new CodeImp.DoomBuilder.Controls.ResourceListEditor(); + this.tooltip = new System.Windows.Forms.ToolTip(this.components); + this.label5 = new System.Windows.Forms.Label(); + this.prepostcommands = new System.Windows.Forms.Button(); + label3 = new System.Windows.Forms.Label(); + label2 = new System.Windows.Forms.Label(); + label1 = new System.Windows.Forms.Label(); + panelsettings = new System.Windows.Forms.GroupBox(); + label4 = new System.Windows.Forms.Label(); + panelsettings.SuspendLayout(); + this.panelres.SuspendLayout(); + this.SuspendLayout(); + // + // label3 + // + label3.AutoSize = true; + label3.Location = new System.Drawing.Point(239, 83); + label3.Name = "label3"; + label3.Size = new System.Drawing.Size(52, 13); + label3.TabIndex = 9; + label3.Text = "example: "; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new System.Drawing.Point(58, 83); + label2.Name = "label2"; + label2.Size = new System.Drawing.Size(65, 13); + label2.TabIndex = 7; + label2.Text = "Level name:"; + // + // label1 + // + label1.Location = new System.Drawing.Point(13, 27); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(110, 14); + label1.TabIndex = 5; + label1.Text = "Game Configuration:"; + label1.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // panelsettings + // + panelsettings.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - panelsettings.Controls.Add(this.examplelabel); - panelsettings.Controls.Add(this.scriptcompiler); - panelsettings.Controls.Add(this.scriptcompilerlabel); - panelsettings.Controls.Add(label3); - panelsettings.Controls.Add(this.levelname); - panelsettings.Controls.Add(label2); - panelsettings.Controls.Add(this.config); - panelsettings.Controls.Add(label1); - panelsettings.Location = new System.Drawing.Point(12, 12); - panelsettings.Name = "panelsettings"; - panelsettings.Size = new System.Drawing.Size(397, 112); - panelsettings.TabIndex = 0; - panelsettings.TabStop = false; - panelsettings.Text = " Settings "; - // - // examplelabel - // - this.examplelabel.AutoSize = true; - this.examplelabel.Location = new System.Drawing.Point(288, 83); - this.examplelabel.Name = "examplelabel"; - this.examplelabel.Size = new System.Drawing.Size(42, 13); - this.examplelabel.TabIndex = 12; - this.examplelabel.Text = "MAP01"; - // - // scriptcompiler - // - this.scriptcompiler.DropDownHeight = 206; - this.scriptcompiler.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.scriptcompiler.FormattingEnabled = true; - this.scriptcompiler.IntegralHeight = false; - this.scriptcompiler.Location = new System.Drawing.Point(129, 52); - this.scriptcompiler.Name = "scriptcompiler"; - this.scriptcompiler.Size = new System.Drawing.Size(254, 21); - this.scriptcompiler.TabIndex = 10; - // - // scriptcompilerlabel - // - this.scriptcompilerlabel.Location = new System.Drawing.Point(13, 55); - this.scriptcompilerlabel.Name = "scriptcompilerlabel"; - this.scriptcompilerlabel.Size = new System.Drawing.Size(110, 14); - this.scriptcompilerlabel.TabIndex = 11; - this.scriptcompilerlabel.Text = "Script Type:"; - this.scriptcompilerlabel.TextAlign = System.Drawing.ContentAlignment.TopRight; - // - // levelname - // - this.levelname.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; - this.levelname.Location = new System.Drawing.Point(129, 80); - this.levelname.MaxLength = 8; - this.levelname.Name = "levelname"; - this.levelname.Size = new System.Drawing.Size(94, 20); - this.levelname.TabIndex = 1; - this.levelname.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.levelname_KeyPress); - // - // config - // - this.config.DropDownHeight = 206; - this.config.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.config.FormattingEnabled = true; - this.config.IntegralHeight = false; - this.config.Location = new System.Drawing.Point(129, 24); - this.config.Name = "config"; - this.config.Size = new System.Drawing.Size(254, 21); - this.config.TabIndex = 0; - this.config.SelectedIndexChanged += new System.EventHandler(this.config_SelectedIndexChanged); - // - // label4 - // - label4.AutoSize = true; - label4.Location = new System.Drawing.Point(13, 198); - label4.Name = "label4"; - label4.Size = new System.Drawing.Size(299, 52); - label4.TabIndex = 17; - label4.Text = resources.GetString("label4.Text"); - // - // apply - // - this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.apply.Location = new System.Drawing.Point(179, 429); - this.apply.Name = "apply"; - this.apply.Size = new System.Drawing.Size(112, 25); - this.apply.TabIndex = 2; - this.apply.Text = "OK"; - this.apply.UseVisualStyleBackColor = true; - this.apply.Click += new System.EventHandler(this.apply_Click); - // - // cancel - // - this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.cancel.Location = new System.Drawing.Point(297, 429); - this.cancel.Name = "cancel"; - this.cancel.Size = new System.Drawing.Size(112, 25); - this.cancel.TabIndex = 3; - this.cancel.Text = "Cancel"; - this.cancel.UseVisualStyleBackColor = true; - this.cancel.Click += new System.EventHandler(this.cancel_Click); - // - // panelres - // - this.panelres.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + panelsettings.Controls.Add(this.examplelabel); + panelsettings.Controls.Add(this.scriptcompiler); + panelsettings.Controls.Add(this.scriptcompilerlabel); + panelsettings.Controls.Add(label3); + panelsettings.Controls.Add(this.levelname); + panelsettings.Controls.Add(label2); + panelsettings.Controls.Add(this.config); + panelsettings.Controls.Add(label1); + panelsettings.Location = new System.Drawing.Point(12, 12); + panelsettings.Name = "panelsettings"; + panelsettings.Size = new System.Drawing.Size(397, 112); + panelsettings.TabIndex = 0; + panelsettings.TabStop = false; + panelsettings.Text = " Settings "; + // + // examplelabel + // + this.examplelabel.AutoSize = true; + this.examplelabel.Location = new System.Drawing.Point(288, 83); + this.examplelabel.Name = "examplelabel"; + this.examplelabel.Size = new System.Drawing.Size(42, 13); + this.examplelabel.TabIndex = 12; + this.examplelabel.Text = "MAP01"; + // + // scriptcompiler + // + this.scriptcompiler.DropDownHeight = 206; + this.scriptcompiler.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.scriptcompiler.FormattingEnabled = true; + this.scriptcompiler.IntegralHeight = false; + this.scriptcompiler.Location = new System.Drawing.Point(129, 52); + this.scriptcompiler.Name = "scriptcompiler"; + this.scriptcompiler.Size = new System.Drawing.Size(254, 21); + this.scriptcompiler.TabIndex = 10; + // + // scriptcompilerlabel + // + this.scriptcompilerlabel.Location = new System.Drawing.Point(13, 55); + this.scriptcompilerlabel.Name = "scriptcompilerlabel"; + this.scriptcompilerlabel.Size = new System.Drawing.Size(110, 14); + this.scriptcompilerlabel.TabIndex = 11; + this.scriptcompilerlabel.Text = "Script Type:"; + this.scriptcompilerlabel.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // levelname + // + this.levelname.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; + this.levelname.Location = new System.Drawing.Point(129, 80); + this.levelname.MaxLength = 8; + this.levelname.Name = "levelname"; + this.levelname.Size = new System.Drawing.Size(94, 20); + this.levelname.TabIndex = 1; + this.levelname.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.levelname_KeyPress); + // + // config + // + this.config.DropDownHeight = 206; + this.config.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.config.FormattingEnabled = true; + this.config.IntegralHeight = false; + this.config.Location = new System.Drawing.Point(129, 24); + this.config.Name = "config"; + this.config.Size = new System.Drawing.Size(254, 21); + this.config.TabIndex = 0; + this.config.SelectedIndexChanged += new System.EventHandler(this.config_SelectedIndexChanged); + // + // label4 + // + label4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.panelres.Controls.Add(this.longtexturenames); - this.panelres.Controls.Add(this.strictpatches); - this.panelres.Controls.Add(this.datalocations); - this.panelres.Controls.Add(label4); - this.panelres.Location = new System.Drawing.Point(12, 130); - this.panelres.Name = "panelres"; - this.panelres.Size = new System.Drawing.Size(397, 259); - this.panelres.TabIndex = 1; - this.panelres.TabStop = false; - this.panelres.Text = " Resources "; - // - // longtexturenames - // - this.longtexturenames.AutoSize = true; - this.longtexturenames.Location = new System.Drawing.Point(14, 45); - this.longtexturenames.Name = "longtexturenames"; - this.longtexturenames.Size = new System.Drawing.Size(137, 17); - this.longtexturenames.TabIndex = 21; - this.longtexturenames.Text = "Use long texture names"; - this.longtexturenames.UseVisualStyleBackColor = true; - // - // strictpatches - // - this.strictpatches.AutoSize = true; - this.strictpatches.Location = new System.Drawing.Point(14, 21); - this.strictpatches.Name = "strictpatches"; - this.strictpatches.Size = new System.Drawing.Size(349, 17); - this.strictpatches.TabIndex = 20; - this.strictpatches.Text = "Strictly load patches between P_START and P_END only for this file"; - this.strictpatches.UseVisualStyleBackColor = true; - // - // datalocations - // - this.datalocations.AllowDrop = true; - this.datalocations.DialogOffset = new System.Drawing.Point(40, 20); - this.datalocations.Location = new System.Drawing.Point(14, 68); - this.datalocations.Name = "datalocations"; - this.datalocations.Size = new System.Drawing.Size(368, 127); - this.datalocations.TabIndex = 0; - // - // label5 - // - this.label5.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.label5.Location = new System.Drawing.Point(13, 423); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(396, 2); - this.label5.TabIndex = 21; - // - // prepostcommands - // - this.prepostcommands.Location = new System.Drawing.Point(247, 395); - this.prepostcommands.Name = "prepostcommands"; - this.prepostcommands.Size = new System.Drawing.Size(162, 25); - this.prepostcommands.TabIndex = 20; - this.prepostcommands.Text = "Edit pre and post commands"; - this.prepostcommands.UseVisualStyleBackColor = true; - this.prepostcommands.Click += new System.EventHandler(this.prepostcommands_Click); - // - // MapOptionsForm - // - this.AcceptButton = this.apply; - this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; - this.CancelButton = this.cancel; - this.ClientSize = new System.Drawing.Size(421, 466); - this.Controls.Add(this.label5); - this.Controls.Add(this.prepostcommands); - this.Controls.Add(this.panelres); - this.Controls.Add(this.cancel); - this.Controls.Add(this.apply); - this.Controls.Add(panelsettings); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "MapOptionsForm"; - this.Opacity = 0D; - this.ShowIcon = false; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Map Options"; - this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.MapOptionsForm_HelpRequested); - panelsettings.ResumeLayout(false); - panelsettings.PerformLayout(); - this.panelres.ResumeLayout(false); - this.panelres.PerformLayout(); - this.ResumeLayout(false); + label4.AutoSize = true; + label4.Location = new System.Drawing.Point(13, 198); + label4.Name = "label4"; + label4.Size = new System.Drawing.Size(299, 52); + label4.TabIndex = 17; + label4.Text = resources.GetString("label4.Text"); + // + // apply + // + this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.apply.Location = new System.Drawing.Point(179, 429); + this.apply.Name = "apply"; + this.apply.Size = new System.Drawing.Size(112, 25); + this.apply.TabIndex = 2; + this.apply.Text = "OK"; + this.apply.UseVisualStyleBackColor = true; + this.apply.Click += new System.EventHandler(this.apply_Click); + // + // cancel + // + this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancel.Location = new System.Drawing.Point(297, 429); + this.cancel.Name = "cancel"; + this.cancel.Size = new System.Drawing.Size(112, 25); + this.cancel.TabIndex = 3; + this.cancel.Text = "Cancel"; + this.cancel.UseVisualStyleBackColor = true; + this.cancel.Click += new System.EventHandler(this.cancel_Click); + // + // panelres + // + this.panelres.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.panelres.Controls.Add(this.longtexturenames); + this.panelres.Controls.Add(this.strictpatches); + this.panelres.Controls.Add(this.datalocations); + this.panelres.Controls.Add(label4); + this.panelres.Location = new System.Drawing.Point(12, 130); + this.panelres.Name = "panelres"; + this.panelres.Size = new System.Drawing.Size(397, 259); + this.panelres.TabIndex = 1; + this.panelres.TabStop = false; + this.panelres.Text = " Resources "; + // + // longtexturenames + // + this.longtexturenames.AutoSize = true; + this.longtexturenames.Location = new System.Drawing.Point(14, 45); + this.longtexturenames.Name = "longtexturenames"; + this.longtexturenames.Size = new System.Drawing.Size(137, 17); + this.longtexturenames.TabIndex = 21; + this.longtexturenames.Text = "Use long texture names"; + this.longtexturenames.UseVisualStyleBackColor = true; + // + // strictpatches + // + this.strictpatches.AutoSize = true; + this.strictpatches.Location = new System.Drawing.Point(14, 21); + this.strictpatches.Name = "strictpatches"; + this.strictpatches.Size = new System.Drawing.Size(349, 17); + this.strictpatches.TabIndex = 20; + this.strictpatches.Text = "Strictly load patches between P_START and P_END only for this file"; + this.strictpatches.UseVisualStyleBackColor = true; + // + // datalocations + // + this.datalocations.AllowDrop = true; + this.datalocations.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.datalocations.DialogOffset = new System.Drawing.Point(40, 20); + this.datalocations.GameConfiguration = null; + this.datalocations.Location = new System.Drawing.Point(14, 68); + this.datalocations.Name = "datalocations"; + this.datalocations.Size = new System.Drawing.Size(368, 127); + this.datalocations.TabIndex = 0; + this.datalocations.OnWarningsChanged += new CodeImp.DoomBuilder.Controls.ResourceListEditor.WarningsChanged(this.datalocations_OnWarningsChanged); + // + // label5 + // + this.label5.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label5.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.label5.Location = new System.Drawing.Point(13, 423); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(396, 2); + this.label5.TabIndex = 21; + // + // prepostcommands + // + this.prepostcommands.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.prepostcommands.Location = new System.Drawing.Point(247, 395); + this.prepostcommands.Name = "prepostcommands"; + this.prepostcommands.Size = new System.Drawing.Size(162, 25); + this.prepostcommands.TabIndex = 20; + this.prepostcommands.Text = "Edit pre and post commands"; + this.prepostcommands.UseVisualStyleBackColor = true; + this.prepostcommands.Click += new System.EventHandler(this.prepostcommands_Click); + // + // MapOptionsForm + // + this.AcceptButton = this.apply; + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.CancelButton = this.cancel; + this.ClientSize = new System.Drawing.Size(421, 466); + this.Controls.Add(this.label5); + this.Controls.Add(this.prepostcommands); + this.Controls.Add(this.panelres); + this.Controls.Add(this.cancel); + this.Controls.Add(this.apply); + this.Controls.Add(panelsettings); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "MapOptionsForm"; + this.Opacity = 0D; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Map Options"; + this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.MapOptionsForm_HelpRequested); + panelsettings.ResumeLayout(false); + panelsettings.PerformLayout(); + this.panelres.ResumeLayout(false); + this.panelres.PerformLayout(); + this.ResumeLayout(false); } diff --git a/Source/Core/Windows/MapOptionsForm.cs b/Source/Core/Windows/MapOptionsForm.cs index 825d5edb2930bd596d5293163aedda5efa2d81c6..3277d03560dfe265ac72cead9f88b37835584971 100755 --- a/Source/Core/Windows/MapOptionsForm.cs +++ b/Source/Core/Windows/MapOptionsForm.cs @@ -39,6 +39,7 @@ namespace CodeImp.DoomBuilder.Windows private ExternalCommandSettings testprecommand; private ExternalCommandSettings testpostcommand; private bool prepostcommandsmodified; + private readonly int initialformheight; // Properties public MapOptions Options { get { return options; } } @@ -110,6 +111,8 @@ namespace CodeImp.DoomBuilder.Windows //mxd. Still better than nothing :) if(config.SelectedIndex == -1 && config.Items.Count > 0) config.SelectedIndex = 0; + // Find whatever was selected after the previous step + //mxd if(General.Map != null) datalocations.StartPath = General.Map.FilePathName; @@ -120,11 +123,22 @@ namespace CodeImp.DoomBuilder.Windows strictpatches.Checked = options.StrictPatches; // Fill the resources list + datalocations.IsMapControl = true; + datalocations.GameConfiguration = GetGameConfiguration(); datalocations.EditResourceLocationList(options.Resources); //reloadresourceprecmd.Text = options.ReloadResourcePreCommand; + + this.initialformheight = Height; } + private GameConfiguration GetGameConfiguration() + { + if (config.Items.Count == 0 || config.SelectedIndex < 0) return null; + + return new GameConfiguration((config.SelectedItem as ConfigurationInfo).Configuration); + } + // OK clicked private void apply_Click(object sender, EventArgs e) { @@ -176,20 +190,6 @@ namespace CodeImp.DoomBuilder.Windows return; } - // When making a new map, check if we should warn the user for missing resources - if(newmap) - { - General.Settings.LastUsedConfigName = configinfo.Name; //mxd - - if((locations.Count == 0) && (configinfo.Resources.Count == 0) && - MessageBox.Show(this, "You are about to make a map without selecting any resources. Textures, flats and " + - "sprites may not be shown correctly or may not show up at all. Do you want to continue?", Application.ProductName, - MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.No) - { - return; - } - } - // Next checks are only for maps that are already opened if(!newmap) { @@ -242,6 +242,7 @@ namespace CodeImp.DoomBuilder.Windows { // Select this item config.SelectedIndex = i; + datalocations.GameConfiguration = GetGameConfiguration(); } } return; @@ -345,6 +346,7 @@ namespace CodeImp.DoomBuilder.Windows } // Show resources + datalocations.GameConfiguration = GetGameConfiguration(); datalocations.FixedResourceLocationList(info.Resources); // Update long texture names checkbox (mxd) @@ -388,5 +390,11 @@ namespace CodeImp.DoomBuilder.Windows prepostcommandsmodified = true; } } - } + + private void datalocations_OnWarningsChanged(int size) + { + Height = initialformheight + size; + Refresh(); + } + } } \ No newline at end of file diff --git a/Source/Core/Windows/OpenMapOptionsForm.Designer.cs b/Source/Core/Windows/OpenMapOptionsForm.Designer.cs index cb1c44be12a75dfed5ec32fbbe25fe4871e4fc5d..1b966845a1c7d4afacc03e5caff3b7388fe9d3ef 100755 --- a/Source/Core/Windows/OpenMapOptionsForm.Designer.cs +++ b/Source/Core/Windows/OpenMapOptionsForm.Designer.cs @@ -28,217 +28,225 @@ namespace CodeImp.DoomBuilder.Windows /// </summary> private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - System.Windows.Forms.ColumnHeader columnHeader1; - System.Windows.Forms.Label label1; - System.Windows.Forms.Label label2; - System.Windows.Forms.Label label3; - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OpenMapOptionsForm)); - this.panelres = new System.Windows.Forms.GroupBox(); - this.longtexturenames = new System.Windows.Forms.CheckBox(); - this.strictpatches = new System.Windows.Forms.CheckBox(); - this.datalocations = new CodeImp.DoomBuilder.Controls.ResourceListEditor(); - this.apply = new System.Windows.Forms.Button(); - this.cancel = new System.Windows.Forms.Button(); - this.config = new System.Windows.Forms.ComboBox(); - this.mapslist = new System.Windows.Forms.ListView(); - this.scriptcompiler = new System.Windows.Forms.ComboBox(); - this.scriptcompilerlabel = new System.Windows.Forms.Label(); - this.tooltip = new System.Windows.Forms.ToolTip(this.components); - columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - label1 = new System.Windows.Forms.Label(); - label2 = new System.Windows.Forms.Label(); - label3 = new System.Windows.Forms.Label(); - this.panelres.SuspendLayout(); - this.SuspendLayout(); - // - // columnHeader1 - // - columnHeader1.Text = "Map name"; - columnHeader1.Width = -1; - // - // label1 - // - label1.Location = new System.Drawing.Point(15, 24); - label1.Name = "label1"; - label1.Size = new System.Drawing.Size(120, 14); - label1.TabIndex = 14; - label1.Text = "Game Configuration:"; - label1.TextAlign = System.Drawing.ContentAlignment.TopRight; - // - // label2 - // - label2.AutoSize = true; - label2.Location = new System.Drawing.Point(12, 89); - label2.Name = "label2"; - label2.Size = new System.Drawing.Size(360, 26); - label2.TabIndex = 16; - label2.Text = "With the above selected configuration, the maps shown below were found \r\nin the c" + + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.ColumnHeader columnHeader1; + System.Windows.Forms.Label label1; + System.Windows.Forms.Label label2; + System.Windows.Forms.Label label3; + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OpenMapOptionsForm)); + this.panelres = new System.Windows.Forms.GroupBox(); + this.longtexturenames = new System.Windows.Forms.CheckBox(); + this.strictpatches = new System.Windows.Forms.CheckBox(); + this.datalocations = new CodeImp.DoomBuilder.Controls.ResourceListEditor(); + this.apply = new System.Windows.Forms.Button(); + this.cancel = new System.Windows.Forms.Button(); + this.config = new System.Windows.Forms.ComboBox(); + this.mapslist = new System.Windows.Forms.ListView(); + this.scriptcompiler = new System.Windows.Forms.ComboBox(); + this.scriptcompilerlabel = new System.Windows.Forms.Label(); + this.tooltip = new System.Windows.Forms.ToolTip(this.components); + columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + label1 = new System.Windows.Forms.Label(); + label2 = new System.Windows.Forms.Label(); + label3 = new System.Windows.Forms.Label(); + this.panelres.SuspendLayout(); + this.SuspendLayout(); + // + // columnHeader1 + // + columnHeader1.Text = "Map name"; + columnHeader1.Width = -1; + // + // label1 + // + label1.Location = new System.Drawing.Point(15, 24); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(120, 14); + label1.TabIndex = 14; + label1.Text = "Game Configuration:"; + label1.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new System.Drawing.Point(12, 89); + label2.Name = "label2"; + label2.Size = new System.Drawing.Size(360, 26); + label2.TabIndex = 16; + label2.Text = "With the above selected configuration, the maps shown below were found \r\nin the c" + "hosen WAD file. Please select the map to load for editing."; - // - // label3 - // - label3.AutoSize = true; - label3.Location = new System.Drawing.Point(11, 198); - label3.Name = "label3"; - label3.Size = new System.Drawing.Size(299, 52); - label3.TabIndex = 17; - label3.Text = resources.GetString("label3.Text"); - // - // panelres - // - this.panelres.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + // + // label3 + // + label3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.panelres.Controls.Add(this.longtexturenames); - this.panelres.Controls.Add(this.strictpatches); - this.panelres.Controls.Add(this.datalocations); - this.panelres.Controls.Add(label3); - this.panelres.Location = new System.Drawing.Point(12, 246); - this.panelres.Name = "panelres"; - this.panelres.Size = new System.Drawing.Size(396, 259); - this.panelres.TabIndex = 2; - this.panelres.TabStop = false; - this.panelres.Text = " Resources "; - // - // longtexturenames - // - this.longtexturenames.AutoSize = true; - this.longtexturenames.Location = new System.Drawing.Point(14, 45); - this.longtexturenames.Name = "longtexturenames"; - this.longtexturenames.Size = new System.Drawing.Size(137, 17); - this.longtexturenames.TabIndex = 20; - this.longtexturenames.Text = "Use long texture names"; - this.longtexturenames.UseVisualStyleBackColor = true; - // - // strictpatches - // - this.strictpatches.AutoSize = true; - this.strictpatches.Location = new System.Drawing.Point(14, 21); - this.strictpatches.Name = "strictpatches"; - this.strictpatches.Size = new System.Drawing.Size(349, 17); - this.strictpatches.TabIndex = 19; - this.strictpatches.Text = "Strictly load patches between P_START and P_END only for this file"; - this.strictpatches.UseVisualStyleBackColor = true; - // - // datalocations - // - this.datalocations.AllowDrop = true; - this.datalocations.DialogOffset = new System.Drawing.Point(40, 20); - this.datalocations.Location = new System.Drawing.Point(14, 68); - this.datalocations.Name = "datalocations"; - this.datalocations.Size = new System.Drawing.Size(368, 127); - this.datalocations.TabIndex = 0; - // - // apply - // - this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.apply.Location = new System.Drawing.Point(178, 510); - this.apply.Name = "apply"; - this.apply.Size = new System.Drawing.Size(112, 25); - this.apply.TabIndex = 3; - this.apply.Text = "OK"; - this.apply.UseVisualStyleBackColor = true; - this.apply.Click += new System.EventHandler(this.apply_Click); - // - // cancel - // - this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.cancel.Location = new System.Drawing.Point(296, 510); - this.cancel.Name = "cancel"; - this.cancel.Size = new System.Drawing.Size(112, 25); - this.cancel.TabIndex = 4; - this.cancel.Text = "Cancel"; - this.cancel.UseVisualStyleBackColor = true; - this.cancel.Click += new System.EventHandler(this.cancel_Click); - // - // config - // - this.config.DropDownHeight = 206; - this.config.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.config.FormattingEnabled = true; - this.config.IntegralHeight = false; - this.config.Location = new System.Drawing.Point(141, 21); - this.config.Name = "config"; - this.config.Size = new System.Drawing.Size(267, 21); - this.config.TabIndex = 0; - this.config.SelectedIndexChanged += new System.EventHandler(this.config_SelectedIndexChanged); - // - // mapslist - // - this.mapslist.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + label3.AutoSize = true; + label3.Location = new System.Drawing.Point(11, 195); + label3.Name = "label3"; + label3.Size = new System.Drawing.Size(299, 52); + label3.TabIndex = 17; + label3.Text = resources.GetString("label3.Text"); + // + // panelres + // + this.panelres.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.mapslist.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.panelres.Controls.Add(this.longtexturenames); + this.panelres.Controls.Add(this.strictpatches); + this.panelres.Controls.Add(this.datalocations); + this.panelres.Controls.Add(label3); + this.panelres.Location = new System.Drawing.Point(12, 246); + this.panelres.Name = "panelres"; + this.panelres.Size = new System.Drawing.Size(396, 259); + this.panelres.TabIndex = 2; + this.panelres.TabStop = false; + this.panelres.Text = " Resources "; + // + // longtexturenames + // + this.longtexturenames.AutoSize = true; + this.longtexturenames.Location = new System.Drawing.Point(14, 45); + this.longtexturenames.Name = "longtexturenames"; + this.longtexturenames.Size = new System.Drawing.Size(137, 17); + this.longtexturenames.TabIndex = 20; + this.longtexturenames.Text = "Use long texture names"; + this.longtexturenames.UseVisualStyleBackColor = true; + // + // strictpatches + // + this.strictpatches.AutoSize = true; + this.strictpatches.Location = new System.Drawing.Point(14, 21); + this.strictpatches.Name = "strictpatches"; + this.strictpatches.Size = new System.Drawing.Size(349, 17); + this.strictpatches.TabIndex = 19; + this.strictpatches.Text = "Strictly load patches between P_START and P_END only for this file"; + this.strictpatches.UseVisualStyleBackColor = true; + // + // datalocations + // + this.datalocations.AllowDrop = true; + this.datalocations.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.datalocations.DialogOffset = new System.Drawing.Point(40, 20); + this.datalocations.GameConfiguration = null; + this.datalocations.Location = new System.Drawing.Point(14, 68); + this.datalocations.Name = "datalocations"; + this.datalocations.Size = new System.Drawing.Size(367, 124); + this.datalocations.TabIndex = 0; + this.datalocations.OnWarningsChanged += new CodeImp.DoomBuilder.Controls.ResourceListEditor.WarningsChanged(this.datalocations_OnWarningsChanged); + // + // apply + // + this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.apply.Location = new System.Drawing.Point(178, 510); + this.apply.Name = "apply"; + this.apply.Size = new System.Drawing.Size(112, 25); + this.apply.TabIndex = 3; + this.apply.Text = "OK"; + this.apply.UseVisualStyleBackColor = true; + this.apply.Click += new System.EventHandler(this.apply_Click); + // + // cancel + // + this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancel.Location = new System.Drawing.Point(296, 510); + this.cancel.Name = "cancel"; + this.cancel.Size = new System.Drawing.Size(112, 25); + this.cancel.TabIndex = 4; + this.cancel.Text = "Cancel"; + this.cancel.UseVisualStyleBackColor = true; + this.cancel.Click += new System.EventHandler(this.cancel_Click); + // + // config + // + this.config.DropDownHeight = 206; + this.config.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.config.FormattingEnabled = true; + this.config.IntegralHeight = false; + this.config.Location = new System.Drawing.Point(141, 21); + this.config.Name = "config"; + this.config.Size = new System.Drawing.Size(267, 21); + this.config.TabIndex = 0; + this.config.SelectedIndexChanged += new System.EventHandler(this.config_SelectedIndexChanged); + // + // mapslist + // + this.mapslist.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.mapslist.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { columnHeader1}); - this.mapslist.FullRowSelect = true; - this.mapslist.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; - this.mapslist.HideSelection = false; - this.mapslist.LabelWrap = false; - this.mapslist.Location = new System.Drawing.Point(12, 122); - this.mapslist.MultiSelect = false; - this.mapslist.Name = "mapslist"; - this.mapslist.ShowGroups = false; - this.mapslist.Size = new System.Drawing.Size(396, 118); - this.mapslist.Sorting = System.Windows.Forms.SortOrder.Ascending; - this.mapslist.TabIndex = 1; - this.mapslist.UseCompatibleStateImageBehavior = false; - this.mapslist.View = System.Windows.Forms.View.List; - this.mapslist.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventHandler(this.mapslist_ItemSelectionChanged); - this.mapslist.DoubleClick += new System.EventHandler(this.mapslist_DoubleClick); - // - // scriptcompiler - // - this.scriptcompiler.DropDownHeight = 206; - this.scriptcompiler.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.scriptcompiler.Enabled = false; - this.scriptcompiler.FormattingEnabled = true; - this.scriptcompiler.IntegralHeight = false; - this.scriptcompiler.Location = new System.Drawing.Point(141, 49); - this.scriptcompiler.Name = "scriptcompiler"; - this.scriptcompiler.Size = new System.Drawing.Size(267, 21); - this.scriptcompiler.TabIndex = 17; - // - // scriptcompilerlabel - // - this.scriptcompilerlabel.Enabled = false; - this.scriptcompilerlabel.Location = new System.Drawing.Point(15, 52); - this.scriptcompilerlabel.Name = "scriptcompilerlabel"; - this.scriptcompilerlabel.Size = new System.Drawing.Size(120, 14); - this.scriptcompilerlabel.TabIndex = 18; - this.scriptcompilerlabel.Text = "Script Type:"; - this.scriptcompilerlabel.TextAlign = System.Drawing.ContentAlignment.TopRight; - // - // OpenMapOptionsForm - // - this.AcceptButton = this.apply; - this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; - this.CancelButton = this.cancel; - this.ClientSize = new System.Drawing.Size(420, 541); - this.Controls.Add(this.scriptcompiler); - this.Controls.Add(this.scriptcompilerlabel); - this.Controls.Add(this.mapslist); - this.Controls.Add(label2); - this.Controls.Add(this.config); - this.Controls.Add(label1); - this.Controls.Add(this.cancel); - this.Controls.Add(this.apply); - this.Controls.Add(this.panelres); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "OpenMapOptionsForm"; - this.Opacity = 0D; - this.ShowIcon = false; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Open Map Options"; - this.Shown += new System.EventHandler(this.OpenMapOptionsForm_Shown); - this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.OpenMapOptionsForm_HelpRequested); - this.panelres.ResumeLayout(false); - this.panelres.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); + this.mapslist.FullRowSelect = true; + this.mapslist.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; + this.mapslist.HideSelection = false; + this.mapslist.LabelWrap = false; + this.mapslist.Location = new System.Drawing.Point(12, 122); + this.mapslist.MultiSelect = false; + this.mapslist.Name = "mapslist"; + this.mapslist.ShowGroups = false; + this.mapslist.Size = new System.Drawing.Size(396, 118); + this.mapslist.Sorting = System.Windows.Forms.SortOrder.Ascending; + this.mapslist.TabIndex = 1; + this.mapslist.UseCompatibleStateImageBehavior = false; + this.mapslist.View = System.Windows.Forms.View.List; + this.mapslist.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventHandler(this.mapslist_ItemSelectionChanged); + this.mapslist.DoubleClick += new System.EventHandler(this.mapslist_DoubleClick); + // + // scriptcompiler + // + this.scriptcompiler.DropDownHeight = 206; + this.scriptcompiler.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.scriptcompiler.Enabled = false; + this.scriptcompiler.FormattingEnabled = true; + this.scriptcompiler.IntegralHeight = false; + this.scriptcompiler.Location = new System.Drawing.Point(141, 49); + this.scriptcompiler.Name = "scriptcompiler"; + this.scriptcompiler.Size = new System.Drawing.Size(267, 21); + this.scriptcompiler.TabIndex = 17; + // + // scriptcompilerlabel + // + this.scriptcompilerlabel.Enabled = false; + this.scriptcompilerlabel.Location = new System.Drawing.Point(15, 52); + this.scriptcompilerlabel.Name = "scriptcompilerlabel"; + this.scriptcompilerlabel.Size = new System.Drawing.Size(120, 14); + this.scriptcompilerlabel.TabIndex = 18; + this.scriptcompilerlabel.Text = "Script Type:"; + this.scriptcompilerlabel.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // OpenMapOptionsForm + // + this.AcceptButton = this.apply; + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.CancelButton = this.cancel; + this.ClientSize = new System.Drawing.Size(420, 541); + this.Controls.Add(this.scriptcompiler); + this.Controls.Add(this.scriptcompilerlabel); + this.Controls.Add(this.mapslist); + this.Controls.Add(label2); + this.Controls.Add(this.config); + this.Controls.Add(label1); + this.Controls.Add(this.cancel); + this.Controls.Add(this.apply); + this.Controls.Add(this.panelres); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "OpenMapOptionsForm"; + this.Opacity = 0D; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Open Map Options"; + this.Shown += new System.EventHandler(this.OpenMapOptionsForm_Shown); + this.HelpRequested += new System.Windows.Forms.HelpEventHandler(this.OpenMapOptionsForm_HelpRequested); + this.panelres.ResumeLayout(false); + this.panelres.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); } diff --git a/Source/Core/Windows/OpenMapOptionsForm.cs b/Source/Core/Windows/OpenMapOptionsForm.cs index 5d1fad7aac9a42e4d81f9742596fc3906bad491b..3aa65c3759421f97a95198df42241685ba577c85 100755 --- a/Source/Core/Windows/OpenMapOptionsForm.cs +++ b/Source/Core/Windows/OpenMapOptionsForm.cs @@ -41,6 +41,7 @@ namespace CodeImp.DoomBuilder.Windows private string selectedmapname; private static readonly Regex episodemapregex = new Regex("^E[1-9]M[1-9]$"); private static readonly Regex noepisodemapregex = new Regex("^MAP[0-9][0-9]$"); + private readonly int initialformsize; // Properties //public string FilePathName { get { return filepathname; } } @@ -51,11 +52,13 @@ namespace CodeImp.DoomBuilder.Windows { // Initialize InitializeComponent(); - CodeImp.DoomBuilder.General.ApplyMonoListViewFix(mapslist); + General.ApplyMonoListViewFix(mapslist); this.Text = "Open Map from " + Path.GetFileName(filepathname); this.filepathname = filepathname; datalocations.StartPath = filepathname; //mxd + datalocations.IsMapControl = true; this.options = null; + this.initialformsize = Height; } // Constructor @@ -63,12 +66,20 @@ namespace CodeImp.DoomBuilder.Windows { // Initialize InitializeComponent(); - CodeImp.DoomBuilder.General.ApplyMonoListViewFix(mapslist); + General.ApplyMonoListViewFix(mapslist); this.Text = "Open Map from " + Path.GetFileName(filepathname); this.filepathname = filepathname; this.options = options; datalocations.StartPath = filepathname; //mxd - datalocations.EditResourceLocationList(options.Resources); + datalocations.IsMapControl = true; + this.initialformsize = Height; + } + + private GameConfiguration GetGameConfiguration() + { + if (config.Items.Count == 0 || config.SelectedIndex < 0) return null; + + return new GameConfiguration((config.SelectedItem as ConfigurationInfo).Configuration); } // This loads the settings and attempt to find a suitable config @@ -230,6 +241,7 @@ namespace CodeImp.DoomBuilder.Windows { // Show the window this.Opacity = 1; + datalocations.GameConfiguration = GetGameConfiguration(); } // Done @@ -311,6 +323,9 @@ namespace CodeImp.DoomBuilder.Windows // Configuration is selected private void config_SelectedIndexChanged(object sender, EventArgs e) { + // + datalocations.GameConfiguration = GetGameConfiguration(); + // Anything selected? if(config.SelectedIndex < 0) return; @@ -528,6 +543,10 @@ namespace CodeImp.DoomBuilder.Windows // Load settings LoadSettings(); + + // Show + if (options != null) + datalocations.EditResourceLocationList(options.Resources); } // Map name doubleclicked @@ -540,7 +559,10 @@ namespace CodeImp.DoomBuilder.Windows // Map name selected private void mapslist_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { - if(!e.IsSelected) return; //mxd. Don't want to trigger this twice + // + datalocations.GameConfiguration = GetGameConfiguration(); + + if (!e.IsSelected) return; //mxd. Don't want to trigger this twice DataLocationList locations; DataLocationList listedlocations; @@ -618,5 +640,11 @@ namespace CodeImp.DoomBuilder.Windows General.ShowHelp("w_openmapoptions.html"); hlpevent.Handled = true; } - } + + private void datalocations_OnWarningsChanged(int size) + { + Height = initialformsize + size; + Refresh(); + } + } } \ No newline at end of file diff --git a/Source/Core/Windows/ResourceOptionsForm.Designer.cs b/Source/Core/Windows/ResourceOptionsForm.Designer.cs index 7f0f2494dda85b7c5be871c10e564bdf6fef03ef..b38ba302dcc81c5d81ba5589e834306efb117b1f 100755 --- a/Source/Core/Windows/ResourceOptionsForm.Designer.cs +++ b/Source/Core/Windows/ResourceOptionsForm.Designer.cs @@ -53,6 +53,9 @@ namespace CodeImp.DoomBuilder.Windows this.wadfiledialog = new System.Windows.Forms.OpenFileDialog(); this.pk3filedialog = new System.Windows.Forms.OpenFileDialog(); this.notfortesting = new System.Windows.Forms.CheckBox(); + this.checkingloader = new System.Windows.Forms.Panel(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.label4 = new System.Windows.Forms.Label(); label1 = new System.Windows.Forms.Label(); label2 = new System.Windows.Forms.Label(); label3 = new System.Windows.Forms.Label(); @@ -60,6 +63,8 @@ namespace CodeImp.DoomBuilder.Windows this.wadfiletab.SuspendLayout(); this.directorytab.SuspendLayout(); this.pk3filetab.SuspendLayout(); + this.checkingloader.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.SuspendLayout(); // // label1 @@ -280,7 +285,7 @@ namespace CodeImp.DoomBuilder.Windows // this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.cancel.Location = new System.Drawing.Point(262, 260); + this.cancel.Location = new System.Drawing.Point(262, 304); this.cancel.Name = "cancel"; this.cancel.Size = new System.Drawing.Size(112, 25); this.cancel.TabIndex = 2; @@ -291,7 +296,7 @@ namespace CodeImp.DoomBuilder.Windows // apply // this.apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.apply.Location = new System.Drawing.Point(144, 260); + this.apply.Location = new System.Drawing.Point(144, 304); this.apply.Name = "apply"; this.apply.Size = new System.Drawing.Size(112, 25); this.apply.TabIndex = 1; @@ -313,20 +318,56 @@ namespace CodeImp.DoomBuilder.Windows // this.notfortesting.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.notfortesting.AutoSize = true; - this.notfortesting.Location = new System.Drawing.Point(12, 232); + this.notfortesting.Location = new System.Drawing.Point(12, 233); this.notfortesting.Name = "notfortesting"; this.notfortesting.Size = new System.Drawing.Size(239, 17); this.notfortesting.TabIndex = 3; this.notfortesting.Text = "Exclude this resource from testing parameters"; this.notfortesting.UseVisualStyleBackColor = true; // + // checkingloader + // + this.checkingloader.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.checkingloader.BackColor = System.Drawing.SystemColors.Info; + this.checkingloader.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.checkingloader.Controls.Add(this.pictureBox1); + this.checkingloader.Controls.Add(this.label4); + this.checkingloader.Cursor = System.Windows.Forms.Cursors.AppStarting; + this.checkingloader.ForeColor = System.Drawing.SystemColors.InfoText; + this.checkingloader.Location = new System.Drawing.Point(12, 263); + this.checkingloader.Name = "checkingloader"; + this.checkingloader.Size = new System.Drawing.Size(362, 32); + this.checkingloader.TabIndex = 4; + this.checkingloader.Visible = false; + // + // pictureBox1 + // + this.pictureBox1.Image = global::CodeImp.DoomBuilder.Properties.Resources.Loader; + this.pictureBox1.InitialImage = global::CodeImp.DoomBuilder.Properties.Resources.Loader; + this.pictureBox1.Location = new System.Drawing.Point(8, 7); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(16, 16); + this.pictureBox1.TabIndex = 2; + this.pictureBox1.TabStop = false; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(29, 8); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(176, 13); + this.label4.TabIndex = 0; + this.label4.Text = "Please wait, checking the archive..."; + // // ResourceOptionsForm // this.AcceptButton = this.apply; this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.CancelButton = this.cancel; - this.ClientSize = new System.Drawing.Size(386, 293); + this.ClientSize = new System.Drawing.Size(386, 337); + this.Controls.Add(this.checkingloader); this.Controls.Add(this.notfortesting); this.Controls.Add(this.cancel); this.Controls.Add(this.apply); @@ -348,6 +389,9 @@ namespace CodeImp.DoomBuilder.Windows this.directorytab.PerformLayout(); this.pk3filetab.ResumeLayout(false); this.pk3filetab.PerformLayout(); + this.checkingloader.ResumeLayout(false); + this.checkingloader.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -376,5 +420,8 @@ namespace CodeImp.DoomBuilder.Windows private System.Windows.Forms.CheckBox strictpatches; private System.Windows.Forms.Label label6; private System.Windows.Forms.CheckBox notfortesting; - } + private System.Windows.Forms.Panel checkingloader; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.PictureBox pictureBox1; + } } \ No newline at end of file diff --git a/Source/Core/Windows/ResourceOptionsForm.cs b/Source/Core/Windows/ResourceOptionsForm.cs index 033676b7b1b76ca71d47c9fdb896f693da1790ad..6b97e406c00a20d89735743ecb69c855998faca0 100755 --- a/Source/Core/Windows/ResourceOptionsForm.cs +++ b/Source/Core/Windows/ResourceOptionsForm.cs @@ -20,6 +20,13 @@ using System; using System.Windows.Forms; using System.IO; using CodeImp.DoomBuilder.Data; +using CodeImp.DoomBuilder.Config; +using System.Collections.Generic; +using System.ComponentModel; +using System.Threading.Tasks; +using CodeImp.DoomBuilder.ZDoom; +using System.Threading; +using System.Windows.Threading; #endregion @@ -31,10 +38,46 @@ namespace CodeImp.DoomBuilder.Windows private DataLocation res; private string startPath; private Controls.FolderSelectDialog dirdialog; + private List<string> requiredarchives; // Properties public DataLocation ResourceLocation { get { return res; } } - + public GameConfiguration GameConfiguration { get; set; } + + // + private bool _ischeckingrequiredarchives = false; + private bool IsCheckingRequiredArchives + { + get + { + return _ischeckingrequiredarchives; + } + set + { + if (value) + { + apply.Enabled = false; + cancel.Enabled = false; + notfortesting.Enabled = false; + dir_textures.Enabled = false; + dir_flats.Enabled = false; + ControlBox = false; + checkingloader.Visible = true; + } + else + { + apply.Enabled = true; + cancel.Enabled = true; + notfortesting.Enabled = true; + dir_textures.Enabled = true; + dir_flats.Enabled = true; + ControlBox = true; + checkingloader.Visible = false; + } + _ischeckingrequiredarchives = value; + } + } + // Constructor public ResourceOptionsForm(DataLocation settings, string caption, string startPath) //mxd. added startPath { @@ -43,7 +86,10 @@ namespace CodeImp.DoomBuilder.Windows // Set caption this.Text = caption; - + + // + this.requiredarchives = new List<string>(); + // Apply settings from ResourceLocation this.res = settings; switch(res.type) @@ -75,22 +121,209 @@ namespace CodeImp.DoomBuilder.Windows this.startPath = startPath; } - - // OK clicked - private void apply_Click(object sender, EventArgs e) - { + + protected override void OnClosing(CancelEventArgs e) + { + base.OnClosing(e); + if (IsCheckingRequiredArchives) e.Cancel = true; + } + + public static List<string> CheckRequiredArchives(GameConfiguration config, DataLocation loc, CancellationToken token) + { + if (config == null) + return new List<string>(); + + try + { + DataReader dr = null; + List<string> requiredarchives = new List<string>(); + HashSet<string> classes = null; + + switch (loc.type) + { + case DataLocation.RESOURCE_WAD: + dr = new WADReader(loc, config, true) { Silent = true }; + break; + + case DataLocation.RESOURCE_DIRECTORY: + dr = new DirectoryReader(loc, config, true) { Silent = true }; + break; + + case DataLocation.RESOURCE_PK3: + dr = new PK3Reader(loc, config, true) { Silent = true }; + break; + } + + token.ThrowIfCancellationRequested(); + + foreach (var arc in config.RequiredArchives) + { + bool found = true; + + token.ThrowIfCancellationRequested(); + + foreach (RequiredArchiveEntry e in arc.Entries) + { + token.ThrowIfCancellationRequested(); + + if (e.Class != null) + { + if (classes == null) + { + classes = new HashSet<string>(); + + // load ZScript + var zscript = new ZScriptParser { + NoWarnings = true, + OnInclude = (parser, location) => { + IEnumerable<TextResourceData> includeStreams = dr.GetZScriptData(location); + foreach (TextResourceData data in includeStreams) + { + // Parse this data + parser.Parse(data, false); + + //mxd. DECORATE lumps are interdepandable. Can't carry on... + if (parser.HasError) + break; + } + } + }; + + foreach (TextResourceData data in dr.GetZScriptData("ZSCRIPT")) + { + // Parse the data + data.Stream.Seek(0, SeekOrigin.Begin); + zscript.Parse(data, true); + + if (zscript.HasError) + break; + + foreach (string cls in zscript.LastClasses) + classes.Add(cls.ToLowerInvariant()); + } + + // load DECORATE + var decorate = new DecorateParser(zscript.AllActorsByClass) { + NoWarnings = true, + OnInclude = (parser, location) => { + IEnumerable<TextResourceData> includeStreams = dr.GetDecorateData(location); + foreach (TextResourceData data in includeStreams) + { + // Parse this data + parser.Parse(data, false); + + //mxd. DECORATE lumps are interdepandable. Can't carry on... + if (parser.HasError) + break; + } + } + }; + + foreach (TextResourceData data in dr.GetDecorateData("DECORATE")) + { + // Parse the data + data.Stream.Seek(0, SeekOrigin.Begin); + decorate.Parse(data, true); + + if (decorate.HasError) + break; + + foreach (string cls in decorate.LastClasses) + classes.Add(cls.ToLowerInvariant()); + } + } + + if (!classes.Contains(e.Class.ToLowerInvariant())) + { + found = false; + break; + } + } + + if (e.Lump != null && !dr.FileExists(e.Lump)) + { + found = false; + break; + } + } + + if (found) + { + requiredarchives.Add(arc.ID); + } + } + + dr.Dispose(); + + return requiredarchives; + } + catch (OperationCanceledException) + { + throw; + } + catch (Exception e) + { + General.WriteLogLine(e.ToString()); + return new List<string>(); + } + } + + private List<string> RunCheckRequiredArchives() + { + // thanks ms for making this a struct + CancellationTokenSource dummySource = new CancellationTokenSource(); + List<string> output = CheckRequiredArchives(GameConfiguration, ToDataLocation(), dummySource.Token); + dummySource.Dispose(); + return output; + } + + private void StartRequiredArchivesCheck() + { + IsCheckingRequiredArchives = true; + var dispatcher = Dispatcher.CurrentDispatcher; + Task.Run(RunCheckRequiredArchives).ContinueWith((t) => + { + dispatcher.Invoke(() => + { + if (!t.IsFaulted && !t.IsCanceled) + requiredarchives = t.Result; + else requiredarchives = new List<string>(); + ApplyDefaultRequiredArchivesSetting(); + IsCheckingRequiredArchives = false; + }); + }); + } + + private void ApplyDefaultRequiredArchivesSetting() + { + dir_textures.Checked = false; + dir_flats.Checked = false; + notfortesting.Checked = false; + // if any of the detected required archives implies "not for testing" — disable it by default + foreach (var arc in GameConfiguration.RequiredArchives) + { + if (requiredarchives.Contains(arc.ID) && arc.ExcludeFromTesting) + notfortesting.Checked = true; + } + } + + private DataLocation ToDataLocation() + { + DataLocation res = new DataLocation(); + res.location = ""; + res.requiredarchives = requiredarchives; + // Apply settings to ResourceLocation - switch(tabs.SelectedIndex) + switch (tabs.SelectedIndex) { // Setup WAD File case DataLocation.RESOURCE_WAD: // Check if file is specified - if((wadlocation.Text.Length == 0) || + if ((wadlocation.Text.Length == 0) || (!File.Exists(wadlocation.Text))) { - // No valid wad file specified - MessageBox.Show(this, "Please select a valid WAD File resource.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); + break; } else { @@ -100,10 +333,6 @@ namespace CodeImp.DoomBuilder.Windows res.option1 = strictpatches.Checked; res.option2 = false; res.notfortesting = notfortesting.Checked; - - // Done - this.DialogResult = DialogResult.OK; - this.Close(); } break; @@ -111,11 +340,10 @@ namespace CodeImp.DoomBuilder.Windows case DataLocation.RESOURCE_DIRECTORY: // Check if directory is specified - if((dirlocation.Text.Length == 0) || + if ((dirlocation.Text.Length == 0) || (!Directory.Exists(dirlocation.Text))) { - // No valid directory specified - MessageBox.Show(this, "Please select a valid directory resource.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); + break; } else { @@ -125,22 +353,17 @@ namespace CodeImp.DoomBuilder.Windows res.option1 = dir_textures.Checked; res.option2 = dir_flats.Checked; res.notfortesting = notfortesting.Checked; - - // Done - this.DialogResult = DialogResult.OK; - this.Close(); } break; - + // Setup PK3 File case DataLocation.RESOURCE_PK3: // Check if file is specified - if((pk3location.Text.Length == 0) || + if ((pk3location.Text.Length == 0) || (!File.Exists(pk3location.Text))) { - // No valid pk3 file specified - MessageBox.Show(this, "Please select a valid PK3 or PK7 File resource.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); + break; } else { @@ -150,13 +373,39 @@ namespace CodeImp.DoomBuilder.Windows res.option1 = false; res.option2 = false; res.notfortesting = notfortesting.Checked; - - // Done - this.DialogResult = DialogResult.OK; - this.Close(); } break; } + + return res; + } + + // OK clicked + private void apply_Click(object sender, EventArgs e) + { + res = ToDataLocation(); + if (res.location == "") + { + switch (tabs.SelectedIndex) + { + case DataLocation.RESOURCE_WAD: + MessageBox.Show(this, "Please select a valid WAD File resource.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); + break; + + case DataLocation.RESOURCE_PK3: + MessageBox.Show(this, "Please select a valid PK3 or PK7 File resource.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); + break; + + case DataLocation.RESOURCE_DIRECTORY: + MessageBox.Show(this, "Please select a valid directory resource.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); + break; + } + } + else + { + this.DialogResult = DialogResult.OK; + this.Close(); + } } // Cancel clicked @@ -175,6 +424,7 @@ namespace CodeImp.DoomBuilder.Windows { // Use this file wadlocation.Text = wadfiledialog.FileName; + StartRequiredArchivesCheck(); } } @@ -203,6 +453,7 @@ namespace CodeImp.DoomBuilder.Windows { // Use this directory dirlocation.Text = dirdialog.FileName; + StartRequiredArchivesCheck(); dirdialog = null; } } @@ -215,6 +466,7 @@ namespace CodeImp.DoomBuilder.Windows { // Use this file pk3location.Text = pk3filedialog.FileName; + StartRequiredArchivesCheck(); } } @@ -230,5 +482,5 @@ namespace CodeImp.DoomBuilder.Windows General.ShowHelp("w_resourceoptions.html"); hlpevent.Handled = true; } - } + } } \ No newline at end of file diff --git a/Source/Core/Windows/ResourceOptionsForm.resx b/Source/Core/Windows/ResourceOptionsForm.resx index f3fb7e00fcfd1217af2579ce62688e820d716bd8..4e7716803ecabe5ba7d07d36adee60014c24d8f7 100755 --- a/Source/Core/Windows/ResourceOptionsForm.resx +++ b/Source/Core/Windows/ResourceOptionsForm.resx @@ -201,7 +201,4 @@ <metadata name="pk3filedialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <value>227, 17</value> </metadata> - <metadata name="notfortesting.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> </root> \ No newline at end of file diff --git a/Source/Core/ZDoom/DecorateParser.cs b/Source/Core/ZDoom/DecorateParser.cs index 07f5dbcf7ac7f02d0f4445f1270f4bba9e08ad0d..7ce74b5ff55d0eb1476b8c0fff4c93078a1489c1 100755 --- a/Source/Core/ZDoom/DecorateParser.cs +++ b/Source/Core/ZDoom/DecorateParser.cs @@ -35,7 +35,7 @@ namespace CodeImp.DoomBuilder.ZDoom public delegate void IncludeDelegate(DecorateParser parser, string includefile); public IncludeDelegate OnInclude; - + #endregion #region ================== Constants @@ -64,11 +64,14 @@ namespace CodeImp.DoomBuilder.ZDoom //mxd. Disposing. Is that really needed?.. private bool isdisposed; - + + // + public bool NoWarnings = false; + #endregion - + #region ================== Properties - + /// <summary> /// All actors that are supported by the current game. /// </summary> @@ -129,11 +132,18 @@ namespace CodeImp.DoomBuilder.ZDoom isdisposed = true; } } - + #endregion #region ================== Parsing + protected internal override void LogWarning(string message, int linenumber) + { + if (NoWarnings) + return; + base.LogWarning(message, linenumber); + } + // This parses the given decorate stream // Returns false on errors public override bool Parse(TextResourceData data, bool clearerrors) diff --git a/Source/Core/ZDoom/ZDTextParser.cs b/Source/Core/ZDoom/ZDTextParser.cs index 1fbd23faf46b602a22cf092958bdba7b8610fbd3..cbd920eb421ce453e757bbbba8829ba9c358e865 100755 --- a/Source/Core/ZDoom/ZDTextParser.cs +++ b/Source/Core/ZDoom/ZDTextParser.cs @@ -708,7 +708,7 @@ namespace CodeImp.DoomBuilder.ZDoom //mxd. This adds a warning to the ErrorLogger protected internal void LogWarning(string message) { LogWarning(message, CompilerError.NO_LINE_NUMBER); } - protected internal void LogWarning(string message, int linenumber) + protected internal virtual void LogWarning(string message, int linenumber) { // Add a warning int errline = (linenumber != CompilerError.NO_LINE_NUMBER diff --git a/Source/Core/ZDoom/ZScriptParser.cs b/Source/Core/ZDoom/ZScriptParser.cs index b22f74c2bee888e7247c8e7eb74ad2ad46218f23..0f8d26892b08603eb32a1b54765d4f7f4a7a0d56 100755 --- a/Source/Core/ZDoom/ZScriptParser.cs +++ b/Source/Core/ZDoom/ZScriptParser.cs @@ -193,6 +193,9 @@ namespace CodeImp.DoomBuilder.ZDoom // [ZZ] custom tokenizer class internal ZScriptTokenizer tokenizer; + // + public bool NoWarnings = false; + #endregion #region ================== Properties @@ -346,6 +349,13 @@ namespace CodeImp.DoomBuilder.ZDoom return true; } + protected internal override void LogWarning(string message, int linenumber) + { + if (NoWarnings) + return; + base.LogWarning(message, linenumber); + } + // read in an expression as a token list. internal List<ZScriptToken> ParseExpression(bool betweenparen = false) {