mirror of
https://git.do.srb2.org/STJr/UltimateZoneBuilder.git
synced 2024-11-27 14:12:16 +00:00
013865e27d
Reverted "Delete Item" action to the way it worked in DB2. Added "Dissolve Item" action, which works the way "Delete Item" worked in previous revisions of GZDB. Added "Auto Clear Sidedef Textures" action, "Edit" menu and toolbar button, which toggle automatic removal of sidedef textures when floor or ceiling height is changed or when geometry is drawn, copied or pasted. Draw Settings panel: upper/lower texture overrides can now be used. Draw Settings panel: added 2 sets of buttons, which allow to quickly set or clear textures in current selection. Things are now rendered behind AND on top of the grid/linedefs/vertices when they are dragged. Redesigned hints system. They are now shown in a side panel. Edit area auto-focusing is now disabled when script editor is open. Texture Browser form: no texture group was selected when opening the form in some cases. Fixed several strange/misleading text messages.
688 lines
20 KiB
C#
688 lines
20 KiB
C#
|
|
#region ================== Copyright (c) 2007 Pascal vd Heiden
|
|
|
|
/*
|
|
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
|
|
* This program is released under GNU General Public License
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
*/
|
|
|
|
#endregion
|
|
|
|
#region ================== Namespaces
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Windows.Forms;
|
|
using CodeImp.DoomBuilder.Data;
|
|
using CodeImp.DoomBuilder.Config;
|
|
using System.IO;
|
|
using CodeImp.DoomBuilder.Editing;
|
|
using CodeImp.DoomBuilder.GZBuilder.Data;
|
|
|
|
#endregion
|
|
|
|
namespace CodeImp.DoomBuilder.Windows
|
|
{
|
|
internal partial class ConfigForm : DelayedForm
|
|
{
|
|
// Variables
|
|
private GameConfiguration gameconfig;
|
|
private ConfigurationInfo configinfo;
|
|
private List<DefinedTextureSet> copiedsets;
|
|
private bool preventchanges = false;
|
|
private bool reloadresources = false;
|
|
|
|
// Properties
|
|
public bool ReloadResources { get { return reloadresources; } }
|
|
|
|
// Constructor
|
|
public ConfigForm()
|
|
{
|
|
ListViewItem lvi;
|
|
|
|
// Initialize
|
|
InitializeComponent();
|
|
|
|
// Make list column header full width
|
|
columnname.Width = listconfigs.ClientRectangle.Width - SystemInformation.VerticalScrollBarWidth - 2;
|
|
|
|
// Fill list of configurations
|
|
foreach(ConfigurationInfo ci in General.Configs)
|
|
{
|
|
// Add a copy
|
|
lvi = listconfigs.Items.Add(ci.Name);
|
|
lvi.Tag = ci.Clone();
|
|
|
|
// This is the current configuration?
|
|
if((General.Map != null) && (General.Map.ConfigSettings.Filename == ci.Filename))
|
|
lvi.Selected = true;
|
|
}
|
|
|
|
// No skill
|
|
skill.Value = 0;
|
|
|
|
// Nodebuilders are allowed to be empty
|
|
nodebuildersave.Items.Add(new NodebuilderInfo());
|
|
nodebuildertest.Items.Add(new NodebuilderInfo());
|
|
|
|
// Fill comboboxes with nodebuilders
|
|
nodebuildersave.Items.AddRange(General.Nodebuilders.ToArray());
|
|
nodebuildertest.Items.AddRange(General.Nodebuilders.ToArray());
|
|
|
|
// Fill list of editing modes
|
|
foreach(EditModeInfo emi in General.Editing.ModesInfo)
|
|
{
|
|
// Is this mode selectable by the user?
|
|
if(emi.IsOptional)
|
|
{
|
|
lvi = listmodes.Items.Add(emi.Attributes.DisplayName);
|
|
lvi.Tag = emi;
|
|
lvi.SubItems.Add(emi.Plugin.Plug.Name);
|
|
}
|
|
}
|
|
}
|
|
|
|
// This shows a specific page
|
|
public void ShowTab(int index)
|
|
{
|
|
tabs.SelectedIndex = index;
|
|
}
|
|
|
|
// Configuration item selected
|
|
private void listconfigs_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
NodebuilderInfo ni;
|
|
|
|
// Item selected?
|
|
if(listconfigs.SelectedItems.Count > 0)
|
|
{
|
|
// Enable panels
|
|
tabs.Enabled = true;
|
|
|
|
preventchanges = true;
|
|
|
|
//mxd. Store current engine name
|
|
if(configinfo != null && !String.IsNullOrEmpty(cbEngineSelector.Text))
|
|
configinfo.TestProgramName = cbEngineSelector.Text;
|
|
|
|
// Get config info of selected item
|
|
configinfo = listconfigs.SelectedItems[0].Tag as ConfigurationInfo;
|
|
|
|
// Load the game configuration
|
|
gameconfig = new GameConfiguration(General.LoadGameConfiguration(configinfo.Filename));
|
|
|
|
// Set defaults
|
|
configinfo.ApplyDefaults(gameconfig);
|
|
|
|
// Fill resources list
|
|
configdata.EditResourceLocationList(configinfo.Resources);
|
|
|
|
// Go for all nodebuilder save items
|
|
nodebuildersave.SelectedIndex = -1;
|
|
for(int i = 0; i < nodebuildersave.Items.Count; i++)
|
|
{
|
|
// Get item
|
|
ni = nodebuildersave.Items[i] as NodebuilderInfo;
|
|
|
|
// Item matches configuration setting?
|
|
if(string.Compare(ni.Name, configinfo.NodebuilderSave, false) == 0)
|
|
{
|
|
// Select this item
|
|
nodebuildersave.SelectedIndex = i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Go for all nodebuilder test items
|
|
nodebuildertest.SelectedIndex = -1;
|
|
for(int i = 0; i < nodebuildertest.Items.Count; i++)
|
|
{
|
|
// Get item
|
|
ni = nodebuildertest.Items[i] as NodebuilderInfo;
|
|
|
|
// Item matches configuration setting?
|
|
if(string.Compare(ni.Name, configinfo.NodebuilderTest, false) == 0)
|
|
{
|
|
// Select this item
|
|
nodebuildertest.SelectedIndex = i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Fill skills list
|
|
skill.ClearInfo();
|
|
skill.AddInfo(gameconfig.Skills.ToArray());
|
|
|
|
//mxd. Fill engines list
|
|
cbEngineSelector.Items.Clear();
|
|
foreach(EngineInfo info in configinfo.TestEngines)
|
|
cbEngineSelector.Items.Add(info.TestProgramName);
|
|
|
|
cbEngineSelector.SelectedIndex = configinfo.CurrentEngineIndex;
|
|
btnRemoveEngine.Enabled = configinfo.TestEngines.Count > 1;
|
|
|
|
// Fill texture sets list
|
|
listtextures.Items.Clear();
|
|
foreach(DefinedTextureSet ts in configinfo.TextureSets)
|
|
{
|
|
ListViewItem item = listtextures.Items.Add(ts.Name);
|
|
item.Tag = ts;
|
|
item.ImageIndex = 0;
|
|
}
|
|
listtextures.Sort();
|
|
|
|
// Go for all the editing modes in the list
|
|
foreach(ListViewItem lvi in listmodes.Items)
|
|
{
|
|
EditModeInfo emi = (lvi.Tag as EditModeInfo);
|
|
lvi.Checked = (configinfo.EditModes.ContainsKey(emi.Type.FullName) && configinfo.EditModes[emi.Type.FullName]);
|
|
}
|
|
|
|
// Fill start modes
|
|
RefillStartModes();
|
|
|
|
//mxd. Initialise custom linedef colors panel
|
|
colorsControl.Setup(gameconfig, configinfo);
|
|
|
|
// Done
|
|
preventchanges = false;
|
|
}
|
|
}
|
|
|
|
// Key released
|
|
private void listconfigs_KeyUp(object sender, KeyEventArgs e)
|
|
{
|
|
// Nothing selected?
|
|
if(listconfigs.SelectedItems.Count == 0)
|
|
{
|
|
// Disable panels
|
|
gameconfig = null;
|
|
configinfo = null;
|
|
configdata.FixedResourceLocationList(new DataLocationList());
|
|
configdata.EditResourceLocationList(new DataLocationList());
|
|
nodebuildersave.SelectedIndex = -1;
|
|
nodebuildertest.SelectedIndex = -1;
|
|
testapplication.Text = "";
|
|
testparameters.Text = "";
|
|
shortpaths.Checked = false;
|
|
skill.Value = 0;
|
|
skill.ClearInfo();
|
|
customparameters.Checked = false;
|
|
tabs.Enabled = false;
|
|
listtextures.Items.Clear();
|
|
}
|
|
}
|
|
|
|
// Mouse released
|
|
private void listconfigs_MouseUp(object sender, MouseEventArgs e)
|
|
{
|
|
listconfigs_KeyUp(sender, new KeyEventArgs(Keys.None));
|
|
}
|
|
|
|
// Resource locations changed
|
|
private void resourcelocations_OnContentChanged()
|
|
{
|
|
// Leave when no configuration selected
|
|
if(configinfo == null) return;
|
|
|
|
// Apply to selected configuration
|
|
configinfo.Resources.Clear();
|
|
configinfo.Resources.AddRange(configdata.GetResources());
|
|
if(!preventchanges) reloadresources = true;
|
|
}
|
|
|
|
// Nodebuilder selection changed
|
|
private void nodebuildersave_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
// Leave when no configuration selected
|
|
if(configinfo == null) return;
|
|
|
|
// Apply to selected configuration
|
|
if(nodebuildersave.SelectedItem != null)
|
|
configinfo.NodebuilderSave = (nodebuildersave.SelectedItem as NodebuilderInfo).Name;
|
|
}
|
|
|
|
// Nodebuilder selection changed
|
|
private void nodebuildertest_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
// Leave when no configuration selected
|
|
if(configinfo == null) return;
|
|
|
|
// Apply to selected configuration
|
|
if(nodebuildertest.SelectedItem != null)
|
|
configinfo.NodebuilderTest = (nodebuildertest.SelectedItem as NodebuilderInfo).Name;
|
|
}
|
|
|
|
// Test application changed
|
|
private void testapplication_TextChanged(object sender, EventArgs e)
|
|
{
|
|
// Leave when no configuration selected
|
|
if(configinfo == null) return;
|
|
|
|
// Apply to selected configuration
|
|
configinfo.TestProgram = testapplication.Text;
|
|
|
|
//mxd. Update engine name if needed
|
|
configinfo.TestEngines[configinfo.CurrentEngineIndex].CheckProgramName(false);
|
|
cbEngineSelector.Text = configinfo.TestProgramName;
|
|
}
|
|
|
|
// Test parameters changed
|
|
private void testparameters_TextChanged(object sender, EventArgs e)
|
|
{
|
|
// Leave when no configuration selected
|
|
if(configinfo == null) return;
|
|
|
|
// Apply to selected configuration
|
|
configinfo = listconfigs.SelectedItems[0].Tag as ConfigurationInfo;
|
|
configinfo.TestParameters = testparameters.Text;
|
|
|
|
// Show example result
|
|
CreateParametersExample();
|
|
}
|
|
|
|
// This creates a new parameters example
|
|
private void CreateParametersExample()
|
|
{
|
|
// Map loaded?
|
|
if(General.Map != null)
|
|
{
|
|
// Make converted parameters
|
|
testresult.Text = General.Map.Launcher.ConvertParameters(testparameters.Text, skill.Value, shortpaths.Checked);
|
|
}
|
|
}
|
|
|
|
// OK clicked
|
|
private void apply_Click(object sender, EventArgs e)
|
|
{
|
|
ConfigurationInfo ci;
|
|
|
|
// Apply configuration items
|
|
foreach(ListViewItem lvi in listconfigs.Items)
|
|
{
|
|
// Get configuration item
|
|
ci = lvi.Tag as ConfigurationInfo;
|
|
|
|
// Find same configuration info in originals
|
|
foreach(ConfigurationInfo oci in General.Configs)
|
|
{
|
|
// Apply settings when they match
|
|
if(string.Compare(ci.Filename, oci.Filename) == 0) oci.Apply(ci);
|
|
}
|
|
}
|
|
|
|
//mxd. Update linedef color presets
|
|
if(General.Map != null && General.Map.Map != null)
|
|
General.Map.Map.UpdateCustomLinedefColors();
|
|
|
|
// Close
|
|
this.DialogResult = DialogResult.OK;
|
|
this.Close();
|
|
}
|
|
|
|
// Cancel clicked
|
|
private void cancel_Click(object sender, EventArgs e)
|
|
{
|
|
// Close
|
|
this.DialogResult = DialogResult.Cancel;
|
|
this.Close();
|
|
}
|
|
|
|
// Browse test program
|
|
private void browsetestprogram_Click(object sender, EventArgs e)
|
|
{
|
|
// Set initial directory
|
|
if(testapplication.Text.Length > 0)
|
|
{
|
|
try { testprogramdialog.InitialDirectory = Path.GetDirectoryName(testapplication.Text); }
|
|
catch(Exception) { }
|
|
}
|
|
|
|
// Browse for test program
|
|
if(testprogramdialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
// Apply
|
|
testapplication.Text = testprogramdialog.FileName;
|
|
|
|
//mxd. Update engine name
|
|
configinfo.TestEngines[configinfo.CurrentEngineIndex].CheckProgramName(true);
|
|
cbEngineSelector.Text = configinfo.TestProgramName;
|
|
}
|
|
}
|
|
|
|
// Customize parameters (un)checked
|
|
private void customparameters_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
// Leave when no configuration selected
|
|
if(configinfo == null) return;
|
|
|
|
// Apply to selected configuration
|
|
configinfo.CustomParameters = customparameters.Checked;
|
|
|
|
// Update interface
|
|
labelparameters.Visible = customparameters.Checked;
|
|
testparameters.Visible = customparameters.Checked;
|
|
shortpaths.Visible = customparameters.Checked;
|
|
|
|
// Check if a map is loaded
|
|
if(General.Map != null)
|
|
{
|
|
// Show parameters example result
|
|
labelresult.Visible = customparameters.Checked;
|
|
testresult.Visible = customparameters.Checked;
|
|
noresultlabel.Visible = false;
|
|
}
|
|
else
|
|
{
|
|
// Cannot show parameters example result
|
|
labelresult.Visible = false;
|
|
testresult.Visible = false;
|
|
noresultlabel.Visible = customparameters.Checked;
|
|
}
|
|
}
|
|
|
|
// Use short paths changed
|
|
private void shortpaths_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
// Leave when no configuration selected
|
|
if(configinfo == null) return;
|
|
|
|
// Apply to selected configuration
|
|
configinfo.TestShortPaths = shortpaths.Checked;
|
|
|
|
CreateParametersExample();
|
|
}
|
|
|
|
// Skill changes
|
|
private void skill_ValueChanges(object sender, EventArgs e)
|
|
{
|
|
// Leave when no configuration selected
|
|
if(configinfo == null) return;
|
|
|
|
// Apply to selected configuration
|
|
configinfo.TestSkill = skill.Value;
|
|
|
|
CreateParametersExample();
|
|
}
|
|
|
|
// Make new texture set
|
|
private void addtextureset_Click(object sender, EventArgs e)
|
|
{
|
|
DefinedTextureSet s = new DefinedTextureSet("New Texture Set");
|
|
TextureSetForm form = new TextureSetForm();
|
|
form.Setup(s);
|
|
if(form.ShowDialog(this) == DialogResult.OK)
|
|
{
|
|
// Add to texture sets
|
|
configinfo.TextureSets.Add(s);
|
|
ListViewItem item = listtextures.Items.Add(s.Name);
|
|
item.Tag = s;
|
|
item.ImageIndex = 0;
|
|
listtextures.Sort();
|
|
reloadresources = true;
|
|
}
|
|
}
|
|
|
|
// Edit texture set
|
|
private void edittextureset_Click(object sender, EventArgs e)
|
|
{
|
|
// Texture Set selected?
|
|
if(listtextures.SelectedItems.Count > 0)
|
|
{
|
|
DefinedTextureSet s = (listtextures.SelectedItems[0].Tag as DefinedTextureSet);
|
|
TextureSetForm form = new TextureSetForm();
|
|
form.Setup(s);
|
|
form.ShowDialog(this);
|
|
listtextures.SelectedItems[0].Text = s.Name;
|
|
listtextures.Sort();
|
|
reloadresources = true;
|
|
}
|
|
}
|
|
|
|
// Remove texture set
|
|
private void removetextureset_Click(object sender, EventArgs e)
|
|
{
|
|
// Texture Set selected?
|
|
while(listtextures.SelectedItems.Count > 0)
|
|
{
|
|
// Remove from config info and list
|
|
DefinedTextureSet s = (listtextures.SelectedItems[0].Tag as DefinedTextureSet);
|
|
configinfo.TextureSets.Remove(s);
|
|
listtextures.SelectedItems[0].Remove();
|
|
reloadresources = true;
|
|
}
|
|
}
|
|
|
|
// Texture Set selected/deselected
|
|
private void listtextures_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
edittextureset.Enabled = (listtextures.SelectedItems.Count > 0);
|
|
removetextureset.Enabled = (listtextures.SelectedItems.Count > 0);
|
|
copytexturesets.Enabled = (listtextures.SelectedItems.Count > 0);
|
|
}
|
|
|
|
// Doubleclicking a texture set
|
|
private void listtextures_DoubleClick(object sender, EventArgs e)
|
|
{
|
|
edittextureset_Click(sender, e);
|
|
}
|
|
|
|
// Copy selected texture sets
|
|
private void copytexturesets_Click(object sender, EventArgs e)
|
|
{
|
|
// Make copies
|
|
copiedsets = new List<DefinedTextureSet>();
|
|
foreach(ListViewItem item in listtextures.SelectedItems)
|
|
{
|
|
DefinedTextureSet s = (item.Tag as DefinedTextureSet);
|
|
copiedsets.Add(s.Copy());
|
|
}
|
|
|
|
// Enable button
|
|
pastetexturesets.Enabled = true;
|
|
}
|
|
|
|
// Paste copied texture sets
|
|
private void pastetexturesets_Click(object sender, EventArgs e)
|
|
{
|
|
if(copiedsets != null)
|
|
{
|
|
// Add copies
|
|
foreach(DefinedTextureSet ts in copiedsets)
|
|
{
|
|
DefinedTextureSet s = ts.Copy();
|
|
ListViewItem item = listtextures.Items.Add(s.Name);
|
|
item.Tag = s;
|
|
item.ImageIndex = 0;
|
|
configinfo.TextureSets.Add(s);
|
|
}
|
|
listtextures.Sort();
|
|
reloadresources = true;
|
|
}
|
|
}
|
|
|
|
// This will add the default sets from game configuration
|
|
private void restoretexturesets_Click(object sender, EventArgs e)
|
|
{
|
|
// Ask nicely first
|
|
if(MessageBox.Show(this, "This will add the default Texture Sets from the Game Configuration. Do you want to continue?",
|
|
"Add Default Sets", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
|
{
|
|
// Add copies
|
|
foreach(DefinedTextureSet ts in gameconfig.TextureSets)
|
|
{
|
|
DefinedTextureSet s = ts.Copy();
|
|
ListViewItem item = listtextures.Items.Add(s.Name);
|
|
item.Tag = s;
|
|
item.ImageIndex = 0;
|
|
configinfo.TextureSets.Add(s);
|
|
}
|
|
listtextures.Sort();
|
|
reloadresources = true;
|
|
}
|
|
}
|
|
|
|
// This is called when an editing mode item is checked or unchecked
|
|
private void listmodes_ItemChecked(object sender, ItemCheckedEventArgs e)
|
|
{
|
|
if(preventchanges) return; //mxd
|
|
|
|
// Leave when no configuration selected
|
|
if(configinfo == null) return;
|
|
|
|
// Apply changes
|
|
EditModeInfo emi = (e.Item.Tag as EditModeInfo);
|
|
bool currentstate = (configinfo.EditModes.ContainsKey(emi.Type.FullName) && configinfo.EditModes[emi.Type.FullName]);
|
|
if(e.Item.Checked && !currentstate)
|
|
{
|
|
// Add
|
|
configinfo.EditModes[emi.Type.FullName] = true;
|
|
}
|
|
else if(!e.Item.Checked && currentstate)
|
|
{
|
|
// Remove
|
|
configinfo.EditModes[emi.Type.FullName] = false;
|
|
}
|
|
|
|
preventchanges = true;
|
|
RefillStartModes();
|
|
preventchanges = false;
|
|
}
|
|
|
|
// Help requested
|
|
private void ConfigForm_HelpRequested(object sender, HelpEventArgs hlpevent)
|
|
{
|
|
General.ShowHelp("w_gameconfigurations.html");
|
|
hlpevent.Handled = true;
|
|
}
|
|
|
|
// This refills the start mode cobobox
|
|
private void RefillStartModes()
|
|
{
|
|
// Refill the startmode combobox
|
|
startmode.Items.Clear();
|
|
foreach(ListViewItem item in listmodes.Items)
|
|
{
|
|
if(item.Checked)
|
|
{
|
|
EditModeInfo emi = (item.Tag as EditModeInfo);
|
|
if(emi.Attributes.SafeStartMode)
|
|
{
|
|
int newindex = startmode.Items.Add(emi);
|
|
if(emi.Type.Name == configinfo.StartMode) startmode.SelectedIndex = newindex;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Select the first in the combobox if none are selected
|
|
if((startmode.SelectedItem == null) && (startmode.Items.Count > 0))
|
|
{
|
|
startmode.SelectedIndex = 0;
|
|
EditModeInfo emi = (startmode.SelectedItem as EditModeInfo);
|
|
configinfo.StartMode = emi.Type.Name;
|
|
}
|
|
}
|
|
|
|
// Start mode combobox changed
|
|
private void startmode_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if(preventchanges || (configinfo == null)) return;
|
|
|
|
// Apply start mode
|
|
if(startmode.SelectedItem != null)
|
|
{
|
|
EditModeInfo emi = (startmode.SelectedItem as EditModeInfo);
|
|
configinfo.StartMode = emi.Type.Name;
|
|
}
|
|
}
|
|
|
|
//mxd
|
|
private void btnNewEngine_Click(object sender, EventArgs e) {
|
|
EngineInfo newInfo = new EngineInfo();
|
|
newInfo.TestSkill = (int)Math.Ceiling(gameconfig.Skills.Count / 2f); //set Medium skill level
|
|
configinfo.TestEngines.Add(newInfo);
|
|
|
|
//store current engine name
|
|
if(!String.IsNullOrEmpty(cbEngineSelector.Text))
|
|
configinfo.TestProgramName = cbEngineSelector.Text;
|
|
|
|
//refresh engines list
|
|
cbEngineSelector.Items.Clear();
|
|
foreach(EngineInfo info in configinfo.TestEngines)
|
|
cbEngineSelector.Items.Add(info.TestProgramName);
|
|
|
|
cbEngineSelector.SelectedIndex = configinfo.TestEngines.Count - 1;
|
|
|
|
btnRemoveEngine.Enabled = true;
|
|
}
|
|
|
|
//mxd
|
|
private void btnRemoveEngine_Click(object sender, EventArgs e) {
|
|
//remove params
|
|
int index = cbEngineSelector.SelectedIndex;
|
|
cbEngineSelector.SelectedIndex = -1;
|
|
configinfo.TestEngines.RemoveAt(index);
|
|
|
|
//refresh engines list
|
|
cbEngineSelector.Items.Clear();
|
|
foreach(EngineInfo info in configinfo.TestEngines)
|
|
cbEngineSelector.Items.Add(info.TestProgramName);
|
|
|
|
if (index >= configinfo.TestEngines.Count)
|
|
index = configinfo.TestEngines.Count - 1;
|
|
|
|
cbEngineSelector.SelectedIndex = index;
|
|
|
|
if (configinfo.TestEngines.Count < 2)
|
|
btnRemoveEngine.Enabled = false;
|
|
}
|
|
|
|
//mxd
|
|
private void cbEngineSelector_SelectedIndexChanged(object sender, EventArgs e) {
|
|
if(cbEngineSelector.SelectedIndex == -1) return;
|
|
|
|
//set new values
|
|
configinfo.CurrentEngineIndex = cbEngineSelector.SelectedIndex;
|
|
cbEngineSelector.Tag = cbEngineSelector.SelectedIndex; //store for later use
|
|
|
|
// Set test application and parameters
|
|
if (!configinfo.CustomParameters)
|
|
{
|
|
configinfo.TestParameters = gameconfig.TestParameters;
|
|
configinfo.TestShortPaths = gameconfig.TestShortPaths;
|
|
}
|
|
|
|
configinfo.TestProgramName = cbEngineSelector.Text;
|
|
testapplication.Text = configinfo.TestProgram;
|
|
testparameters.Text = configinfo.TestParameters;
|
|
shortpaths.Checked = configinfo.TestShortPaths;
|
|
|
|
int skilllevel = configinfo.TestSkill;
|
|
skill.Value = skilllevel - 1; //mxd. WHY???
|
|
skill.Value = skilllevel;
|
|
customparameters.Checked = configinfo.CustomParameters;
|
|
}
|
|
|
|
//mxd
|
|
private void cbEngineSelector_DropDown(object sender, EventArgs e) {
|
|
int index = (int)cbEngineSelector.Tag;
|
|
|
|
if(index != -1 && cbEngineSelector.Text != cbEngineSelector.Items[index].ToString()) {
|
|
cbEngineSelector.Items[index] = cbEngineSelector.Text;
|
|
configinfo.TestProgramName = cbEngineSelector.Text;
|
|
}
|
|
}
|
|
|
|
//mxd
|
|
private void colorsControl_PresetsChanged(object sender, EventArgs e) {
|
|
if(configinfo == null) return;
|
|
configinfo.LinedefColorPresets = colorsControl.GetPresets();
|
|
}
|
|
}
|
|
}
|