mirror of
https://git.do.srb2.org/STJr/UltimateZoneBuilder.git
synced 2024-11-24 04:41:10 +00:00
6b62b4f3d2
Floor and ceiling textures are now moved more predictably by arrow keys in GZDoom Visual mode. Walls texture coordinates are always rounded when moved by arrow keys in Visual modes. Linedef info panel: relative UDMF light values are now shown like this: 16 (128), which means "UDMF light value" ("total surface brightness (UDMF light value + sector brightness)") Player is now spawned at camera height when testing from current location in Visual modes. Focus is now properly restored after testing from current location in Visual modes. Updated Heretic_sectors.cfg and Heretic_things.cfg as described here: http://www.doombuilder.com/forums/viewtopic.php?f=11&t=357 Changed sprites of artifacts in Hexen_things.cfg to proper ones. Renamed Skulltag configs to Zandronum
698 lines
21 KiB
C#
698 lines
21 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.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using Microsoft.Win32;
|
|
using System.Diagnostics;
|
|
using CodeImp.DoomBuilder.Actions;
|
|
using CodeImp.DoomBuilder.Data;
|
|
using CodeImp.DoomBuilder.Config;
|
|
using System.IO;
|
|
using CodeImp.DoomBuilder.Controls;
|
|
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) && cbEngineSelector.Text != configinfo.TestProgramName)
|
|
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
|
|
cbEngineSelector.Items.Clear();
|
|
foreach(EngineInfo info in configinfo.TestEngines)
|
|
cbEngineSelector.Items.Add(info.TestProgramName);
|
|
|
|
cbEngineSelector.SelectedIndex = configinfo.CurrentEngineIndex;
|
|
btnRemoveEngine.Enabled = configinfo.TestEngines.Count > 1;
|
|
|
|
// Set test application and parameters
|
|
/*if(!configinfo.CustomParameters)
|
|
{
|
|
configinfo.TestParameters = gameconfig.TestParameters;
|
|
configinfo.TestShortPaths = gameconfig.TestShortPaths;
|
|
}
|
|
testapplication.Text = configinfo.TestProgram;
|
|
testparameters.Text = configinfo.TestParameters;
|
|
shortpaths.Checked = configinfo.TestShortPaths;
|
|
int skilllevel = configinfo.TestSkill;
|
|
skill.Value = skilllevel - 1;
|
|
skill.Value = skilllevel;
|
|
customparameters.Checked = configinfo.CustomParameters;*/
|
|
|
|
// 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();
|
|
|
|
// 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;
|
|
}
|
|
|
|
//mxd. Engine name changed
|
|
/*private void tbEngineName_TextChanged(object sender, EventArgs e) {
|
|
if (configinfo == null) return;
|
|
|
|
configinfo.TestProgramName = tbEngineName.Text;
|
|
cbEngineSelector.SelectedItem = configinfo.TestEngines[configinfo.CurrentEngineIndex];
|
|
}*/
|
|
|
|
// 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);
|
|
}
|
|
}
|
|
|
|
// 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)
|
|
{
|
|
// 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;
|
|
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) {
|
|
//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;
|
|
}
|
|
}
|
|
}
|
|
}
|