Worms4Editor/W4Gui/Main.cs

195 lines
6.6 KiB
C#

using LibW4M;
using LibW4M.Data.WeaponFactory;
using LibW4M.PS2;
using LibW4M.XBOX;
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;
using W4Gui.Tabs;
namespace W4Gui
{
public partial class Main : Form
{
private static int lastTabIndex = -1;
private const string defaultTitle = "Worms 4: Mayhem! (Save Editor)";
public Main()
{
InitializeComponent();
}
private void W4Gui_Load(object sender, EventArgs e)
{
}
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog fd = new OpenFileDialog();
fd.Filter = "Worms 4: Mayhem PC Save File|*.xom|Worms 4: Mayhem PS2 Save File|*.psu|Worms 4: Mayhem XBOX Save File|data";
fd.Title = "Open Worms 4 Save File";
if(fd.ShowDialog() == DialogResult.OK)
{
DataManager.LoadedSavePath = fd.FileName;
DataManager.LoadedSaveType = (SaveType)(fd.FilterIndex - 1);
switch (DataManager.LoadedSaveType)
{
case SaveType.PC:
default:
DataManager.SaveFile = new W4SaveFile(XomReader.ReadXomFile(fd.FileName));
break;
case SaveType.PS2:
DataManager.SaveFile = Ps2Save.ReadPS2Save(fd.FileName);
break;
case SaveType.XBOX:
DataManager.SaveFile = XboxSave.ReadXboxSave(fd.FileName);
break;
}
this.mainTabControl.Enabled = true;
this.saveToolStripMenuItem.Enabled = true;
this.saveAsToolStripMenuItem.Enabled = true;
this.convertToolStripMenuItem.Enabled = true;
this.Text = defaultTitle + " (" + DataManager.LoadedSaveType.ToString() + ") " + "[" + fd.FileName + "]";
DataManager.LoadAll();
}
}
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
mainTabControl.Enabled = false;
DataManager.SaveAll();
switch (DataManager.LoadedSaveType)
{
case SaveType.PC:
DataManager.SaveFile.SavePC(DataManager.LoadedSavePath);
break;
case SaveType.PS2:
DataManager.SaveFile.SavePS2PSU(DataManager.LoadedSavePath);
break;
case SaveType.XBOX:
DataManager.SaveFile.SaveXBOX(DataManager.LoadedSavePath);
break;
}
mainTabControl.Enabled = true;
MessageBox.Show("File saved to: " + DataManager.LoadedSavePath, "Save Complete!", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void extractAllXomContainersToolStripMenuItem_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
fbd.Description = "Select folder to extract XomContainers too.";
if(fbd.ShowDialog() == DialogResult.OK)
{
this.mainTabControl.Enabled = false;
DataManager.SaveFile.ExtractAllContainers(fbd.SelectedPath);
this.mainTabControl.Enabled = true;
}
}
private void mainTabControl_SelectedIndexChanged(object sender, EventArgs e)
{
if (lastTabIndex >= 0)
{
foreach (Control ctrl in this.mainTabControl.TabPages[lastTabIndex].Controls)
{
try
{
TabEntry? tab = ctrl as TabEntry;
if (tab is TabEntry)
tab.SaveFromControl();
}
catch { }
}
}
if (this.mainTabControl.SelectedIndex >= 0)
{
foreach (Control ctrl in this.mainTabControl.TabPages[this.mainTabControl.SelectedIndex].Controls)
{
try
{
TabEntry? tab = ctrl as TabEntry;
if (tab is TabEntry)
tab.LoadIntoControl();
}
catch { }
}
}
lastTabIndex = this.mainTabControl.SelectedIndex;
}
private void convertToPS2ToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog fd = new SaveFileDialog();
fd.Filter = "Worms 4: Mayhem PlayStation 2 Save File|*";
fd.Title = "Save Worms 4 PlayStation 2 Save File";
fd.FileName = "BESLES-53096W4MA";
if (fd.ShowDialog() == DialogResult.OK)
{
this.mainTabControl.Enabled = false;
DataManager.SaveAll();
DataManager.SaveFile.SavePS2(fd.FileName);
this.mainTabControl.Enabled = true;
}
}
private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog fd = new SaveFileDialog();
fd.Filter = "Worms 4: Mayhem PC Save File|*.xom|Worms 4: Mayhem PS2 Single Save File|*.psu|Worms 4: Mayhem XBOX Save File|data";
fd.Title = "Save Worms 4 Save File";
fd.FileName = Path.GetFileName(DataManager.LoadedSavePath);
if (fd.ShowDialog() == DialogResult.OK)
{
this.mainTabControl.Enabled = false;
DataManager.SaveAll();
SaveType saveType = (SaveType)(fd.FilterIndex-1);
switch (saveType)
{
case SaveType.PC:
DataManager.SaveFile.SavePC(fd.FileName);
break;
case SaveType.PS2:
DataManager.SaveFile.SavePS2PSU(fd.FileName);
break;
case SaveType.XBOX:
DataManager.SaveFile.SaveXBOX(fd.FileName);
break;
}
DataManager.LoadedSavePath = fd.FileName;
DataManager.LoadedSaveType = saveType;
MessageBox.Show("File saved to: " + fd.FileName, "Save Complete!", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.mainTabControl.Enabled = true;
}
}
}
}