Worms4Editor/W4Gui/Main.cs

115 lines
3.7 KiB
C#

using LibW4M;
using LibW4M.Data.WeaponFactory;
using LibXom;
using LibXom.Data;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace W4Gui
{
public partial class Main : Form
{
private const string defaultTitle = "Worms 4: Mayhem! (Save Editor)";
private bool loadedFile = false;
private W4SaveFile w4Save;
public Main()
{
InitializeComponent();
}
private void W4Gui_Load(object sender, EventArgs e)
{
}
private void loadWeaponsData()
{
// load weapon factory data.
this.weaponList.Items.Clear();
for (int i = 0; i < w4Save.WeaponFactoryCollective.Length; i++)
{
WeaponStore store = w4Save.WeaponFactoryCollective[i];
this.weaponList.Items.Add(store.Weapon.Name.Value);
}
}
private void loadAllData()
{
loadWeaponsData();
}
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog fd = new OpenFileDialog();
fd.Filter = "Worms 4: Mayhem Save File|*.xom";
fd.Title = "Open Worms 4 Save File";
if(fd.ShowDialog() == DialogResult.OK)
{
this.w4Save = new W4SaveFile(XomReader.ReadXomFile(fd.FileName));
this.loadedFile = true;
this.mainTabControl.Enabled = true;
this.saveToolStripMenuItem.Enabled = true;
this.Text = defaultTitle + " [" + fd.FileName + "]";
this.loadAllData();
this.weaponList.SelectedIndex = -1;
weaponList_SelectedIndexChanged(null, null);
}
}
private void saveWeapon()
{
WeaponStore lastWeapStore = w4Save.WeaponFactoryCollective[lastSelected];
weaponPanel.SaveWeaponData(ref lastWeapStore.Weapon);
clusterPanel.SaveWeaponData(ref lastWeapStore.Cluster);
weaponList.Items[lastSelected] = lastWeapStore.Weapon.Name.Value;
}
private int lastSelected = -1;
private void weaponList_SelectedIndexChanged(object sender, EventArgs e)
{
// Save last selected
if(lastSelected >= 0 && weaponList.SelectedIndex != lastSelected)
{
saveWeapon();
}
if(weaponList.SelectedIndex >= 0 && weaponList.SelectedIndex != lastSelected)
{
WeaponStore weapStore = w4Save.WeaponFactoryCollective[weaponList.SelectedIndex];
weaponPanel.LoadWeaponData(weapStore.Weapon);
clusterPanel.LoadWeaponData(weapStore.Cluster);
}
if (this.weaponList.SelectedIndex == -1)
weaponClusterTabControl.Enabled = false;
else
weaponClusterTabControl.Enabled = true;
lastSelected = weaponList.SelectedIndex;
}
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog fd = new SaveFileDialog();
fd.Filter = "Worms 4: Mayhem Save File|*.xom";
fd.Title = "Save Worms 4 Save File";
if (fd.ShowDialog() == DialogResult.OK)
{
this.mainTabControl.Enabled = false;
//weaponList.SelectedIndex = -1;
w4Save.Save(fd.FileName);
this.mainTabControl.Enabled = true;
//weaponList.SelectedIndex = 0;
}
}
}
}