diff --git a/Source/Interface/MapOptionsForm.Designer.cs b/Source/Interface/MapOptionsForm.Designer.cs
index 3a2fc1b6..6b8821e8 100644
--- a/Source/Interface/MapOptionsForm.Designer.cs
+++ b/Source/Interface/MapOptionsForm.Designer.cs
@@ -105,7 +105,18 @@ namespace CodeImp.DoomBuilder.Interface
this.config.Location = new System.Drawing.Point(129, 31);
this.config.Name = "config";
this.config.Size = new System.Drawing.Size(213, 22);
+ this.config.Sorted = true;
this.config.TabIndex = 6;
+ this.config.SelectedIndexChanged += new System.EventHandler(this.config_SelectedIndexChanged);
+ //
+ // label4
+ //
+ label4.Location = new System.Drawing.Point(15, 161);
+ label4.Name = "label4";
+ label4.Size = new System.Drawing.Size(336, 34);
+ label4.TabIndex = 17;
+ label4.Text = "Drag items to change order (lower items override higher items). Grayed items are " +
+ "loaded according to the game configuration.";
//
// apply
//
@@ -145,20 +156,12 @@ namespace CodeImp.DoomBuilder.Interface
//
// resourcelocations
//
+ this.resourcelocations.DialogOffset = new System.Drawing.Point(40, 20);
this.resourcelocations.Location = new System.Drawing.Point(15, 28);
this.resourcelocations.Name = "resourcelocations";
this.resourcelocations.Size = new System.Drawing.Size(336, 130);
this.resourcelocations.TabIndex = 18;
//
- // label4
- //
- label4.Location = new System.Drawing.Point(15, 161);
- label4.Name = "label4";
- label4.Size = new System.Drawing.Size(336, 34);
- label4.TabIndex = 17;
- label4.Text = "Drag items to change order (lower items override higher items). Grayed items are " +
- "loaded according to the game configuration.";
- //
// MapOptionsForm
//
this.AcceptButton = this.apply;
diff --git a/Source/Interface/MapOptionsForm.cs b/Source/Interface/MapOptionsForm.cs
index daeae8fd..3cfa29bc 100644
--- a/Source/Interface/MapOptionsForm.cs
+++ b/Source/Interface/MapOptionsForm.cs
@@ -40,6 +40,8 @@ namespace CodeImp.DoomBuilder.Interface
// Constructor
public MapOptionsForm(MapOptions options)
{
+ int index;
+
// Initialize
InitializeComponent();
@@ -50,13 +52,13 @@ namespace CodeImp.DoomBuilder.Interface
for(int i = 0; i < General.Configs.Count; i++)
{
// Add config name to list
- config.Items.Add(General.Configs[i].Name);
+ index = config.Items.Add(General.Configs[i]);
// Is this configuration currently selected?
if(string.Compare(General.Configs[i].Filename, options.ConfigFile, true) == 0)
{
// Select this item
- config.SelectedIndex = config.Items.Count - 1;
+ config.SelectedIndex = index;
}
}
@@ -106,5 +108,21 @@ namespace CodeImp.DoomBuilder.Interface
this.DialogResult = DialogResult.Cancel;
this.Hide();
}
+
+ // Game configuration chosen
+ private void config_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ ConfigurationInfo ci;
+
+ // Anything selected?
+ if(config.SelectedIndex > -1)
+ {
+ // Get the info
+ ci = (ConfigurationInfo)config.SelectedItem;
+
+ // Show resources
+ resourcelocations.FixedResourceLocationList(ci.Resources);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Source/Interface/MapOptionsForm.resx b/Source/Interface/MapOptionsForm.resx
index 17bdcd9f..c49b3d93 100644
--- a/Source/Interface/MapOptionsForm.resx
+++ b/Source/Interface/MapOptionsForm.resx
@@ -117,19 +117,55 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ True
+
False
+
+ True
+
False
+
+ True
+
False
False
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
False
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
\ No newline at end of file
diff --git a/Source/Interface/OpenMapOptionsForm.Designer.cs b/Source/Interface/OpenMapOptionsForm.Designer.cs
index 31dbb44b..d2b2d9bc 100644
--- a/Source/Interface/OpenMapOptionsForm.Designer.cs
+++ b/Source/Interface/OpenMapOptionsForm.Designer.cs
@@ -91,6 +91,7 @@ namespace CodeImp.DoomBuilder.Interface
//
// resourcelocations
//
+ this.resourcelocations.DialogOffset = new System.Drawing.Point(40, 20);
this.resourcelocations.Location = new System.Drawing.Point(14, 26);
this.resourcelocations.Name = "resourcelocations";
this.resourcelocations.Size = new System.Drawing.Size(336, 127);
@@ -126,6 +127,7 @@ namespace CodeImp.DoomBuilder.Interface
this.config.Location = new System.Drawing.Point(141, 21);
this.config.Name = "config";
this.config.Size = new System.Drawing.Size(213, 22);
+ this.config.Sorted = true;
this.config.TabIndex = 15;
this.config.SelectedIndexChanged += new System.EventHandler(this.config_SelectedIndexChanged);
//
diff --git a/Source/Interface/OpenMapOptionsForm.cs b/Source/Interface/OpenMapOptionsForm.cs
index f7d99374..fce72545 100644
--- a/Source/Interface/OpenMapOptionsForm.cs
+++ b/Source/Interface/OpenMapOptionsForm.cs
@@ -59,6 +59,7 @@ namespace CodeImp.DoomBuilder.Interface
{
string dbsfile;
string gameconfig;
+ int index;
// Busy
Cursor.Current = Cursors.WaitCursor;
@@ -91,13 +92,13 @@ namespace CodeImp.DoomBuilder.Interface
for(int i = 0; i < General.Configs.Count; i++)
{
// Add config name to list
- config.Items.Add(General.Configs[i].Name);
+ index = config.Items.Add(General.Configs[i]);
// This is the preferred game configuration?
if(General.Configs[i].Filename == gameconfig)
{
// Select this item
- config.SelectedIndex = i;
+ config.SelectedIndex = index;
}
}
@@ -178,75 +179,86 @@ namespace CodeImp.DoomBuilder.Interface
private void config_SelectedIndexChanged(object sender, EventArgs e)
{
List mapnames;
+ ConfigurationInfo ci;
Configuration cfg;
IDictionary maplumpnames;
int scanindex, checkoffset;
int lumpsfound, lumpsrequired = 0;
string lumpname, selectedname = "";
- // Keep selected name, if any
- if(mapslist.SelectedItems.Count > 0)
- selectedname = mapslist.SelectedItems[0].Text;
+ // Anything selected?
+ if(config.SelectedIndex > -1)
+ {
+ // Keep selected name, if any
+ if(mapslist.SelectedItems.Count > 0)
+ selectedname = mapslist.SelectedItems[0].Text;
- // Make an array for the map names
- mapnames = new List();
-
- // Load this configuration
- cfg = General.LoadGameConfiguration(General.Configs[config.SelectedIndex].Filename);
-
- // Get the map lump names
- maplumpnames = cfg.ReadSetting("maplumpnames", new Hashtable());
-
- // Count how many required lumps we have to find
- foreach(DictionaryEntry ml in maplumpnames)
- {
- // Read lump setting and count it
- if(cfg.ReadSetting("maplumpnames." + ml.Key + ".required", false)) lumpsrequired++;
- }
-
- // Go for all the lumps in the wad
- for(scanindex = 0; scanindex < (wadfile.Lumps.Count - 1); scanindex++)
- {
- // Make sure this lump is not part of the map
- if(!maplumpnames.Contains(wadfile.Lumps[scanindex].Name))
+ // Make an array for the map names
+ mapnames = new List();
+
+ // Get selected configuration info
+ ci = (ConfigurationInfo)config.SelectedItem;
+
+ // Load this configuration
+ cfg = General.LoadGameConfiguration(ci.Filename);
+
+ // Get the map lump names
+ maplumpnames = cfg.ReadSetting("maplumpnames", new Hashtable());
+
+ // Count how many required lumps we have to find
+ foreach(DictionaryEntry ml in maplumpnames)
{
- // Reset check
- lumpsfound = 0;
- checkoffset = 1;
+ // Read lump setting and count it
+ if(cfg.ReadSetting("maplumpnames." + ml.Key + ".required", false)) lumpsrequired++;
+ }
- // Continue while still within bounds and lumps are still recognized
- while(((scanindex + checkoffset) < wadfile.Lumps.Count) &&
- maplumpnames.Contains(wadfile.Lumps[scanindex + checkoffset].Name))
+ // Go for all the lumps in the wad
+ for(scanindex = 0; scanindex < (wadfile.Lumps.Count - 1); scanindex++)
+ {
+ // Make sure this lump is not part of the map
+ if(!maplumpnames.Contains(wadfile.Lumps[scanindex].Name))
{
- // Count the lump when it is marked as required
- lumpname = wadfile.Lumps[scanindex + checkoffset].Name;
- if(cfg.ReadSetting("maplumpnames." + lumpname + ".required", false)) lumpsfound++;
+ // Reset check
+ lumpsfound = 0;
+ checkoffset = 1;
- // Check the next lump
- checkoffset++;
+ // Continue while still within bounds and lumps are still recognized
+ while(((scanindex + checkoffset) < wadfile.Lumps.Count) &&
+ maplumpnames.Contains(wadfile.Lumps[scanindex + checkoffset].Name))
+ {
+ // Count the lump when it is marked as required
+ lumpname = wadfile.Lumps[scanindex + checkoffset].Name;
+ if(cfg.ReadSetting("maplumpnames." + lumpname + ".required", false)) lumpsfound++;
+
+ // Check the next lump
+ checkoffset++;
+ }
+
+ // Map found? Then add it to the list
+ if(lumpsfound >= lumpsrequired)
+ mapnames.Add(new ListViewItem(wadfile.Lumps[scanindex].Name));
}
-
- // Map found? Then add it to the list
- if(lumpsfound >= lumpsrequired)
- mapnames.Add(new ListViewItem(wadfile.Lumps[scanindex].Name));
}
- }
-
- // Clear the list and add the new map names
- mapslist.Items.Clear();
- mapslist.Items.AddRange(mapnames.ToArray());
- mapslist.Sort();
- // Go for all items in the list
- foreach(ListViewItem item in mapslist.Items)
- {
- // Was this item previously selected?
- if(item.Text == selectedname)
+ // Clear the list and add the new map names
+ mapslist.Items.Clear();
+ mapslist.Items.AddRange(mapnames.ToArray());
+ mapslist.Sort();
+
+ // Go for all items in the list
+ foreach(ListViewItem item in mapslist.Items)
{
- // Select it again
- item.Selected = true;
- break;
+ // Was this item previously selected?
+ if(item.Text == selectedname)
+ {
+ // Select it again
+ item.Selected = true;
+ break;
+ }
}
+
+ // Show configuration resources
+ resourcelocations.FixedResourceLocationList(ci.Resources);
}
}
diff --git a/Source/Interface/ResourceListEditor.cs b/Source/Interface/ResourceListEditor.cs
index b2a7d371..a3bf4f7c 100644
--- a/Source/Interface/ResourceListEditor.cs
+++ b/Source/Interface/ResourceListEditor.cs
@@ -63,7 +63,7 @@ namespace CodeImp.DoomBuilder.Interface
}
// Go for all items
- for(int i = list.Count; i >= 0; i--)
+ for(int i = list.Count - 1; i >= 0; i--)
{
// Add item as fixed
resourceitems.Items.Insert(0, new ListViewItem(list[i].location));