From 582b01ee9d17d5638d46af0001aa08e44c9b90eb Mon Sep 17 00:00:00 2001 From: codeimp <codeimp@e0d998f2-2e9b-42fe-843d-47128df60a06> Date: Thu, 2 Jul 2009 14:15:47 +0000 Subject: [PATCH] - Fixed missing resources in testing parameters. - Fixed disappearing temp file in testing parameters when "Use short paths" is checked. - Added option for resource to exclude them from the testing parameters (for example, you may want to exclude zdoom.pk3) --- Source/Core/Data/DataLocation.cs | 4 +- Source/Core/Data/DataLocationList.cs | 2 + Source/Core/Data/PK3StructuredReader.cs | 2 +- Source/Core/General/Launcher.cs | 56 +++++++++++++------ Source/Core/General/MapManager.cs | 4 +- .../Windows/ResourceOptionsForm.Designer.cs | 21 ++++++- Source/Core/Windows/ResourceOptionsForm.cs | 13 ++++- Source/Core/Windows/ResourceOptionsForm.resx | 3 + 8 files changed, 79 insertions(+), 26 deletions(-) diff --git a/Source/Core/Data/DataLocation.cs b/Source/Core/Data/DataLocation.cs index 2dffbd7fb..3b876d5ec 100644 --- a/Source/Core/Data/DataLocation.cs +++ b/Source/Core/Data/DataLocation.cs @@ -38,15 +38,17 @@ namespace CodeImp.DoomBuilder.Data public string location; public bool option1; public bool option2; + public bool notfortesting; // Constructor - public DataLocation(int type, string location, bool option1, bool option2) + public DataLocation(int type, string location, bool option1, bool option2, bool notfortesting) { // Initialize this.type = type; this.location = location; this.option1 = option1; this.option2 = option2; + this.notfortesting = notfortesting; } // This displays the struct as string diff --git a/Source/Core/Data/DataLocationList.cs b/Source/Core/Data/DataLocationList.cs index 1e9691d20..4093adf3c 100644 --- a/Source/Core/Data/DataLocationList.cs +++ b/Source/Core/Data/DataLocationList.cs @@ -59,6 +59,7 @@ namespace CodeImp.DoomBuilder.Data if(rlinfo.Contains("location") && (rlinfo["location"] is string)) res.location = (string)rlinfo["location"]; if(rlinfo.Contains("option1") && (rlinfo["option1"] is int)) res.option1 = General.Int2Bool((int)rlinfo["option1"]); 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"]); // Add resource Add(res); @@ -94,6 +95,7 @@ namespace CodeImp.DoomBuilder.Data rlinfo.Add("location", this[i].location); rlinfo.Add("option1", General.Bool2Int(this[i].option1)); rlinfo.Add("option2", General.Bool2Int(this[i].option2)); + rlinfo.Add("notfortesting", General.Bool2Int(this[i].notfortesting)); // Add structure resinfo.Add("resource" + i.ToString(CultureInfo.InvariantCulture), rlinfo); diff --git a/Source/Core/Data/PK3StructuredReader.cs b/Source/Core/Data/PK3StructuredReader.cs index e99a36d60..52c955ca0 100644 --- a/Source/Core/Data/PK3StructuredReader.cs +++ b/Source/Core/Data/PK3StructuredReader.cs @@ -77,7 +77,7 @@ namespace CodeImp.DoomBuilder.Data foreach(string w in wadfiles) { string tempfile = CreateTempFile(w); - DataLocation wdl = new DataLocation(DataLocation.RESOURCE_WAD, tempfile, false, false); + DataLocation wdl = new DataLocation(DataLocation.RESOURCE_WAD, tempfile, false, false, true); wads.Add(new WADReader(wdl)); } } diff --git a/Source/Core/General/Launcher.cs b/Source/Core/General/Launcher.cs index d586ba07e..c4fa587a7 100644 --- a/Source/Core/General/Launcher.cs +++ b/Source/Core/General/Launcher.cs @@ -60,7 +60,7 @@ namespace CodeImp.DoomBuilder public Launcher(MapManager manager) { // Initialize - this.tempwad = General.MakeTempFilename(manager.TempPath, "wad"); + CleanTempFile(manager); // Bind actions General.Actions.BindMethods(this); @@ -75,6 +75,10 @@ namespace CodeImp.DoomBuilder // Unbind actions General.Actions.UnbindMethods(this); + // Remove temporary file + try { File.Delete(tempwad); } + catch(Exception) { } + // Done isdisposed = true; } @@ -114,8 +118,9 @@ namespace CodeImp.DoomBuilder } // Make a list of all data locations, including map location - DataLocation maplocation = new DataLocation(DataLocation.RESOURCE_WAD, General.Map.FilePathName, false, false); + DataLocation maplocation = new DataLocation(DataLocation.RESOURCE_WAD, General.Map.FilePathName, false, false, false); DataLocationList locations = new DataLocationList(); + locations.AddRange(General.Map.ConfigSettings.Resources); locations.AddRange(General.Map.Options.Resources); locations.Add(maplocation); @@ -123,18 +128,22 @@ namespace CodeImp.DoomBuilder foreach(DataLocation dl in locations) { // Location not the IWAD file? - if((dl.type == DataLocation.RESOURCE_WAD) && (dl.location != iwadloc.location)) + if((dl.type != DataLocation.RESOURCE_WAD) || (dl.location != iwadloc.location)) { - // Add to string of files - if(shortpaths) - { - p_ap += General.GetShortFilePath(dl.location) + " "; - p_apq += "\"" + General.GetShortFilePath(dl.location) + "\" "; - } - else + // Location not included? + if(!dl.notfortesting) { - p_ap += dl.location + " "; - p_apq += "\"" + dl.location + "\" "; + // Add to string of files + if(shortpaths) + { + p_ap += General.GetShortFilePath(dl.location) + " "; + p_apq += "\"" + General.GetShortFilePath(dl.location) + "\" "; + } + else + { + p_ap += dl.location + " "; + p_apq += "\"" + dl.location + "\" "; + } } } } @@ -256,7 +265,11 @@ namespace CodeImp.DoomBuilder General.Map.ConfigSettings.TestParameters = General.Map.Config.TestParameters; General.Map.ConfigSettings.TestShortPaths = General.Map.Config.TestShortPaths; } - + + // Remove temporary file + try { File.Delete(tempwad); } + catch(Exception) { } + // Save map to temporary file Cursor.Current = Cursors.WaitCursor; tempwad = General.MakeTempFilename(General.Map.TempPath, "wad"); @@ -315,14 +328,25 @@ namespace CodeImp.DoomBuilder } } - // Remove temporary file - try { File.Delete(tempwad); } - catch(Exception) { } + // Clean up temp file + CleanTempFile(General.Map); // Done General.MainWindow.FocusDisplay(); Cursor.Current = oldcursor; } + + // This deletes the previous temp file and creates a new, empty temp file + private void CleanTempFile(MapManager manager) + { + // Remove temporary file + try { File.Delete(tempwad); } + catch(Exception) { } + + // Make new empty temp file + tempwad = General.MakeTempFilename(manager.TempPath, "wad"); + File.WriteAllText(tempwad, ""); + } #endregion } diff --git a/Source/Core/General/MapManager.cs b/Source/Core/General/MapManager.cs index f30fdfc17..70f195f84 100644 --- a/Source/Core/General/MapManager.cs +++ b/Source/Core/General/MapManager.cs @@ -364,7 +364,7 @@ namespace CodeImp.DoomBuilder // Load data manager General.WriteLogLine("Loading data resources..."); data = new DataManager(); - maplocation = new DataLocation(DataLocation.RESOURCE_WAD, filepathname, options.StrictPatches, false); + maplocation = new DataLocation(DataLocation.RESOURCE_WAD, filepathname, options.StrictPatches, false, false); data.Load(configinfo.Resources, options.Resources, maplocation); // Remove unused sectors @@ -1468,7 +1468,7 @@ namespace CodeImp.DoomBuilder data = new DataManager(); if(!string.IsNullOrEmpty(filepathname)) { - maplocation = new DataLocation(DataLocation.RESOURCE_WAD, filepathname, false, false); + maplocation = new DataLocation(DataLocation.RESOURCE_WAD, filepathname, false, false, false); data.Load(configinfo.Resources, options.Resources, maplocation); } else diff --git a/Source/Core/Windows/ResourceOptionsForm.Designer.cs b/Source/Core/Windows/ResourceOptionsForm.Designer.cs index f3bae815c..5b6b01a7a 100644 --- a/Source/Core/Windows/ResourceOptionsForm.Designer.cs +++ b/Source/Core/Windows/ResourceOptionsForm.Designer.cs @@ -55,6 +55,7 @@ namespace CodeImp.DoomBuilder.Windows this.wadfiledialog = new System.Windows.Forms.OpenFileDialog(); this.dirdialog = new System.Windows.Forms.FolderBrowserDialog(); this.pk3filedialog = new System.Windows.Forms.OpenFileDialog(); + this.notfortesting = new System.Windows.Forms.CheckBox(); label1 = new System.Windows.Forms.Label(); label2 = new System.Windows.Forms.Label(); label3 = new System.Windows.Forms.Label(); @@ -312,7 +313,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(266, 273); + this.cancel.Location = new System.Drawing.Point(266, 306); this.cancel.Name = "cancel"; this.cancel.Size = new System.Drawing.Size(112, 25); this.cancel.TabIndex = 2; @@ -323,7 +324,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(148, 273); + this.apply.Location = new System.Drawing.Point(148, 306); this.apply.Name = "apply"; this.apply.Size = new System.Drawing.Size(112, 25); this.apply.TabIndex = 1; @@ -345,13 +346,25 @@ namespace CodeImp.DoomBuilder.Windows this.pk3filedialog.Filter = "Doom PK3 Files (*.pk3)|*.pk3"; this.pk3filedialog.Title = "Browse PK3 File"; // + // notfortesting + // + 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, 262); + this.notfortesting.Name = "notfortesting"; + this.notfortesting.Size = new System.Drawing.Size(249, 18); + this.notfortesting.TabIndex = 3; + this.notfortesting.Text = "Exclude this resource from testing parameters"; + this.notfortesting.UseVisualStyleBackColor = true; + // // 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, 307); + this.ClientSize = new System.Drawing.Size(386, 340); + this.Controls.Add(this.notfortesting); this.Controls.Add(this.cancel); this.Controls.Add(this.apply); this.Controls.Add(this.tabs); @@ -374,6 +387,7 @@ namespace CodeImp.DoomBuilder.Windows this.pk3filetab.ResumeLayout(false); this.pk3filetab.PerformLayout(); this.ResumeLayout(false); + this.PerformLayout(); } @@ -402,5 +416,6 @@ namespace CodeImp.DoomBuilder.Windows private System.Windows.Forms.Label label5; private System.Windows.Forms.CheckBox strictpatches; private System.Windows.Forms.Label label6; + private System.Windows.Forms.CheckBox notfortesting; } } \ No newline at end of file diff --git a/Source/Core/Windows/ResourceOptionsForm.cs b/Source/Core/Windows/ResourceOptionsForm.cs index f933edfc4..fddf4ab1e 100644 --- a/Source/Core/Windows/ResourceOptionsForm.cs +++ b/Source/Core/Windows/ResourceOptionsForm.cs @@ -26,6 +26,7 @@ using CodeImp.DoomBuilder.Map; using System.IO; using CodeImp.DoomBuilder.Data; using CodeImp.DoomBuilder.Controls; +using CodeImp.DoomBuilder.IO; #endregion @@ -70,11 +71,14 @@ namespace CodeImp.DoomBuilder.Windows pk3location.Text = res.location; break; } - + // Select appropriate tab tabs.SelectedIndex = res.type; + + // Checkbox + notfortesting.Checked = res.notfortesting; } - + // OK clicked private void apply_Click(object sender, EventArgs e) { @@ -98,6 +102,7 @@ namespace CodeImp.DoomBuilder.Windows res.location = wadlocation.Text; res.option1 = strictpatches.Checked; res.option2 = false; + res.notfortesting = notfortesting.Checked; // Done this.DialogResult = DialogResult.OK; @@ -122,6 +127,7 @@ namespace CodeImp.DoomBuilder.Windows res.location = dirlocation.Text; res.option1 = dir_textures.Checked; res.option2 = dir_flats.Checked; + res.notfortesting = notfortesting.Checked; // Done this.DialogResult = DialogResult.OK; @@ -146,6 +152,7 @@ namespace CodeImp.DoomBuilder.Windows res.location = pk3location.Text; res.option1 = false; res.option2 = false; + res.notfortesting = notfortesting.Checked; // Done this.DialogResult = DialogResult.OK; @@ -154,7 +161,7 @@ namespace CodeImp.DoomBuilder.Windows break; } } - + // Cancel clicked private void cancel_Click(object sender, EventArgs e) { diff --git a/Source/Core/Windows/ResourceOptionsForm.resx b/Source/Core/Windows/ResourceOptionsForm.resx index d490cf154..d40947981 100644 --- a/Source/Core/Windows/ResourceOptionsForm.resx +++ b/Source/Core/Windows/ResourceOptionsForm.resx @@ -207,6 +207,9 @@ <metadata name="pk3filedialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <value>227, 17</value> </metadata> + <metadata name="notfortesting.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>True</value> + </metadata> <metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </metadata> -- GitLab