Fully implement editing weapons.
This commit is contained in:
parent
3b89a6967f
commit
a107ec2a2f
|
@ -1,7 +1,7 @@
|
|||
Worms4Editor/obj/*
|
||||
Worms4Editor/bin/*
|
||||
LibXom/obj/*
|
||||
LibXom/bin/*
|
||||
LibW4M/obj/*
|
||||
LibW4M/bin/*
|
||||
W4Gui/obj/*
|
||||
W4Gui/bin/*
|
||||
.vs/*
|
||||
|
|
|
@ -7,7 +7,7 @@ using System.Threading.Tasks;
|
|||
|
||||
namespace LibW4M.Data
|
||||
{
|
||||
internal abstract class SaveDataEntry
|
||||
public abstract class SaveDataEntry
|
||||
{
|
||||
internal Guid guid = Guid.NewGuid();
|
||||
internal W4SaveFile fileBelongs;
|
||||
|
|
|
@ -6,7 +6,7 @@ using System.Threading.Tasks;
|
|||
|
||||
namespace LibW4M.Data.WeaponFactory
|
||||
{
|
||||
public enum Detonation : int
|
||||
public enum DetonationType : int
|
||||
{
|
||||
Impact = 0,
|
||||
Fuse = 1,
|
|
@ -8,7 +8,7 @@ namespace LibW4M.Data.WeaponFactory
|
|||
{
|
||||
public enum ProjectileLaunchType : int
|
||||
{
|
||||
AirStrike = 0
|
||||
AirStrike = 0,
|
||||
Launched = 1,
|
||||
Thrown = 2
|
||||
}
|
||||
|
|
|
@ -0,0 +1,181 @@
|
|||
using LibXom.Data;
|
||||
using LibXom.Streams;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||
|
||||
namespace LibW4M.Data.WeaponFactory
|
||||
{
|
||||
public class WeaponContainer
|
||||
{
|
||||
private W4SaveFile saveFile;
|
||||
public W4SaveFile OriginalSave
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.saveFile;
|
||||
}
|
||||
}
|
||||
public XomString Name;
|
||||
public int Type;
|
||||
public DetonationType DetonationType;
|
||||
|
||||
public bool Homing;
|
||||
public bool HomingAvoidLand;
|
||||
public bool EffectedByWind;
|
||||
public bool FireOnGround;
|
||||
public bool Poison;
|
||||
public int RetreatTime;
|
||||
|
||||
public float WormDamageRadius;
|
||||
public float WormDamageMagnitude;
|
||||
public float LandDamageRadius;
|
||||
|
||||
public float ProjectileCollisionRadius;
|
||||
public float Push;
|
||||
public int FuseTime;
|
||||
|
||||
public XomString[] GraphicalResources;
|
||||
public XomString[] GraphicalLocators;
|
||||
|
||||
public XomString LaunchFX;
|
||||
public XomString ArielFX;
|
||||
public XomString DetonationFX;
|
||||
|
||||
public int PayloadResourceId;
|
||||
public ProjectileLaunchType ProjectileLaunchType;
|
||||
public bool ProjectilePowersUp;
|
||||
public int ProjectileNumClusters;
|
||||
public float ProjectileMaxPower;
|
||||
public float ClusterSpread;
|
||||
public float ClusterMaxSpeed;
|
||||
internal byte[] serialize()
|
||||
{
|
||||
using (MemoryStream ms = new MemoryStream())
|
||||
{
|
||||
using (XomStreamWriter writer = new XomStreamWriter(ms))
|
||||
{
|
||||
writer.Skip(3);
|
||||
|
||||
writer.WriteCompressedInt(this.Name.Id);
|
||||
writer.WriteInt32(this.Type);
|
||||
writer.WriteInt32((int)this.DetonationType);
|
||||
|
||||
writer.WriteBool(this.Homing);
|
||||
writer.WriteBool(this.HomingAvoidLand);
|
||||
|
||||
writer.WriteBool(this.EffectedByWind);
|
||||
writer.WriteBool(this.FireOnGround);
|
||||
writer.WriteBool(this.Poison);
|
||||
|
||||
writer.WriteInt32(this.RetreatTime);
|
||||
|
||||
writer.WriteFloat(this.WormDamageRadius);
|
||||
writer.WriteFloat(this.WormDamageMagnitude);
|
||||
writer.WriteFloat(this.LandDamageRadius);
|
||||
writer.WriteFloat(this.ProjectileCollisionRadius);
|
||||
writer.WriteFloat(this.Push);
|
||||
|
||||
writer.WriteInt32(this.FuseTime);
|
||||
|
||||
// Write Graphical Resources list
|
||||
int[] graphicalResourceIds = new int[this.GraphicalResources.Length];
|
||||
|
||||
for (int i = 0; i < graphicalResourceIds.Length; i++)
|
||||
graphicalResourceIds[i] = this.GraphicalResources[i].Id;
|
||||
|
||||
writer.WriteCompressedIntArray(graphicalResourceIds);
|
||||
|
||||
// Write Graphical Locators list
|
||||
int[] graphicalLocatorIds = new int[this.GraphicalLocators.Length];
|
||||
|
||||
for (int i = 0; i < graphicalLocatorIds.Length; i++)
|
||||
graphicalLocatorIds[i] = this.GraphicalLocators[i].Id;
|
||||
|
||||
writer.WriteCompressedIntArray(graphicalLocatorIds);
|
||||
|
||||
writer.WriteCompressedInt(this.LaunchFX.Id);
|
||||
writer.WriteCompressedInt(this.ArielFX.Id);
|
||||
writer.WriteCompressedInt(this.DetonationFX.Id);
|
||||
|
||||
writer.WriteInt32(this.PayloadResourceId);
|
||||
writer.WriteInt32((int)this.ProjectileLaunchType);
|
||||
|
||||
writer.WriteBool(this.ProjectilePowersUp);
|
||||
writer.WriteInt32(this.ProjectileNumClusters);
|
||||
|
||||
writer.WriteFloat(this.ProjectileMaxPower);
|
||||
writer.WriteFloat(this.ClusterSpread);
|
||||
writer.WriteFloat(this.ClusterMaxSpeed);
|
||||
|
||||
ms.Seek(0x00, SeekOrigin.Begin);
|
||||
return ms.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
internal void deserailize(byte[] data)
|
||||
{
|
||||
using (XomStreamReader reader = new XomStreamReader(new MemoryStream(data)))
|
||||
{
|
||||
reader.Skip(3);
|
||||
|
||||
this.Name = saveFile.xomFile.GetStringById(reader.ReadCompressedInt());
|
||||
this.Type = reader.ReadInt32();
|
||||
this.DetonationType = (DetonationType)reader.ReadInt32();
|
||||
|
||||
this.Homing = reader.ReadBool();
|
||||
this.HomingAvoidLand = reader.ReadBool();
|
||||
|
||||
this.EffectedByWind = reader.ReadBool();
|
||||
this.FireOnGround = reader.ReadBool();
|
||||
this.Poison = reader.ReadBool();
|
||||
|
||||
this.RetreatTime = reader.ReadInt32();
|
||||
|
||||
this.WormDamageRadius = reader.ReadFloat();
|
||||
this.WormDamageMagnitude = reader.ReadFloat();
|
||||
this.LandDamageRadius = reader.ReadFloat();
|
||||
this.ProjectileCollisionRadius = reader.ReadFloat();
|
||||
this.Push = reader.ReadFloat();
|
||||
|
||||
this.FuseTime = reader.ReadInt32();
|
||||
|
||||
// Read graphical resources list.
|
||||
int[] graphicalResourceIds = reader.ReadCompressedIntArray();
|
||||
|
||||
this.GraphicalResources = new XomString[graphicalResourceIds.Length];
|
||||
for (int i = 0; i < graphicalResourceIds.Length; i++)
|
||||
this.GraphicalResources[i] = saveFile.xomFile.GetStringById(graphicalResourceIds[i]);
|
||||
|
||||
// Read graphical locators list.
|
||||
int[] graphicalLocatorIds = reader.ReadCompressedIntArray();
|
||||
|
||||
this.GraphicalLocators = new XomString[graphicalLocatorIds.Length];
|
||||
for (int i = 0; i < graphicalLocatorIds.Length; i++)
|
||||
this.GraphicalLocators[i] = saveFile.xomFile.GetStringById(graphicalLocatorIds[i]);
|
||||
|
||||
this.LaunchFX = saveFile.xomFile.GetStringById(reader.ReadCompressedInt());
|
||||
this.ArielFX = saveFile.xomFile.GetStringById(reader.ReadCompressedInt());
|
||||
this.DetonationFX = saveFile.xomFile.GetStringById(reader.ReadCompressedInt());
|
||||
|
||||
this.PayloadResourceId = reader.ReadInt32();
|
||||
this.ProjectileLaunchType = (ProjectileLaunchType)reader.ReadInt32();
|
||||
|
||||
this.ProjectilePowersUp = reader.ReadBool();
|
||||
this.ProjectileNumClusters = reader.ReadInt32();
|
||||
|
||||
this.ProjectileMaxPower = reader.ReadFloat();
|
||||
this.ClusterSpread = reader.ReadFloat();
|
||||
this.ClusterMaxSpeed = reader.ReadFloat();
|
||||
}
|
||||
}
|
||||
internal WeaponContainer(byte[] data, W4SaveFile saveFile)
|
||||
{
|
||||
this.saveFile = saveFile;
|
||||
this.deserailize(data);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,153 +0,0 @@
|
|||
using LibXom.Data;
|
||||
using LibXom.Streams;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||
|
||||
namespace LibW4M.Data.WeaponFactory
|
||||
{
|
||||
internal class WeaponData
|
||||
{
|
||||
private XomFile saveFile;
|
||||
|
||||
private XomString WeaponName;
|
||||
public int Type;
|
||||
public Detonation DetonationType;
|
||||
|
||||
public bool Homing;
|
||||
public bool HomingAvoidLand;
|
||||
public bool EffectedByWind;
|
||||
public bool FireOnGround;
|
||||
public bool Poison;
|
||||
public int RetreatTime;
|
||||
|
||||
public float WormDamageRadius;
|
||||
public float WormDamageMagnitude;
|
||||
public float LandDamageRadius;
|
||||
|
||||
public float ProjectileCollisionRadius;
|
||||
public float Push;
|
||||
public int FuseTime;
|
||||
|
||||
public int[] GraphicalResourceIds;
|
||||
public int[] GraphicalLocatorIds;
|
||||
|
||||
public XomString LaunchFX;
|
||||
public XomString ArielFX;
|
||||
public XomString DetonationFX;
|
||||
|
||||
public int PayloadResourceId;
|
||||
public ProjectileLaunchType ProjectileLaunchType;
|
||||
public bool ProjectilePowersUp;
|
||||
public int ProjectileNumClusters;
|
||||
public float ProjectileMaxPower;
|
||||
public float ClusterSpread;
|
||||
public float ClusterMaxSpeed;
|
||||
internal byte[] serialize()
|
||||
{
|
||||
using (XomStreamWriter writer = new XomStreamWriter(new MemoryStream()))
|
||||
{
|
||||
writer.Skip(3);
|
||||
|
||||
writer.WriteCompressedInt(this.WeaponName.Id);
|
||||
writer.WriteInt32(this.Type);
|
||||
writer.WriteInt32((int)this.DetonationType);
|
||||
|
||||
writer.WriteBool(this.Homing);
|
||||
writer.WriteBool(this.HomingAvoidLand);
|
||||
|
||||
writer.WriteBool(this.EffectedByWind);
|
||||
writer.WriteBool(this.FireOnGround);
|
||||
writer.WriteBool(this.Poison);
|
||||
|
||||
writer.WriteInt32(this.RetreatTime);
|
||||
|
||||
writer.WriteFloat(this.WormDamageRadius);
|
||||
writer.WriteFloat(this.WormDamageMagnitude);
|
||||
writer.WriteFloat(this.LandDamageRadius);
|
||||
writer.WriteFloat(this.ProjectileCollisionRadius);
|
||||
writer.WriteFloat(this.Push);
|
||||
|
||||
writer.WriteInt32(this.FuseTime);
|
||||
|
||||
writer.WriteCompressedIntArray(this.GraphicalResourceIds);
|
||||
writer.WriteCompressedIntArray(this.GraphicalLocatorIds);
|
||||
|
||||
writer.WriteCompressedInt(this.LaunchFX.Id);
|
||||
writer.WriteCompressedInt(this.ArielFX.Id);
|
||||
writer.WriteCompressedInt(this.DetonationFX.Id);
|
||||
|
||||
writer.WriteInt32(this.PayloadResourceId);
|
||||
writer.WriteInt32((int)this.ProjectileLaunchType);
|
||||
|
||||
writer.WriteBool(this.ProjectilePowersUp);
|
||||
writer.WriteInt32(this.ProjectileNumClusters);
|
||||
|
||||
writer.WriteFloat(this.ProjectileMaxPower);
|
||||
writer.WriteFloat(this.ClusterSpread);
|
||||
writer.WriteFloat(this.ClusterMaxSpeed);
|
||||
|
||||
writer.Skip(1);
|
||||
|
||||
writer.BaseStream.Seek(0x00, SeekOrigin.Begin);
|
||||
MemoryStream ms = (MemoryStream)(writer.BaseStream).ToArray();
|
||||
|
||||
}
|
||||
}
|
||||
internal void deserailize(byte[] data)
|
||||
{
|
||||
using (XomStreamReader reader = new XomStreamReader(new MemoryStream(data)))
|
||||
{
|
||||
reader.Skip(3);
|
||||
|
||||
this.WeaponName = saveFile.GetStringById(reader.ReadCompressedInt());
|
||||
this.Type = reader.ReadInt32();
|
||||
this.DetonationType = (Detonation)reader.ReadInt32();
|
||||
|
||||
this.Homing = reader.ReadBool();
|
||||
this.HomingAvoidLand = reader.ReadBool();
|
||||
|
||||
this.EffectedByWind = reader.ReadBool();
|
||||
this.FireOnGround = reader.ReadBool();
|
||||
this.Poison = reader.ReadBool();
|
||||
|
||||
this.RetreatTime = reader.ReadInt32();
|
||||
|
||||
this.WormDamageRadius = reader.ReadFloat();
|
||||
this.WormDamageMagnitude = reader.ReadFloat();
|
||||
this.LandDamageRadius = reader.ReadFloat();
|
||||
this.ProjectileCollisionRadius = reader.ReadFloat();
|
||||
this.Push = reader.ReadFloat();
|
||||
|
||||
this.FuseTime = reader.ReadInt32();
|
||||
|
||||
this.GraphicalResourceIds = reader.ReadCompressedIntArray();
|
||||
this.GraphicalLocatorIds = reader.ReadCompressedIntArray();
|
||||
|
||||
this.LaunchFX = saveFile.GetStringById(reader.ReadCompressedInt());
|
||||
this.ArielFX = saveFile.GetStringById(reader.ReadCompressedInt());
|
||||
this.DetonationFX = saveFile.GetStringById(reader.ReadCompressedInt());
|
||||
|
||||
this.PayloadResourceId = reader.ReadInt32();
|
||||
this.ProjectileLaunchType = (ProjectileLaunchType)reader.ReadInt32();
|
||||
|
||||
this.ProjectilePowersUp = reader.ReadBool();
|
||||
this.ProjectileNumClusters = reader.ReadInt32();
|
||||
|
||||
this.ProjectileMaxPower = reader.ReadFloat();
|
||||
this.ClusterSpread = reader.ReadFloat();
|
||||
this.ClusterMaxSpeed = reader.ReadFloat();
|
||||
|
||||
reader.Skip(1);
|
||||
}
|
||||
}
|
||||
internal WeaponData(byte[] data, XomFile saveFile)
|
||||
{
|
||||
this.saveFile = saveFile;
|
||||
this.deserailize(data);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -9,33 +9,27 @@ using System.Threading.Tasks;
|
|||
|
||||
namespace LibW4M.Data.WeaponFactory
|
||||
{
|
||||
internal class WeaponEntry : SaveDataEntry
|
||||
public class WeaponStore : SaveDataEntry
|
||||
{
|
||||
|
||||
public WeaponData Weapon;
|
||||
public WeaponData Cluster;
|
||||
public WeaponContainer Weapon;
|
||||
public WeaponContainer Cluster;
|
||||
|
||||
private XomContainer weaponContainer;
|
||||
private XomContainer clusterContainer;
|
||||
internal XomContainer weaponContainer;
|
||||
internal XomContainer clusterContainer;
|
||||
|
||||
public WeaponEntry(W4SaveFile fileBelongs, XomContainer mainContainer) : base(fileBelongs, mainContainer)
|
||||
public WeaponStore(W4SaveFile fileBelongs, XomContainer mainContainer) : base(fileBelongs, mainContainer)
|
||||
{
|
||||
this.Load();
|
||||
}
|
||||
|
||||
public override void Delete()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override void Load()
|
||||
{
|
||||
int[] weaponStore = this.mainContainer.Decompress();
|
||||
this.weaponContainer = this.fileBelongs.xomFile.GetContainerById(weaponStore[1]);
|
||||
this.clusterContainer = this.fileBelongs.xomFile.GetContainerById(weaponStore[2]);
|
||||
|
||||
this.Weapon = new WeaponData(this.weaponContainer.GetData(), this.fileBelongs.xomFile);
|
||||
this.Cluster = new WeaponData(this.clusterContainer.GetData(), this.fileBelongs.xomFile);
|
||||
this.Weapon = new WeaponContainer(this.weaponContainer.GetData(), this.fileBelongs);
|
||||
this.Cluster = new WeaponContainer(this.clusterContainer.GetData(), this.fileBelongs);
|
||||
}
|
||||
|
||||
public override void Save()
|
|
@ -0,0 +1,73 @@
|
|||
using LibXom.Data;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace LibW4M.Data.WeaponFactory
|
||||
{
|
||||
public class WeaponsCollective : SaveDataEntry
|
||||
{
|
||||
private List<WeaponStore> weaponCollective;
|
||||
|
||||
public WeaponStore this[int i]
|
||||
{
|
||||
get
|
||||
{
|
||||
return weaponCollective[i];
|
||||
}
|
||||
set
|
||||
{
|
||||
weaponCollective[i] = value;
|
||||
}
|
||||
}
|
||||
public int Length
|
||||
{
|
||||
get
|
||||
{
|
||||
return weaponCollective.Count;
|
||||
}
|
||||
}
|
||||
public WeaponsCollective(W4SaveFile fileBelongs, XomContainer mainContainer) : base(fileBelongs, mainContainer)
|
||||
{
|
||||
this.weaponCollective = new List<WeaponStore>();
|
||||
this.Load();
|
||||
}
|
||||
|
||||
public void Delete(WeaponStore store)
|
||||
{
|
||||
for(int i = 0; i < this.Length; i++)
|
||||
{
|
||||
WeaponStore weaponStore = this[i];
|
||||
if(weaponStore.uuid.Equals(store.uuid, StringComparison.InvariantCultureIgnoreCase))
|
||||
{
|
||||
weaponCollective.RemoveAt(i);
|
||||
weaponStore.weaponContainer.Delete();
|
||||
weaponStore.clusterContainer.Delete();
|
||||
weaponStore.mainContainer.Delete();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void Load()
|
||||
{
|
||||
int[] collective = mainContainer.Decompress();
|
||||
for (int i = 0; i < collective[0]; i++) weaponCollective.Add(new WeaponStore(this.fileBelongs, this.fileBelongs.xomFile.GetContainerById(collective[i + 1])));
|
||||
}
|
||||
|
||||
public override void Save()
|
||||
{
|
||||
int[] collective = mainContainer.Decompress();
|
||||
collective[0] = weaponCollective.Count;
|
||||
for (int i = 0; i < weaponCollective.Count; i++)
|
||||
{
|
||||
WeaponStore store = weaponCollective[i];
|
||||
store.Save();
|
||||
collective[i + 1] = store.mainContainer.Id;
|
||||
}
|
||||
mainContainer.CompressAndUpdate(collective);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,14 +1,41 @@
|
|||
using LibXom.Data;
|
||||
using LibW4M.Data;
|
||||
using LibW4M.Data.WeaponFactory;
|
||||
using LibXom;
|
||||
using LibXom.Data;
|
||||
|
||||
namespace LibW4M
|
||||
{
|
||||
public class W4SaveFile
|
||||
{
|
||||
|
||||
public XomFile xomFile;
|
||||
internal List<SaveDataEntry> entries = new List<SaveDataEntry>();
|
||||
private WeaponsCollective weaponFactoryCollective;
|
||||
public WeaponsCollective WeaponFactoryCollective
|
||||
{
|
||||
get
|
||||
{
|
||||
return weaponFactoryCollective;
|
||||
}
|
||||
}
|
||||
internal XomFile xomFile;
|
||||
public void Save(string newXom)
|
||||
{
|
||||
foreach(SaveDataEntry entry in entries)
|
||||
{
|
||||
entry.Save();
|
||||
}
|
||||
|
||||
XomWriter.WriteXom(xomFile, newXom);
|
||||
}
|
||||
public XomString LookupString(string value)
|
||||
{
|
||||
return xomFile.AddOrGetString(value);
|
||||
}
|
||||
public W4SaveFile(XomFile w4Save)
|
||||
{
|
||||
this.xomFile = w4Save;
|
||||
weaponFactoryCollective = new WeaponsCollective(this, this.xomFile.GetTypeByName("WeaponFactoryCollective").Containers.First());
|
||||
|
||||
entries.Add(weaponFactoryCollective);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -52,7 +52,7 @@ namespace LibXom.Data
|
|||
{
|
||||
byte[] buffer = XomCompressor.compressBuffer(nums);
|
||||
byte[] compressedData = new byte[buffer.Length + 3];
|
||||
Array.ConstrainedCopy(buffer, 0, compressedData, 3, compressedData.Length);
|
||||
Array.ConstrainedCopy(buffer, 0, compressedData, 3, buffer.Length);
|
||||
return compressedData;
|
||||
}
|
||||
public void CompressAndUpdate(byte[] bytes)
|
||||
|
@ -83,6 +83,11 @@ namespace LibXom.Data
|
|||
return intArray;
|
||||
}
|
||||
|
||||
public void Delete()
|
||||
{
|
||||
this.Type.DeleteContainer(this);
|
||||
}
|
||||
|
||||
private byte[] intArrayToByteArray(int[] intArray)
|
||||
{
|
||||
using (MemoryStream ms = new MemoryStream())
|
||||
|
|
|
@ -42,9 +42,30 @@ namespace LibXom.Data
|
|||
return xomContainers.ToArray();
|
||||
}
|
||||
}
|
||||
public XomString GetStringById(int stringId)
|
||||
internal void updateStringById(int stringId, XomString newStr)
|
||||
{
|
||||
return XomStrings[stringId - 1];
|
||||
xomStrings[stringId] = newStr;
|
||||
}
|
||||
|
||||
public XomString AddOrGetString(string value)
|
||||
{
|
||||
XomString[] strings = XomStrings;
|
||||
for (int i = 0; i < strings.Length; i++)
|
||||
if (strings[i].Value == value) return strings[i];
|
||||
|
||||
XomString str = new XomString(this, value);
|
||||
xomStrings.Add(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
public void DeleteString(XomString str)
|
||||
{
|
||||
xomStrings.RemoveAt(str.Id);
|
||||
}
|
||||
|
||||
public XomString GetStringById(int stringId)
|
||||
{
|
||||
return XomStrings[stringId];
|
||||
}
|
||||
public XomContainer GetContainerById(int containerId)
|
||||
{
|
||||
|
@ -92,7 +113,7 @@ namespace LibXom.Data
|
|||
XomString str = stringsSorted[i];
|
||||
stringLst[i] = str.Value;
|
||||
stringOffsets.Add(str.Value, loc);
|
||||
loc += str.Value.Length + 1; // str length, + \0 for terminator.
|
||||
loc += str.Length + 1; // str length, + \0 for terminator.
|
||||
}
|
||||
|
||||
// now create the strs block
|
||||
|
@ -139,7 +160,7 @@ namespace LibXom.Data
|
|||
foreach (string str in stringBlock.StringList)
|
||||
{
|
||||
stringOffsets.Add(loc, str);
|
||||
loc += str.Length + 1; // str length, + \0 for terminator.
|
||||
loc += Encoding.UTF8.GetByteCount(str) + 1; // str length, + \0 for terminator.
|
||||
}
|
||||
|
||||
// Now create the list of XomStrings ...
|
||||
|
|
|
@ -15,15 +15,33 @@ namespace LibXom.Data
|
|||
{
|
||||
get
|
||||
{
|
||||
return this.fileBelongs.calculateIdForXomFileComponent(this.uuid, fileBelongs.XomStrings);
|
||||
return this.fileBelongs.calculateIdForXomFileComponent(this.uuid, fileBelongs.XomStrings) - 1;
|
||||
}
|
||||
}
|
||||
public string Value
|
||||
{
|
||||
get
|
||||
{
|
||||
return value;
|
||||
return this.value;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.value = value;
|
||||
fileBelongs.updateStringById(this.Id, this);
|
||||
}
|
||||
}
|
||||
|
||||
public int Length
|
||||
{
|
||||
get
|
||||
{
|
||||
return Encoding.UTF8.GetByteCount(this.Value);
|
||||
}
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return this.Value;
|
||||
}
|
||||
internal XomString(XomFile fromFile, string value)
|
||||
{
|
||||
|
|
|
@ -6,4 +6,8 @@
|
|||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<_LastSelectedProfileId>C:\Users\Li\Documents\git\Worms4Editor\LibXom\Properties\PublishProfiles\FolderProfile.pubxml</_LastSelectedProfileId>
|
||||
</PropertyGroup>
|
||||
</Project>
|
|
@ -56,16 +56,16 @@ namespace LibXom.Streams
|
|||
}
|
||||
public string ReadCStr()
|
||||
{
|
||||
StringBuilder cstr = new StringBuilder();
|
||||
List<byte> cstr = new List<byte>();
|
||||
|
||||
while (true)
|
||||
{
|
||||
char c = (char)ReadByte();
|
||||
byte c = ReadByte();
|
||||
if (c == 0) break;
|
||||
cstr.Append(c);
|
||||
cstr.Add(c);
|
||||
}
|
||||
|
||||
return cstr.ToString();
|
||||
return Encoding.UTF8.GetString(cstr.ToArray());
|
||||
}
|
||||
public void Skip(int amt)
|
||||
{
|
||||
|
|
|
@ -98,7 +98,7 @@ namespace LibXom
|
|||
{
|
||||
strings[i] = xomStream.ReadCStr();
|
||||
}
|
||||
return new StrsBlock(numStrs, strsSz, offsets, strings); ;
|
||||
return new StrsBlock(numStrs, strsSz, offsets, strings);
|
||||
}
|
||||
public XomBlock? readBlock()
|
||||
{
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
C:/Users/Li/AppData/Local/VirtualStore/Program Files (x86)/Codemasters/Worms 4 Mayhem/Data/SaveGame.xom
|
|
@ -0,0 +1,130 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Media;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace W4Gui
|
||||
{
|
||||
public class FloatNumericUpDown : UpDownBase
|
||||
{
|
||||
private float value = 0;
|
||||
private bool updating = false;
|
||||
public float Value
|
||||
{
|
||||
get
|
||||
{
|
||||
if (this.UserEdit) ValidateEditText();
|
||||
return this.value;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.value = value;
|
||||
UpdateEditText();
|
||||
}
|
||||
}
|
||||
public override void DownButton()
|
||||
{
|
||||
try
|
||||
{
|
||||
this.Value--;
|
||||
}
|
||||
catch (OverflowException) { this.Value = Single.MinValue; };
|
||||
}
|
||||
|
||||
public override void UpButton()
|
||||
{
|
||||
try
|
||||
{
|
||||
this.Value++;
|
||||
}
|
||||
catch (OverflowException) { this.Value = Single.MaxValue; };
|
||||
}
|
||||
|
||||
protected override void OnLostFocus(EventArgs e)
|
||||
{
|
||||
base.OnLostFocus(e);
|
||||
if (UserEdit)
|
||||
{
|
||||
UpdateEditText();
|
||||
}
|
||||
}
|
||||
protected override void UpdateEditText()
|
||||
{
|
||||
if (this.updating) return;
|
||||
|
||||
this.updating = true;
|
||||
if (Single.IsNaN(this.Value))
|
||||
{
|
||||
this.Text = "NaN";
|
||||
}
|
||||
if (Single.IsNegativeInfinity(this.Value))
|
||||
{
|
||||
this.Text = "-Inf";
|
||||
}
|
||||
if (Single.IsPositiveInfinity(this.Value))
|
||||
{
|
||||
this.Text = "+Inf";
|
||||
}
|
||||
else
|
||||
{
|
||||
string floatStr = Convert.ToDouble(this.Value).ToString("G9", CultureInfo.InvariantCulture);
|
||||
if (!floatStr.Contains("."))
|
||||
floatStr += ".00";
|
||||
this.Text = floatStr;
|
||||
|
||||
}
|
||||
this.updating = false;
|
||||
}
|
||||
|
||||
protected override void OnTextBoxKeyPress(object? source, KeyPressEventArgs e)
|
||||
{
|
||||
base.OnTextBoxKeyPress(source, e);
|
||||
|
||||
if (Char.IsDigit(e.KeyChar)) return;
|
||||
else if ("+-.infa\b".Contains(e.KeyChar.ToString().ToLower().First())) return;
|
||||
else if ((Control.ModifierKeys & (Keys.Control | Keys.Alt)) != 0) return;
|
||||
|
||||
e.Handled = true;
|
||||
SystemSounds.Beep.Play();
|
||||
}
|
||||
protected override void ValidateEditText()
|
||||
{
|
||||
try
|
||||
{
|
||||
this.value = Single.Parse(this.Text);
|
||||
UpdateEditText();
|
||||
}
|
||||
catch (FormatException ex)
|
||||
{
|
||||
if (this.Text.Equals("NaN", StringComparison.InvariantCultureIgnoreCase))
|
||||
this.value = Single.NaN;
|
||||
else if (this.Text.Equals("Inf", StringComparison.InvariantCultureIgnoreCase))
|
||||
this.value = Single.PositiveInfinity;
|
||||
else if (this.Text.Equals("+Inf", StringComparison.InvariantCultureIgnoreCase))
|
||||
this.value = Single.PositiveInfinity;
|
||||
else if (this.Text.Equals("-Inf", StringComparison.InvariantCultureIgnoreCase))
|
||||
this.value = Single.NegativeInfinity;
|
||||
UpdateEditText();
|
||||
}
|
||||
catch (OverflowException ex)
|
||||
{
|
||||
if (this.Text.StartsWith("-")) this.Value = Single.MinValue;
|
||||
else this.value = Single.MaxValue;
|
||||
UpdateEditText();
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Leave value alone
|
||||
}
|
||||
finally
|
||||
{
|
||||
UserEdit = false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,100 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Media;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace W4Gui
|
||||
{
|
||||
public class IntNumericUpDown : UpDownBase
|
||||
{
|
||||
private int value = 0;
|
||||
private bool updating = false;
|
||||
public int Value
|
||||
{
|
||||
get
|
||||
{
|
||||
if (this.UserEdit) ValidateEditText();
|
||||
return this.value;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.value = value;
|
||||
UpdateEditText();
|
||||
}
|
||||
}
|
||||
|
||||
public override void DownButton()
|
||||
{
|
||||
try
|
||||
{
|
||||
this.Value--;
|
||||
}
|
||||
catch (OverflowException) { this.Value = Int32.MinValue; };
|
||||
}
|
||||
|
||||
public override void UpButton()
|
||||
{
|
||||
try
|
||||
{
|
||||
this.Value++;
|
||||
}
|
||||
catch (Exception) { this.Value = Int32.MaxValue; };
|
||||
}
|
||||
|
||||
|
||||
protected override void UpdateEditText()
|
||||
{
|
||||
if (this.updating) return;
|
||||
|
||||
this.updating = true;
|
||||
this.Text = this.Value.ToString();
|
||||
this.updating = false;
|
||||
}
|
||||
|
||||
protected override void OnTextBoxKeyPress(object? source, KeyPressEventArgs e)
|
||||
{
|
||||
base.OnTextBoxKeyPress(source, e);
|
||||
|
||||
if (Char.IsDigit(e.KeyChar)) return;
|
||||
else if ("-\b".Contains(e.KeyChar.ToString().ToLower().First())) return;
|
||||
else if ((Control.ModifierKeys & (Keys.Control | Keys.Alt)) != 0) return;
|
||||
|
||||
e.Handled = true;
|
||||
SystemSounds.Beep.Play();
|
||||
}
|
||||
|
||||
protected override void OnLostFocus(EventArgs e)
|
||||
{
|
||||
base.OnLostFocus(e);
|
||||
if (UserEdit)
|
||||
{
|
||||
UpdateEditText();
|
||||
}
|
||||
}
|
||||
protected override void ValidateEditText()
|
||||
{
|
||||
try
|
||||
{
|
||||
this.value = Int32.Parse(this.Text);
|
||||
UpdateEditText();
|
||||
}
|
||||
catch (OverflowException ex)
|
||||
{
|
||||
if(this.Text.StartsWith("-")) this.Value = Int32.MinValue;
|
||||
else this.Value = Int32.MaxValue;
|
||||
}
|
||||
catch
|
||||
{
|
||||
UpdateEditText();
|
||||
}
|
||||
finally
|
||||
{
|
||||
UserEdit = false;
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,156 @@
|
|||
namespace W4Gui
|
||||
{
|
||||
partial class ListWithAddAndDel
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.tableWListAndButtons = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.lst = new System.Windows.Forms.ListBox();
|
||||
this.addDelButtonDivisor = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.updateBtn = new System.Windows.Forms.Button();
|
||||
this.delBtn = new System.Windows.Forms.Button();
|
||||
this.addBtn = new System.Windows.Forms.Button();
|
||||
this.newEntry = new System.Windows.Forms.TextBox();
|
||||
this.tableWListAndButtons.SuspendLayout();
|
||||
this.addDelButtonDivisor.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tableWListAndButtons
|
||||
//
|
||||
this.tableWListAndButtons.ColumnCount = 1;
|
||||
this.tableWListAndButtons.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableWListAndButtons.Controls.Add(this.lst, 0, 0);
|
||||
this.tableWListAndButtons.Controls.Add(this.addDelButtonDivisor, 0, 2);
|
||||
this.tableWListAndButtons.Controls.Add(this.newEntry, 0, 1);
|
||||
this.tableWListAndButtons.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableWListAndButtons.Location = new System.Drawing.Point(0, 0);
|
||||
this.tableWListAndButtons.Name = "tableWListAndButtons";
|
||||
this.tableWListAndButtons.RowCount = 2;
|
||||
this.tableWListAndButtons.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableWListAndButtons.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableWListAndButtons.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableWListAndButtons.Size = new System.Drawing.Size(517, 190);
|
||||
this.tableWListAndButtons.TabIndex = 21;
|
||||
//
|
||||
// lst
|
||||
//
|
||||
this.lst.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lst.FormattingEnabled = true;
|
||||
this.lst.ItemHeight = 15;
|
||||
this.lst.Location = new System.Drawing.Point(3, 3);
|
||||
this.lst.Name = "lst";
|
||||
this.lst.ScrollAlwaysVisible = true;
|
||||
this.lst.Size = new System.Drawing.Size(511, 106);
|
||||
this.lst.TabIndex = 0;
|
||||
this.lst.SelectedIndexChanged += new System.EventHandler(this.lst_SelectedIndexChanged);
|
||||
this.lst.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lst_KeyDown);
|
||||
//
|
||||
// addDelButtonDivisor
|
||||
//
|
||||
this.addDelButtonDivisor.ColumnCount = 3;
|
||||
this.addDelButtonDivisor.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
|
||||
this.addDelButtonDivisor.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
|
||||
this.addDelButtonDivisor.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
|
||||
this.addDelButtonDivisor.Controls.Add(this.updateBtn, 0, 0);
|
||||
this.addDelButtonDivisor.Controls.Add(this.delBtn, 2, 0);
|
||||
this.addDelButtonDivisor.Controls.Add(this.addBtn, 0, 0);
|
||||
this.addDelButtonDivisor.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.addDelButtonDivisor.Location = new System.Drawing.Point(3, 144);
|
||||
this.addDelButtonDivisor.Name = "addDelButtonDivisor";
|
||||
this.addDelButtonDivisor.RowCount = 1;
|
||||
this.addDelButtonDivisor.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.addDelButtonDivisor.Size = new System.Drawing.Size(511, 43);
|
||||
this.addDelButtonDivisor.TabIndex = 1;
|
||||
//
|
||||
// updateBtn
|
||||
//
|
||||
this.updateBtn.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.updateBtn.Location = new System.Drawing.Point(173, 3);
|
||||
this.updateBtn.Name = "updateBtn";
|
||||
this.updateBtn.Size = new System.Drawing.Size(164, 37);
|
||||
this.updateBtn.TabIndex = 2;
|
||||
this.updateBtn.Text = "Update";
|
||||
this.updateBtn.UseVisualStyleBackColor = true;
|
||||
this.updateBtn.Click += new System.EventHandler(this.updateBtn_Click);
|
||||
//
|
||||
// delBtn
|
||||
//
|
||||
this.delBtn.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.delBtn.Location = new System.Drawing.Point(343, 3);
|
||||
this.delBtn.Name = "delBtn";
|
||||
this.delBtn.Size = new System.Drawing.Size(165, 37);
|
||||
this.delBtn.TabIndex = 1;
|
||||
this.delBtn.Text = "Delete";
|
||||
this.delBtn.UseVisualStyleBackColor = true;
|
||||
this.delBtn.Click += new System.EventHandler(this.delBtn_Click);
|
||||
//
|
||||
// addBtn
|
||||
//
|
||||
this.addBtn.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.addBtn.Location = new System.Drawing.Point(3, 3);
|
||||
this.addBtn.Name = "addBtn";
|
||||
this.addBtn.Size = new System.Drawing.Size(164, 37);
|
||||
this.addBtn.TabIndex = 0;
|
||||
this.addBtn.Text = "Add";
|
||||
this.addBtn.UseVisualStyleBackColor = true;
|
||||
this.addBtn.Click += new System.EventHandler(this.addBtn_Click);
|
||||
//
|
||||
// newEntry
|
||||
//
|
||||
this.newEntry.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.newEntry.Location = new System.Drawing.Point(3, 115);
|
||||
this.newEntry.Name = "newEntry";
|
||||
this.newEntry.PlaceholderText = "Enter Text";
|
||||
this.newEntry.Size = new System.Drawing.Size(511, 23);
|
||||
this.newEntry.TabIndex = 4;
|
||||
this.newEntry.KeyDown += new System.Windows.Forms.KeyEventHandler(this.newEntry_KeyDown);
|
||||
//
|
||||
// ListWithAddAndDel
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.tableWListAndButtons);
|
||||
this.Name = "ListWithAddAndDel";
|
||||
this.Size = new System.Drawing.Size(517, 190);
|
||||
this.tableWListAndButtons.ResumeLayout(false);
|
||||
this.tableWListAndButtons.PerformLayout();
|
||||
this.addDelButtonDivisor.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private TableLayoutPanel tableWListAndButtons;
|
||||
private ListBox lst;
|
||||
private TableLayoutPanel addDelButtonDivisor;
|
||||
private Button delBtn;
|
||||
private Button addBtn;
|
||||
private TextBox newEntry;
|
||||
private Button updateBtn;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,88 @@
|
|||
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 ListWithAddAndDel : UserControl
|
||||
{
|
||||
public ListWithAddAndDel()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public string[] Items
|
||||
{
|
||||
get
|
||||
{
|
||||
int itmCnt = lst.Items.Count;
|
||||
string[] items = new string[itmCnt];
|
||||
for (int i = 0; i < itmCnt; i++)
|
||||
items[i] = lst.Items[i].ToString();
|
||||
|
||||
return items;
|
||||
}
|
||||
}
|
||||
public void Clear()
|
||||
{
|
||||
lst.Items.Clear();
|
||||
}
|
||||
public void AddItem(string item)
|
||||
{
|
||||
if(item.Trim() != "")
|
||||
lst.Items.Add(item);
|
||||
}
|
||||
|
||||
private void addBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
string val = newEntry.Text.Trim();
|
||||
AddItem(val);
|
||||
}
|
||||
|
||||
private void delBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
int sel = lst.SelectedIndex;
|
||||
if (sel >= 0)
|
||||
lst.Items.RemoveAt(sel);
|
||||
}
|
||||
|
||||
private void updateBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
int sel = lst.SelectedIndex;
|
||||
if(sel >= 0)
|
||||
lst.Items[sel] = newEntry.Text.Trim();
|
||||
}
|
||||
|
||||
private void newEntry_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if(e.KeyData == Keys.Enter)
|
||||
{
|
||||
e.Handled = true;
|
||||
updateBtn_Click(sender, e);
|
||||
}
|
||||
}
|
||||
|
||||
private void lst_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if(e.KeyData == Keys.Delete)
|
||||
{
|
||||
e.Handled = true;
|
||||
delBtn_Click(sender, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void lst_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (lst.SelectedIndex >= 0)
|
||||
newEntry.Text = lst.Items[lst.SelectedIndex].ToString();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
<root>
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
|
@ -0,0 +1,352 @@
|
|||
namespace W4Gui
|
||||
{
|
||||
partial class Main
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.mainMenuStrip = new System.Windows.Forms.MenuStrip();
|
||||
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mainTabControl = new System.Windows.Forms.TabControl();
|
||||
this.weaponsPage = new System.Windows.Forms.TabPage();
|
||||
this.weaponSplitContainer = new System.Windows.Forms.SplitContainer();
|
||||
this.weaponList = new System.Windows.Forms.ListBox();
|
||||
this.weaponClusterTabControl = new System.Windows.Forms.TabControl();
|
||||
this.mainWeaponPage = new System.Windows.Forms.TabPage();
|
||||
this.weaponPanel = new W4Gui.WeaponsPanel();
|
||||
this.clustersPage = new System.Windows.Forms.TabPage();
|
||||
this.clusterPanel = new W4Gui.WeaponsPanel();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.comboBox1 = new System.Windows.Forms.ComboBox();
|
||||
this.tableLayoutPanel11 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.label21 = new System.Windows.Forms.Label();
|
||||
this.label22 = new System.Windows.Forms.Label();
|
||||
this.mainMenuStrip.SuspendLayout();
|
||||
this.mainTabControl.SuspendLayout();
|
||||
this.weaponsPage.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.weaponSplitContainer)).BeginInit();
|
||||
this.weaponSplitContainer.Panel1.SuspendLayout();
|
||||
this.weaponSplitContainer.Panel2.SuspendLayout();
|
||||
this.weaponSplitContainer.SuspendLayout();
|
||||
this.weaponClusterTabControl.SuspendLayout();
|
||||
this.mainWeaponPage.SuspendLayout();
|
||||
this.clustersPage.SuspendLayout();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.tableLayoutPanel11.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// mainMenuStrip
|
||||
//
|
||||
this.mainMenuStrip.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.mainMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.fileToolStripMenuItem});
|
||||
this.mainMenuStrip.Location = new System.Drawing.Point(0, 0);
|
||||
this.mainMenuStrip.Name = "mainMenuStrip";
|
||||
this.mainMenuStrip.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
|
||||
this.mainMenuStrip.Size = new System.Drawing.Size(947, 24);
|
||||
this.mainMenuStrip.TabIndex = 0;
|
||||
this.mainMenuStrip.Text = "Menu Strip";
|
||||
//
|
||||
// fileToolStripMenuItem
|
||||
//
|
||||
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.openToolStripMenuItem,
|
||||
this.saveToolStripMenuItem});
|
||||
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
|
||||
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
|
||||
this.fileToolStripMenuItem.Text = "File";
|
||||
//
|
||||
// openToolStripMenuItem
|
||||
//
|
||||
this.openToolStripMenuItem.Name = "openToolStripMenuItem";
|
||||
this.openToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||
this.openToolStripMenuItem.Text = "Open";
|
||||
this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click);
|
||||
//
|
||||
// saveToolStripMenuItem
|
||||
//
|
||||
this.saveToolStripMenuItem.Enabled = false;
|
||||
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
|
||||
this.saveToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||
this.saveToolStripMenuItem.Text = "Save";
|
||||
this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click);
|
||||
//
|
||||
// mainTabControl
|
||||
//
|
||||
this.mainTabControl.Controls.Add(this.weaponsPage);
|
||||
this.mainTabControl.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.mainTabControl.Enabled = false;
|
||||
this.mainTabControl.HotTrack = true;
|
||||
this.mainTabControl.Location = new System.Drawing.Point(0, 24);
|
||||
this.mainTabControl.Name = "mainTabControl";
|
||||
this.mainTabControl.SelectedIndex = 0;
|
||||
this.mainTabControl.Size = new System.Drawing.Size(947, 735);
|
||||
this.mainTabControl.TabIndex = 1;
|
||||
//
|
||||
// weaponsPage
|
||||
//
|
||||
this.weaponsPage.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.weaponsPage.Controls.Add(this.weaponSplitContainer);
|
||||
this.weaponsPage.Location = new System.Drawing.Point(4, 24);
|
||||
this.weaponsPage.Name = "weaponsPage";
|
||||
this.weaponsPage.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.weaponsPage.Size = new System.Drawing.Size(939, 707);
|
||||
this.weaponsPage.TabIndex = 0;
|
||||
this.weaponsPage.Text = "Weapons";
|
||||
this.weaponsPage.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// weaponSplitContainer
|
||||
//
|
||||
this.weaponSplitContainer.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.weaponSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.weaponSplitContainer.Location = new System.Drawing.Point(3, 3);
|
||||
this.weaponSplitContainer.Name = "weaponSplitContainer";
|
||||
//
|
||||
// weaponSplitContainer.Panel1
|
||||
//
|
||||
this.weaponSplitContainer.Panel1.Controls.Add(this.weaponList);
|
||||
//
|
||||
// weaponSplitContainer.Panel2
|
||||
//
|
||||
this.weaponSplitContainer.Panel2.Controls.Add(this.weaponClusterTabControl);
|
||||
this.weaponSplitContainer.Size = new System.Drawing.Size(929, 697);
|
||||
this.weaponSplitContainer.SplitterDistance = 308;
|
||||
this.weaponSplitContainer.TabIndex = 0;
|
||||
//
|
||||
// weaponList
|
||||
//
|
||||
this.weaponList.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.weaponList.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.weaponList.FormattingEnabled = true;
|
||||
this.weaponList.ItemHeight = 15;
|
||||
this.weaponList.Location = new System.Drawing.Point(0, 0);
|
||||
this.weaponList.Name = "weaponList";
|
||||
this.weaponList.Size = new System.Drawing.Size(304, 693);
|
||||
this.weaponList.TabIndex = 0;
|
||||
this.weaponList.SelectedIndexChanged += new System.EventHandler(this.weaponList_SelectedIndexChanged);
|
||||
//
|
||||
// weaponClusterTabControl
|
||||
//
|
||||
this.weaponClusterTabControl.Controls.Add(this.mainWeaponPage);
|
||||
this.weaponClusterTabControl.Controls.Add(this.clustersPage);
|
||||
this.weaponClusterTabControl.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.weaponClusterTabControl.HotTrack = true;
|
||||
this.weaponClusterTabControl.Location = new System.Drawing.Point(0, 0);
|
||||
this.weaponClusterTabControl.Name = "weaponClusterTabControl";
|
||||
this.weaponClusterTabControl.SelectedIndex = 0;
|
||||
this.weaponClusterTabControl.Size = new System.Drawing.Size(613, 693);
|
||||
this.weaponClusterTabControl.TabIndex = 0;
|
||||
//
|
||||
// mainWeaponPage
|
||||
//
|
||||
this.mainWeaponPage.BackColor = System.Drawing.Color.LightGray;
|
||||
this.mainWeaponPage.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.mainWeaponPage.Controls.Add(this.weaponPanel);
|
||||
this.mainWeaponPage.Location = new System.Drawing.Point(4, 24);
|
||||
this.mainWeaponPage.Name = "mainWeaponPage";
|
||||
this.mainWeaponPage.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.mainWeaponPage.Size = new System.Drawing.Size(605, 665);
|
||||
this.mainWeaponPage.TabIndex = 0;
|
||||
this.mainWeaponPage.Text = "Main Weapon";
|
||||
//
|
||||
// weaponPanel
|
||||
//
|
||||
this.weaponPanel.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.weaponPanel.Location = new System.Drawing.Point(3, 3);
|
||||
this.weaponPanel.Name = "weaponPanel";
|
||||
this.weaponPanel.Size = new System.Drawing.Size(595, 655);
|
||||
this.weaponPanel.TabIndex = 0;
|
||||
//
|
||||
// clustersPage
|
||||
//
|
||||
this.clustersPage.BackColor = System.Drawing.Color.LightGray;
|
||||
this.clustersPage.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.clustersPage.Controls.Add(this.clusterPanel);
|
||||
this.clustersPage.Location = new System.Drawing.Point(4, 24);
|
||||
this.clustersPage.Name = "clustersPage";
|
||||
this.clustersPage.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.clustersPage.Size = new System.Drawing.Size(192, 72);
|
||||
this.clustersPage.TabIndex = 1;
|
||||
this.clustersPage.Text = "Clusters";
|
||||
//
|
||||
// clusterPanel
|
||||
//
|
||||
this.clusterPanel.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.clusterPanel.Location = new System.Drawing.Point(3, 3);
|
||||
this.clusterPanel.Name = "clusterPanel";
|
||||
this.clusterPanel.Size = new System.Drawing.Size(182, 62);
|
||||
this.clusterPanel.TabIndex = 1;
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Location = new System.Drawing.Point(0, 0);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(200, 100);
|
||||
this.groupBox1.TabIndex = 0;
|
||||
this.groupBox1.TabStop = false;
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
this.tableLayoutPanel1.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Inset;
|
||||
this.tableLayoutPanel1.ColumnCount = 2;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.Controls.Add(this.label1, 0, 1);
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 2;
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(200, 100);
|
||||
this.tableLayoutPanel1.TabIndex = 0;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.label1.Location = new System.Drawing.Point(5, 4);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(83, 94);
|
||||
this.label1.TabIndex = 7;
|
||||
this.label1.Text = "Weapon Type:";
|
||||
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// comboBox1
|
||||
//
|
||||
this.comboBox1.DisplayMember = "0";
|
||||
this.comboBox1.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBox1.FormattingEnabled = true;
|
||||
this.comboBox1.Items.AddRange(new object[] {
|
||||
"Air Strike",
|
||||
"Launched",
|
||||
"Thrown"});
|
||||
this.comboBox1.Location = new System.Drawing.Point(96, 7);
|
||||
this.comboBox1.Name = "comboBox1";
|
||||
this.comboBox1.Size = new System.Drawing.Size(651, 23);
|
||||
this.comboBox1.TabIndex = 6;
|
||||
//
|
||||
// tableLayoutPanel11
|
||||
//
|
||||
this.tableLayoutPanel11.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Inset;
|
||||
this.tableLayoutPanel11.ColumnCount = 2;
|
||||
this.tableLayoutPanel11.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel11.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel11.Controls.Add(this.label21, 0, 4);
|
||||
this.tableLayoutPanel11.Location = new System.Drawing.Point(0, 0);
|
||||
this.tableLayoutPanel11.Name = "tableLayoutPanel11";
|
||||
this.tableLayoutPanel11.RowCount = 5;
|
||||
this.tableLayoutPanel11.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel11.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel11.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel11.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel11.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel11.Size = new System.Drawing.Size(200, 100);
|
||||
this.tableLayoutPanel11.TabIndex = 0;
|
||||
//
|
||||
// label21
|
||||
//
|
||||
this.label21.AutoSize = true;
|
||||
this.label21.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label21.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.label21.Location = new System.Drawing.Point(5, 90);
|
||||
this.label21.Name = "label21";
|
||||
this.label21.Size = new System.Drawing.Size(117, 20);
|
||||
this.label21.TabIndex = 14;
|
||||
this.label21.Text = "Max Throw Strength:";
|
||||
this.label21.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// label22
|
||||
//
|
||||
this.label22.AutoSize = true;
|
||||
this.label22.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label22.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.label22.Location = new System.Drawing.Point(5, 8);
|
||||
this.label22.Name = "label22";
|
||||
this.label22.Size = new System.Drawing.Size(117, 15);
|
||||
this.label22.TabIndex = 13;
|
||||
this.label22.Text = "Blast DMG Radius:";
|
||||
this.label22.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// Main
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.LightGray;
|
||||
this.ClientSize = new System.Drawing.Size(947, 759);
|
||||
this.Controls.Add(this.mainTabControl);
|
||||
this.Controls.Add(this.mainMenuStrip);
|
||||
this.MainMenuStrip = this.mainMenuStrip;
|
||||
this.Name = "Main";
|
||||
this.Text = "Worms 4: Mayhem! (Save Editor)";
|
||||
this.Load += new System.EventHandler(this.W4Gui_Load);
|
||||
this.mainMenuStrip.ResumeLayout(false);
|
||||
this.mainMenuStrip.PerformLayout();
|
||||
this.mainTabControl.ResumeLayout(false);
|
||||
this.weaponsPage.ResumeLayout(false);
|
||||
this.weaponSplitContainer.Panel1.ResumeLayout(false);
|
||||
this.weaponSplitContainer.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.weaponSplitContainer)).EndInit();
|
||||
this.weaponSplitContainer.ResumeLayout(false);
|
||||
this.weaponClusterTabControl.ResumeLayout(false);
|
||||
this.mainWeaponPage.ResumeLayout(false);
|
||||
this.clustersPage.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.PerformLayout();
|
||||
this.tableLayoutPanel11.ResumeLayout(false);
|
||||
this.tableLayoutPanel11.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private MenuStrip mainMenuStrip;
|
||||
private ToolStripMenuItem fileToolStripMenuItem;
|
||||
private ToolStripMenuItem openToolStripMenuItem;
|
||||
private ToolStripMenuItem saveToolStripMenuItem;
|
||||
private TabControl mainTabControl;
|
||||
private TabPage weaponsPage;
|
||||
private SplitContainer weaponSplitContainer;
|
||||
private ListBox weaponList;
|
||||
private TabControl weaponClusterTabControl;
|
||||
private TabPage mainWeaponPage;
|
||||
private TabPage clustersPage;
|
||||
private GroupBox groupBox1;
|
||||
private TableLayoutPanel tableLayoutPanel1;
|
||||
private Label label1;
|
||||
private ComboBox comboBox1;
|
||||
private TableLayoutPanel tableLayoutPanel11;
|
||||
private Label label21;
|
||||
private Label label22;
|
||||
private WeaponsPanel weaponPanel;
|
||||
private WeaponsPanel clusterPanel;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,114 @@
|
|||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
<root>
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="mainMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>12, 15</value>
|
||||
</metadata>
|
||||
</root>
|
|
@ -0,0 +1,17 @@
|
|||
namespace W4Gui
|
||||
{
|
||||
internal static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
// To customize application configuration such as set high DPI settings or default font,
|
||||
// see https://aka.ms/applicationconfiguration.
|
||||
ApplicationConfiguration.Initialize();
|
||||
Application.Run(new Main());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
https://go.microsoft.com/fwlink/?LinkID=208121.
|
||||
-->
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Any CPU</Platform>
|
||||
<PublishDir>bin\Release\net7.0-windows\publish\win-x64\</PublishDir>
|
||||
<PublishProtocol>FileSystem</PublishProtocol>
|
||||
<_TargetId>Folder</_TargetId>
|
||||
<TargetFramework>net7.0-windows</TargetFramework>
|
||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||
<SelfContained>true</SelfContained>
|
||||
<PublishSingleFile>true</PublishSingleFile>
|
||||
<PublishReadyToRun>true</PublishReadyToRun>
|
||||
</PropertyGroup>
|
||||
</Project>
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
https://go.microsoft.com/fwlink/?LinkID=208121.
|
||||
-->
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<History>True|2023-01-11T09:16:55.3469226Z;</History>
|
||||
<LastFailureDetails />
|
||||
</PropertyGroup>
|
||||
</Project>
|
|
@ -0,0 +1,63 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace W4Gui.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("W4Gui.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
|
@ -0,0 +1,37 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net7.0-windows</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Update="IntNumericUpDown.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Update="Properties\Resources.Designer.cs">
|
||||
<DesignTime>True</DesignTime>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Update="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Resources\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\LibW4M\LibW4M.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<_LastSelectedProfileId>C:\Users\Li\Documents\git\Worms4Editor\W4Gui\Properties\PublishProfiles\FolderProfile.pubxml</_LastSelectedProfileId>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Update="FloatNumericUpDown.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Update="ListWithAddAndDel.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Update="Main.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Update="WeaponsPanel.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -0,0 +1,961 @@
|
|||
namespace W4Gui
|
||||
{
|
||||
partial class WeaponsPanel
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WeaponsPanel));
|
||||
this.weaponTabsControl = new System.Windows.Forms.TabControl();
|
||||
this.generalTab = new System.Windows.Forms.TabPage();
|
||||
this.generalTable = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.selDetonation = new System.Windows.Forms.ComboBox();
|
||||
this.lblDetonation = new System.Windows.Forms.Label();
|
||||
this.lblFuseTime = new System.Windows.Forms.Label();
|
||||
this.selRetreatTime = new IntNumericUpDown();
|
||||
this.lblRetreatTime = new System.Windows.Forms.Label();
|
||||
this.lblWeapType = new System.Windows.Forms.Label();
|
||||
this.lblWeapName = new System.Windows.Forms.Label();
|
||||
this.selFuseTime = new IntNumericUpDown();
|
||||
this.selType = new System.Windows.Forms.ComboBox();
|
||||
this.selName = new System.Windows.Forms.TextBox();
|
||||
this.lblGeneralHint = new System.Windows.Forms.Label();
|
||||
this.powerTab = new System.Windows.Forms.TabPage();
|
||||
this.powerTable = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.lblPowerHint = new System.Windows.Forms.Label();
|
||||
this.lblMaxThrowStr = new System.Windows.Forms.Label();
|
||||
this.lblBlastDmgRad = new System.Windows.Forms.Label();
|
||||
this.selLandDmgRad = new FloatNumericUpDown();
|
||||
this.lblLandDmgRad = new System.Windows.Forms.Label();
|
||||
this.selWormDmgMag = new FloatNumericUpDown();
|
||||
this.lblWormDmgStr = new System.Windows.Forms.Label();
|
||||
this.lblWormDmgRad = new System.Windows.Forms.Label();
|
||||
this.selWormDmgRad = new FloatNumericUpDown();
|
||||
this.selBlastDmgRad = new FloatNumericUpDown();
|
||||
this.selMaxThrowStr = new FloatNumericUpDown();
|
||||
this.clusterTab = new System.Windows.Forms.TabPage();
|
||||
this.clusterTable = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.lblClustersHint = new System.Windows.Forms.Label();
|
||||
this.selClusterMaxSpeed = new FloatNumericUpDown();
|
||||
this.lblClusterSpeedMax = new System.Windows.Forms.Label();
|
||||
this.selClusterSpread = new FloatNumericUpDown();
|
||||
this.lblClusterSpread = new System.Windows.Forms.Label();
|
||||
this.lblNumCluster = new System.Windows.Forms.Label();
|
||||
this.selNumCluster = new IntNumericUpDown();
|
||||
this.technicalTab = new System.Windows.Forms.TabPage();
|
||||
this.technicalTable = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.lblTechnicalHint = new System.Windows.Forms.Label();
|
||||
this.lblGraphicsResIds = new System.Windows.Forms.Label();
|
||||
this.lblGraphicsLocIds = new System.Windows.Forms.Label();
|
||||
this.selLaunchFx = new System.Windows.Forms.TextBox();
|
||||
this.selArielFx = new System.Windows.Forms.TextBox();
|
||||
this.selDetonationFx = new System.Windows.Forms.TextBox();
|
||||
this.lblDetonationFx = new System.Windows.Forms.Label();
|
||||
this.lblArielFx = new System.Windows.Forms.Label();
|
||||
this.lblLaunchFx = new System.Windows.Forms.Label();
|
||||
this.selCollisionRad = new FloatNumericUpDown();
|
||||
this.lblColRad = new System.Windows.Forms.Label();
|
||||
this.selPayloadId = new IntNumericUpDown();
|
||||
this.lblPayloadId = new System.Windows.Forms.Label();
|
||||
this.selGraphicalResoures = new W4Gui.ListWithAddAndDel();
|
||||
this.selGraphicalLocators = new W4Gui.ListWithAddAndDel();
|
||||
this.togglesTab = new System.Windows.Forms.TabPage();
|
||||
this.togglesTable = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.selHoming = new System.Windows.Forms.CheckBox();
|
||||
this.selPowerUpLaunch = new System.Windows.Forms.CheckBox();
|
||||
this.selAdvancedHoming = new System.Windows.Forms.CheckBox();
|
||||
this.selFireOnGround = new System.Windows.Forms.CheckBox();
|
||||
this.selPoison = new System.Windows.Forms.CheckBox();
|
||||
this.selWindEffected = new System.Windows.Forms.CheckBox();
|
||||
this.weaponTabsControl.SuspendLayout();
|
||||
this.generalTab.SuspendLayout();
|
||||
this.generalTable.SuspendLayout();
|
||||
this.powerTab.SuspendLayout();
|
||||
this.powerTable.SuspendLayout();
|
||||
this.clusterTab.SuspendLayout();
|
||||
this.clusterTable.SuspendLayout();
|
||||
this.technicalTab.SuspendLayout();
|
||||
this.technicalTable.SuspendLayout();
|
||||
this.togglesTab.SuspendLayout();
|
||||
this.togglesTable.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// weaponTabsControl
|
||||
//
|
||||
this.weaponTabsControl.Controls.Add(this.generalTab);
|
||||
this.weaponTabsControl.Controls.Add(this.powerTab);
|
||||
this.weaponTabsControl.Controls.Add(this.clusterTab);
|
||||
this.weaponTabsControl.Controls.Add(this.technicalTab);
|
||||
this.weaponTabsControl.Controls.Add(this.togglesTab);
|
||||
this.weaponTabsControl.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.weaponTabsControl.Location = new System.Drawing.Point(0, 0);
|
||||
this.weaponTabsControl.Name = "weaponTabsControl";
|
||||
this.weaponTabsControl.SelectedIndex = 0;
|
||||
this.weaponTabsControl.Size = new System.Drawing.Size(653, 428);
|
||||
this.weaponTabsControl.TabIndex = 9;
|
||||
//
|
||||
// generalTab
|
||||
//
|
||||
this.generalTab.AutoScroll = true;
|
||||
this.generalTab.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.generalTab.Controls.Add(this.generalTable);
|
||||
this.generalTab.Location = new System.Drawing.Point(4, 24);
|
||||
this.generalTab.Name = "generalTab";
|
||||
this.generalTab.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.generalTab.Size = new System.Drawing.Size(645, 400);
|
||||
this.generalTab.TabIndex = 1;
|
||||
this.generalTab.Text = "General";
|
||||
this.generalTab.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// generalTable
|
||||
//
|
||||
this.generalTable.AutoSize = true;
|
||||
this.generalTable.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Inset;
|
||||
this.generalTable.ColumnCount = 2;
|
||||
this.generalTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.generalTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.generalTable.Controls.Add(this.selDetonation, 1, 1);
|
||||
this.generalTable.Controls.Add(this.lblDetonation, 0, 1);
|
||||
this.generalTable.Controls.Add(this.lblFuseTime, 0, 4);
|
||||
this.generalTable.Controls.Add(this.selRetreatTime, 1, 3);
|
||||
this.generalTable.Controls.Add(this.lblRetreatTime, 0, 3);
|
||||
this.generalTable.Controls.Add(this.lblWeapType, 0, 2);
|
||||
this.generalTable.Controls.Add(this.lblWeapName, 0, 0);
|
||||
this.generalTable.Controls.Add(this.selFuseTime, 1, 4);
|
||||
this.generalTable.Controls.Add(this.selType, 1, 2);
|
||||
this.generalTable.Controls.Add(this.selName, 1, 0);
|
||||
this.generalTable.Controls.Add(this.lblGeneralHint, 1, 5);
|
||||
this.generalTable.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.generalTable.Location = new System.Drawing.Point(3, 3);
|
||||
this.generalTable.Name = "generalTable";
|
||||
this.generalTable.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.generalTable.RowCount = 6;
|
||||
this.generalTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.generalTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.generalTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.generalTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.generalTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.generalTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.generalTable.Size = new System.Drawing.Size(635, 195);
|
||||
this.generalTable.TabIndex = 6;
|
||||
//
|
||||
// selDetonation
|
||||
//
|
||||
this.selDetonation.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.selDetonation.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.selDetonation.FormattingEnabled = true;
|
||||
this.selDetonation.Items.AddRange(new object[] {
|
||||
"Impact",
|
||||
"Fuse",
|
||||
"User",
|
||||
"Stops Moving"});
|
||||
this.selDetonation.Location = new System.Drawing.Point(93, 39);
|
||||
this.selDetonation.Name = "selDetonation";
|
||||
this.selDetonation.Size = new System.Drawing.Size(534, 23);
|
||||
this.selDetonation.TabIndex = 17;
|
||||
//
|
||||
// lblDetonation
|
||||
//
|
||||
this.lblDetonation.AutoSize = true;
|
||||
this.lblDetonation.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblDetonation.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblDetonation.Location = new System.Drawing.Point(8, 36);
|
||||
this.lblDetonation.Name = "lblDetonation";
|
||||
this.lblDetonation.Size = new System.Drawing.Size(77, 29);
|
||||
this.lblDetonation.TabIndex = 16;
|
||||
this.lblDetonation.Text = "Detonation:";
|
||||
this.lblDetonation.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// lblFuseTime
|
||||
//
|
||||
this.lblFuseTime.AutoSize = true;
|
||||
this.lblFuseTime.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblFuseTime.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblFuseTime.Location = new System.Drawing.Point(8, 129);
|
||||
this.lblFuseTime.Name = "lblFuseTime";
|
||||
this.lblFuseTime.Size = new System.Drawing.Size(77, 29);
|
||||
this.lblFuseTime.TabIndex = 13;
|
||||
this.lblFuseTime.Text = "Fuse Time:";
|
||||
this.lblFuseTime.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// selRetreatTime
|
||||
//
|
||||
this.selRetreatTime.AutoSize = true;
|
||||
this.selRetreatTime.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.selRetreatTime.Location = new System.Drawing.Point(93, 101);
|
||||
this.selRetreatTime.Name = "selRetreatTime";
|
||||
this.selRetreatTime.Size = new System.Drawing.Size(534, 23);
|
||||
this.selRetreatTime.TabIndex = 11;
|
||||
//
|
||||
// lblRetreatTime
|
||||
//
|
||||
this.lblRetreatTime.AutoSize = true;
|
||||
this.lblRetreatTime.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblRetreatTime.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblRetreatTime.Location = new System.Drawing.Point(8, 98);
|
||||
this.lblRetreatTime.Name = "lblRetreatTime";
|
||||
this.lblRetreatTime.Size = new System.Drawing.Size(77, 29);
|
||||
this.lblRetreatTime.TabIndex = 10;
|
||||
this.lblRetreatTime.Text = "Retreat Time:";
|
||||
this.lblRetreatTime.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// lblWeapType
|
||||
//
|
||||
this.lblWeapType.AutoSize = true;
|
||||
this.lblWeapType.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblWeapType.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblWeapType.Location = new System.Drawing.Point(8, 67);
|
||||
this.lblWeapType.Name = "lblWeapType";
|
||||
this.lblWeapType.Size = new System.Drawing.Size(77, 29);
|
||||
this.lblWeapType.TabIndex = 7;
|
||||
this.lblWeapType.Text = "Type:";
|
||||
this.lblWeapType.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// lblWeapName
|
||||
//
|
||||
this.lblWeapName.AutoSize = true;
|
||||
this.lblWeapName.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblWeapName.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblWeapName.Location = new System.Drawing.Point(8, 5);
|
||||
this.lblWeapName.Name = "lblWeapName";
|
||||
this.lblWeapName.RightToLeft = System.Windows.Forms.RightToLeft.No;
|
||||
this.lblWeapName.Size = new System.Drawing.Size(77, 29);
|
||||
this.lblWeapName.TabIndex = 0;
|
||||
this.lblWeapName.Text = "Name:";
|
||||
this.lblWeapName.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// selFuseTime
|
||||
//
|
||||
this.selFuseTime.AutoSize = true;
|
||||
this.selFuseTime.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.selFuseTime.Location = new System.Drawing.Point(93, 132);
|
||||
this.selFuseTime.Name = "selFuseTime";
|
||||
this.selFuseTime.Size = new System.Drawing.Size(534, 23);
|
||||
this.selFuseTime.TabIndex = 12;
|
||||
//
|
||||
// selType
|
||||
//
|
||||
this.selType.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.selType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.selType.FormattingEnabled = true;
|
||||
this.selType.Items.AddRange(new object[] {
|
||||
"Air Strike",
|
||||
"Launched",
|
||||
"Thrown"});
|
||||
this.selType.Location = new System.Drawing.Point(93, 70);
|
||||
this.selType.Name = "selType";
|
||||
this.selType.Size = new System.Drawing.Size(534, 23);
|
||||
this.selType.TabIndex = 14;
|
||||
//
|
||||
// selName
|
||||
//
|
||||
this.selName.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.selName.Location = new System.Drawing.Point(93, 8);
|
||||
this.selName.Name = "selName";
|
||||
this.selName.PlaceholderText = "Weapon Name";
|
||||
this.selName.Size = new System.Drawing.Size(534, 23);
|
||||
this.selName.TabIndex = 1;
|
||||
//
|
||||
// lblGeneralHint
|
||||
//
|
||||
this.lblGeneralHint.AutoSize = true;
|
||||
this.lblGeneralHint.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblGeneralHint.Location = new System.Drawing.Point(93, 160);
|
||||
this.lblGeneralHint.Name = "lblGeneralHint";
|
||||
this.lblGeneralHint.Size = new System.Drawing.Size(534, 30);
|
||||
this.lblGeneralHint.TabIndex = 15;
|
||||
this.lblGeneralHint.Text = "* Retreat/Fuse Time of -1 is treated as no timer\r\n\r\n";
|
||||
//
|
||||
// powerTab
|
||||
//
|
||||
this.powerTab.AutoScroll = true;
|
||||
this.powerTab.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.powerTab.Controls.Add(this.powerTable);
|
||||
this.powerTab.Location = new System.Drawing.Point(4, 24);
|
||||
this.powerTab.Name = "powerTab";
|
||||
this.powerTab.Size = new System.Drawing.Size(645, 400);
|
||||
this.powerTab.TabIndex = 2;
|
||||
this.powerTab.Text = "Power";
|
||||
this.powerTab.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// powerTable
|
||||
//
|
||||
this.powerTable.AutoSize = true;
|
||||
this.powerTable.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Inset;
|
||||
this.powerTable.ColumnCount = 2;
|
||||
this.powerTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.powerTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.powerTable.Controls.Add(this.lblPowerHint, 2, 5);
|
||||
this.powerTable.Controls.Add(this.lblMaxThrowStr, 0, 4);
|
||||
this.powerTable.Controls.Add(this.lblBlastDmgRad, 0, 3);
|
||||
this.powerTable.Controls.Add(this.selLandDmgRad, 1, 2);
|
||||
this.powerTable.Controls.Add(this.lblLandDmgRad, 0, 2);
|
||||
this.powerTable.Controls.Add(this.selWormDmgMag, 1, 1);
|
||||
this.powerTable.Controls.Add(this.lblWormDmgStr, 0, 1);
|
||||
this.powerTable.Controls.Add(this.lblWormDmgRad, 0, 0);
|
||||
this.powerTable.Controls.Add(this.selWormDmgRad, 1, 0);
|
||||
this.powerTable.Controls.Add(this.selBlastDmgRad, 1, 3);
|
||||
this.powerTable.Controls.Add(this.selMaxThrowStr, 1, 4);
|
||||
this.powerTable.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.powerTable.Location = new System.Drawing.Point(0, 0);
|
||||
this.powerTable.Name = "powerTable";
|
||||
this.powerTable.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.powerTable.RightToLeft = System.Windows.Forms.RightToLeft.No;
|
||||
this.powerTable.RowCount = 6;
|
||||
this.powerTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.powerTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.powerTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.powerTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.powerTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.powerTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.powerTable.Size = new System.Drawing.Size(641, 255);
|
||||
this.powerTable.TabIndex = 6;
|
||||
//
|
||||
// lblPowerHint
|
||||
//
|
||||
this.lblPowerHint.AutoSize = true;
|
||||
this.lblPowerHint.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblPowerHint.Location = new System.Drawing.Point(137, 160);
|
||||
this.lblPowerHint.Name = "lblPowerHint";
|
||||
this.lblPowerHint.Size = new System.Drawing.Size(496, 90);
|
||||
this.lblPowerHint.TabIndex = 16;
|
||||
this.lblPowerHint.Text = resources.GetString("lblPowerHint.Text");
|
||||
//
|
||||
// lblMaxThrowStr
|
||||
//
|
||||
this.lblMaxThrowStr.AutoSize = true;
|
||||
this.lblMaxThrowStr.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblMaxThrowStr.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblMaxThrowStr.Location = new System.Drawing.Point(8, 129);
|
||||
this.lblMaxThrowStr.Name = "lblMaxThrowStr";
|
||||
this.lblMaxThrowStr.Size = new System.Drawing.Size(121, 29);
|
||||
this.lblMaxThrowStr.TabIndex = 14;
|
||||
this.lblMaxThrowStr.Text = "Max Throw Strength:";
|
||||
this.lblMaxThrowStr.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// lblBlastDmgRad
|
||||
//
|
||||
this.lblBlastDmgRad.AutoSize = true;
|
||||
this.lblBlastDmgRad.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblBlastDmgRad.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblBlastDmgRad.Location = new System.Drawing.Point(8, 98);
|
||||
this.lblBlastDmgRad.Name = "lblBlastDmgRad";
|
||||
this.lblBlastDmgRad.Size = new System.Drawing.Size(121, 29);
|
||||
this.lblBlastDmgRad.TabIndex = 13;
|
||||
this.lblBlastDmgRad.Text = "Blast DMG Radius:";
|
||||
this.lblBlastDmgRad.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// selLandDmgRad
|
||||
//
|
||||
this.selLandDmgRad.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.selLandDmgRad.Location = new System.Drawing.Point(137, 70);
|
||||
this.selLandDmgRad.Name = "selLandDmgRad";
|
||||
this.selLandDmgRad.Size = new System.Drawing.Size(496, 23);
|
||||
this.selLandDmgRad.TabIndex = 11;
|
||||
//
|
||||
// lblLandDmgRad
|
||||
//
|
||||
this.lblLandDmgRad.AutoSize = true;
|
||||
this.lblLandDmgRad.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblLandDmgRad.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblLandDmgRad.Location = new System.Drawing.Point(8, 67);
|
||||
this.lblLandDmgRad.Name = "lblLandDmgRad";
|
||||
this.lblLandDmgRad.Size = new System.Drawing.Size(121, 29);
|
||||
this.lblLandDmgRad.TabIndex = 10;
|
||||
this.lblLandDmgRad.Text = "Land DMG Radius:";
|
||||
this.lblLandDmgRad.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// selWormDmgMag
|
||||
//
|
||||
this.selWormDmgMag.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.selWormDmgMag.Location = new System.Drawing.Point(137, 39);
|
||||
this.selWormDmgMag.Name = "selWormDmgMag";
|
||||
this.selWormDmgMag.Size = new System.Drawing.Size(496, 23);
|
||||
this.selWormDmgMag.TabIndex = 9;
|
||||
//
|
||||
// lblWormDmgStr
|
||||
//
|
||||
this.lblWormDmgStr.AutoSize = true;
|
||||
this.lblWormDmgStr.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblWormDmgStr.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblWormDmgStr.Location = new System.Drawing.Point(8, 36);
|
||||
this.lblWormDmgStr.Name = "lblWormDmgStr";
|
||||
this.lblWormDmgStr.Size = new System.Drawing.Size(121, 29);
|
||||
this.lblWormDmgStr.TabIndex = 7;
|
||||
this.lblWormDmgStr.Text = "Worm DMG Strength:";
|
||||
this.lblWormDmgStr.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// lblWormDmgRad
|
||||
//
|
||||
this.lblWormDmgRad.AutoSize = true;
|
||||
this.lblWormDmgRad.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblWormDmgRad.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblWormDmgRad.Location = new System.Drawing.Point(8, 5);
|
||||
this.lblWormDmgRad.Name = "lblWormDmgRad";
|
||||
this.lblWormDmgRad.Size = new System.Drawing.Size(121, 29);
|
||||
this.lblWormDmgRad.TabIndex = 0;
|
||||
this.lblWormDmgRad.Text = "Worm DMG Radius:";
|
||||
this.lblWormDmgRad.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// selWormDmgRad
|
||||
//
|
||||
this.selWormDmgRad.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.selWormDmgRad.Location = new System.Drawing.Point(137, 8);
|
||||
this.selWormDmgRad.Name = "selWormDmgRad";
|
||||
this.selWormDmgRad.Size = new System.Drawing.Size(496, 23);
|
||||
this.selWormDmgRad.TabIndex = 8;
|
||||
//
|
||||
// selBlastDmgRad
|
||||
//
|
||||
this.selBlastDmgRad.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.selBlastDmgRad.Location = new System.Drawing.Point(137, 101);
|
||||
this.selBlastDmgRad.Name = "selBlastDmgRad";
|
||||
this.selBlastDmgRad.Size = new System.Drawing.Size(496, 23);
|
||||
this.selBlastDmgRad.TabIndex = 12;
|
||||
//
|
||||
// selMaxThrowStr
|
||||
//
|
||||
this.selMaxThrowStr.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.selMaxThrowStr.Location = new System.Drawing.Point(137, 132);
|
||||
this.selMaxThrowStr.Name = "selMaxThrowStr";
|
||||
this.selMaxThrowStr.Size = new System.Drawing.Size(496, 23);
|
||||
this.selMaxThrowStr.TabIndex = 15;
|
||||
//
|
||||
// clusterTab
|
||||
//
|
||||
this.clusterTab.AutoScroll = true;
|
||||
this.clusterTab.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.clusterTab.Controls.Add(this.clusterTable);
|
||||
this.clusterTab.Location = new System.Drawing.Point(4, 24);
|
||||
this.clusterTab.Name = "clusterTab";
|
||||
this.clusterTab.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.clusterTab.Size = new System.Drawing.Size(645, 400);
|
||||
this.clusterTab.TabIndex = 3;
|
||||
this.clusterTab.Text = "Clusters";
|
||||
this.clusterTab.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// clusterTable
|
||||
//
|
||||
this.clusterTable.AutoSize = true;
|
||||
this.clusterTable.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Inset;
|
||||
this.clusterTable.ColumnCount = 2;
|
||||
this.clusterTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.clusterTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.clusterTable.Controls.Add(this.lblClustersHint, 1, 3);
|
||||
this.clusterTable.Controls.Add(this.selClusterMaxSpeed, 1, 2);
|
||||
this.clusterTable.Controls.Add(this.lblClusterSpeedMax, 0, 2);
|
||||
this.clusterTable.Controls.Add(this.selClusterSpread, 1, 1);
|
||||
this.clusterTable.Controls.Add(this.lblClusterSpread, 0, 1);
|
||||
this.clusterTable.Controls.Add(this.lblNumCluster, 0, 0);
|
||||
this.clusterTable.Controls.Add(this.selNumCluster, 1, 0);
|
||||
this.clusterTable.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.clusterTable.Location = new System.Drawing.Point(3, 3);
|
||||
this.clusterTable.Name = "clusterTable";
|
||||
this.clusterTable.RowCount = 4;
|
||||
this.clusterTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.clusterTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.clusterTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.clusterTable.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.clusterTable.Size = new System.Drawing.Size(635, 247);
|
||||
this.clusterTable.TabIndex = 6;
|
||||
//
|
||||
// lblClustersHint
|
||||
//
|
||||
this.lblClustersHint.AutoSize = true;
|
||||
this.lblClustersHint.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblClustersHint.Location = new System.Drawing.Point(126, 95);
|
||||
this.lblClustersHint.Name = "lblClustersHint";
|
||||
this.lblClustersHint.Size = new System.Drawing.Size(504, 150);
|
||||
this.lblClustersHint.TabIndex = 17;
|
||||
this.lblClustersHint.Text = resources.GetString("lblClustersHint.Text");
|
||||
//
|
||||
// selClusterMaxSpeed
|
||||
//
|
||||
this.selClusterMaxSpeed.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.selClusterMaxSpeed.Location = new System.Drawing.Point(126, 67);
|
||||
this.selClusterMaxSpeed.Name = "selClusterMaxSpeed";
|
||||
this.selClusterMaxSpeed.Size = new System.Drawing.Size(504, 23);
|
||||
this.selClusterMaxSpeed.TabIndex = 11;
|
||||
//
|
||||
// lblClusterSpeedMax
|
||||
//
|
||||
this.lblClusterSpeedMax.AutoSize = true;
|
||||
this.lblClusterSpeedMax.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblClusterSpeedMax.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblClusterSpeedMax.Location = new System.Drawing.Point(5, 64);
|
||||
this.lblClusterSpeedMax.Name = "lblClusterSpeedMax";
|
||||
this.lblClusterSpeedMax.Size = new System.Drawing.Size(113, 29);
|
||||
this.lblClusterSpeedMax.TabIndex = 10;
|
||||
this.lblClusterSpeedMax.Text = "Cluster Max Speed:";
|
||||
this.lblClusterSpeedMax.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// selClusterSpread
|
||||
//
|
||||
this.selClusterSpread.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.selClusterSpread.Location = new System.Drawing.Point(126, 36);
|
||||
this.selClusterSpread.Name = "selClusterSpread";
|
||||
this.selClusterSpread.Size = new System.Drawing.Size(504, 23);
|
||||
this.selClusterSpread.TabIndex = 9;
|
||||
//
|
||||
// lblClusterSpread
|
||||
//
|
||||
this.lblClusterSpread.AutoSize = true;
|
||||
this.lblClusterSpread.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblClusterSpread.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblClusterSpread.Location = new System.Drawing.Point(5, 33);
|
||||
this.lblClusterSpread.Name = "lblClusterSpread";
|
||||
this.lblClusterSpread.Size = new System.Drawing.Size(113, 29);
|
||||
this.lblClusterSpread.TabIndex = 7;
|
||||
this.lblClusterSpread.Text = "Cluster Spread:";
|
||||
this.lblClusterSpread.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// lblNumCluster
|
||||
//
|
||||
this.lblNumCluster.AutoSize = true;
|
||||
this.lblNumCluster.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblNumCluster.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblNumCluster.Location = new System.Drawing.Point(5, 2);
|
||||
this.lblNumCluster.Name = "lblNumCluster";
|
||||
this.lblNumCluster.RightToLeft = System.Windows.Forms.RightToLeft.No;
|
||||
this.lblNumCluster.Size = new System.Drawing.Size(113, 29);
|
||||
this.lblNumCluster.TabIndex = 0;
|
||||
this.lblNumCluster.Text = "Number of Clusters:";
|
||||
this.lblNumCluster.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// selNumCluster
|
||||
//
|
||||
this.selNumCluster.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.selNumCluster.Location = new System.Drawing.Point(126, 5);
|
||||
this.selNumCluster.Name = "selNumCluster";
|
||||
this.selNumCluster.Size = new System.Drawing.Size(504, 23);
|
||||
this.selNumCluster.TabIndex = 8;
|
||||
//
|
||||
// technicalTab
|
||||
//
|
||||
this.technicalTab.AutoScroll = true;
|
||||
this.technicalTab.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.technicalTab.Controls.Add(this.technicalTable);
|
||||
this.technicalTab.Location = new System.Drawing.Point(4, 24);
|
||||
this.technicalTab.Name = "technicalTab";
|
||||
this.technicalTab.Size = new System.Drawing.Size(645, 400);
|
||||
this.technicalTab.TabIndex = 4;
|
||||
this.technicalTab.Text = "Technical";
|
||||
this.technicalTab.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// technicalTable
|
||||
//
|
||||
this.technicalTable.AutoSize = true;
|
||||
this.technicalTable.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Inset;
|
||||
this.technicalTable.ColumnCount = 2;
|
||||
this.technicalTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.technicalTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.technicalTable.Controls.Add(this.lblTechnicalHint, 1, 7);
|
||||
this.technicalTable.Controls.Add(this.lblGraphicsResIds, 0, 5);
|
||||
this.technicalTable.Controls.Add(this.lblGraphicsLocIds, 0, 6);
|
||||
this.technicalTable.Controls.Add(this.selLaunchFx, 1, 2);
|
||||
this.technicalTable.Controls.Add(this.selArielFx, 2, 3);
|
||||
this.technicalTable.Controls.Add(this.selDetonationFx, 1, 4);
|
||||
this.technicalTable.Controls.Add(this.lblDetonationFx, 0, 4);
|
||||
this.technicalTable.Controls.Add(this.lblArielFx, 0, 3);
|
||||
this.technicalTable.Controls.Add(this.lblLaunchFx, 0, 2);
|
||||
this.technicalTable.Controls.Add(this.selCollisionRad, 1, 1);
|
||||
this.technicalTable.Controls.Add(this.lblColRad, 0, 1);
|
||||
this.technicalTable.Controls.Add(this.selPayloadId, 1, 0);
|
||||
this.technicalTable.Controls.Add(this.lblPayloadId, 0, 0);
|
||||
this.technicalTable.Controls.Add(this.selGraphicalResoures, 1, 5);
|
||||
this.technicalTable.Controls.Add(this.selGraphicalLocators, 1, 6);
|
||||
this.technicalTable.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.technicalTable.Location = new System.Drawing.Point(0, 0);
|
||||
this.technicalTable.Name = "technicalTable";
|
||||
this.technicalTable.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.technicalTable.RowCount = 8;
|
||||
this.technicalTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.technicalTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.technicalTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.technicalTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.technicalTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.technicalTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.technicalTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.technicalTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.technicalTable.Size = new System.Drawing.Size(624, 625);
|
||||
this.technicalTable.TabIndex = 6;
|
||||
//
|
||||
// lblTechnicalHint
|
||||
//
|
||||
this.lblTechnicalHint.AutoSize = true;
|
||||
this.lblTechnicalHint.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblTechnicalHint.Location = new System.Drawing.Point(132, 545);
|
||||
this.lblTechnicalHint.Name = "lblTechnicalHint";
|
||||
this.lblTechnicalHint.Size = new System.Drawing.Size(484, 75);
|
||||
this.lblTechnicalHint.TabIndex = 24;
|
||||
this.lblTechnicalHint.Text = "* This is information on what graphics to load when your weapon used\r\n\r\n* EDITING" +
|
||||
" THIS HAS A VERY HIGH CHANCE TO CRASH THE GAME\r\n\r\n\r\n";
|
||||
//
|
||||
// lblGraphicsResIds
|
||||
//
|
||||
this.lblGraphicsResIds.AutoSize = true;
|
||||
this.lblGraphicsResIds.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblGraphicsResIds.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblGraphicsResIds.Location = new System.Drawing.Point(8, 160);
|
||||
this.lblGraphicsResIds.Name = "lblGraphicsResIds";
|
||||
this.lblGraphicsResIds.Size = new System.Drawing.Size(116, 185);
|
||||
this.lblGraphicsResIds.TabIndex = 23;
|
||||
this.lblGraphicsResIds.Text = "Graphical Resources:";
|
||||
this.lblGraphicsResIds.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// lblGraphicsLocIds
|
||||
//
|
||||
this.lblGraphicsLocIds.AutoSize = true;
|
||||
this.lblGraphicsLocIds.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblGraphicsLocIds.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblGraphicsLocIds.Location = new System.Drawing.Point(8, 347);
|
||||
this.lblGraphicsLocIds.Name = "lblGraphicsLocIds";
|
||||
this.lblGraphicsLocIds.Size = new System.Drawing.Size(116, 196);
|
||||
this.lblGraphicsLocIds.TabIndex = 22;
|
||||
this.lblGraphicsLocIds.Text = "Graphical Locators:";
|
||||
this.lblGraphicsLocIds.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// selLaunchFx
|
||||
//
|
||||
this.selLaunchFx.AccessibleRole = System.Windows.Forms.AccessibleRole.None;
|
||||
this.selLaunchFx.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.selLaunchFx.Location = new System.Drawing.Point(132, 70);
|
||||
this.selLaunchFx.Name = "selLaunchFx";
|
||||
this.selLaunchFx.PlaceholderText = "Launch FX";
|
||||
this.selLaunchFx.Size = new System.Drawing.Size(484, 23);
|
||||
this.selLaunchFx.TabIndex = 19;
|
||||
//
|
||||
// selArielFx
|
||||
//
|
||||
this.selArielFx.AccessibleRole = System.Windows.Forms.AccessibleRole.None;
|
||||
this.selArielFx.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.selArielFx.Location = new System.Drawing.Point(132, 101);
|
||||
this.selArielFx.Name = "selArielFx";
|
||||
this.selArielFx.PlaceholderText = "Ariel FX";
|
||||
this.selArielFx.Size = new System.Drawing.Size(484, 23);
|
||||
this.selArielFx.TabIndex = 18;
|
||||
//
|
||||
// selDetonationFx
|
||||
//
|
||||
this.selDetonationFx.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.selDetonationFx.Location = new System.Drawing.Point(132, 132);
|
||||
this.selDetonationFx.Name = "selDetonationFx";
|
||||
this.selDetonationFx.PlaceholderText = "Detonation FX";
|
||||
this.selDetonationFx.Size = new System.Drawing.Size(484, 23);
|
||||
this.selDetonationFx.TabIndex = 17;
|
||||
//
|
||||
// lblDetonationFx
|
||||
//
|
||||
this.lblDetonationFx.AutoSize = true;
|
||||
this.lblDetonationFx.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblDetonationFx.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblDetonationFx.Location = new System.Drawing.Point(8, 129);
|
||||
this.lblDetonationFx.Name = "lblDetonationFx";
|
||||
this.lblDetonationFx.Size = new System.Drawing.Size(116, 29);
|
||||
this.lblDetonationFx.TabIndex = 16;
|
||||
this.lblDetonationFx.Text = "Detonation Effect:";
|
||||
this.lblDetonationFx.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// lblArielFx
|
||||
//
|
||||
this.lblArielFx.AutoSize = true;
|
||||
this.lblArielFx.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblArielFx.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblArielFx.Location = new System.Drawing.Point(8, 98);
|
||||
this.lblArielFx.Name = "lblArielFx";
|
||||
this.lblArielFx.Size = new System.Drawing.Size(116, 29);
|
||||
this.lblArielFx.TabIndex = 15;
|
||||
this.lblArielFx.Text = "Ariel Effect:";
|
||||
this.lblArielFx.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// lblLaunchFx
|
||||
//
|
||||
this.lblLaunchFx.AutoSize = true;
|
||||
this.lblLaunchFx.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblLaunchFx.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblLaunchFx.Location = new System.Drawing.Point(8, 67);
|
||||
this.lblLaunchFx.Name = "lblLaunchFx";
|
||||
this.lblLaunchFx.Size = new System.Drawing.Size(116, 29);
|
||||
this.lblLaunchFx.TabIndex = 14;
|
||||
this.lblLaunchFx.Text = "Launch Effect:";
|
||||
this.lblLaunchFx.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// selCollisionRad
|
||||
//
|
||||
this.selCollisionRad.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.selCollisionRad.Location = new System.Drawing.Point(132, 39);
|
||||
this.selCollisionRad.Name = "selCollisionRad";
|
||||
this.selCollisionRad.Size = new System.Drawing.Size(484, 23);
|
||||
this.selCollisionRad.TabIndex = 13;
|
||||
//
|
||||
// lblColRad
|
||||
//
|
||||
this.lblColRad.AutoSize = true;
|
||||
this.lblColRad.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblColRad.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblColRad.Location = new System.Drawing.Point(8, 36);
|
||||
this.lblColRad.Name = "lblColRad";
|
||||
this.lblColRad.Size = new System.Drawing.Size(116, 29);
|
||||
this.lblColRad.TabIndex = 12;
|
||||
this.lblColRad.Text = "Collison Radius:";
|
||||
this.lblColRad.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// selPayloadId
|
||||
//
|
||||
this.selPayloadId.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.selPayloadId.Location = new System.Drawing.Point(132, 8);
|
||||
this.selPayloadId.Name = "selPayloadId";
|
||||
this.selPayloadId.Size = new System.Drawing.Size(484, 23);
|
||||
this.selPayloadId.TabIndex = 11;
|
||||
//
|
||||
// lblPayloadId
|
||||
//
|
||||
this.lblPayloadId.AutoSize = true;
|
||||
this.lblPayloadId.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lblPayloadId.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.lblPayloadId.Location = new System.Drawing.Point(8, 5);
|
||||
this.lblPayloadId.Name = "lblPayloadId";
|
||||
this.lblPayloadId.Size = new System.Drawing.Size(116, 29);
|
||||
this.lblPayloadId.TabIndex = 10;
|
||||
this.lblPayloadId.Text = "Payload ID:";
|
||||
this.lblPayloadId.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// selGraphicalResoures
|
||||
//
|
||||
this.selGraphicalResoures.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.selGraphicalResoures.Location = new System.Drawing.Point(132, 163);
|
||||
this.selGraphicalResoures.Name = "selGraphicalResoures";
|
||||
this.selGraphicalResoures.Size = new System.Drawing.Size(484, 179);
|
||||
this.selGraphicalResoures.TabIndex = 25;
|
||||
//
|
||||
// selGraphicalLocators
|
||||
//
|
||||
this.selGraphicalLocators.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.selGraphicalLocators.Location = new System.Drawing.Point(132, 350);
|
||||
this.selGraphicalLocators.Name = "selGraphicalLocators";
|
||||
this.selGraphicalLocators.Size = new System.Drawing.Size(484, 190);
|
||||
this.selGraphicalLocators.TabIndex = 26;
|
||||
//
|
||||
// togglesTab
|
||||
//
|
||||
this.togglesTab.AutoScroll = true;
|
||||
this.togglesTab.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.togglesTab.Controls.Add(this.togglesTable);
|
||||
this.togglesTab.Location = new System.Drawing.Point(4, 24);
|
||||
this.togglesTab.Name = "togglesTab";
|
||||
this.togglesTab.Size = new System.Drawing.Size(645, 400);
|
||||
this.togglesTab.TabIndex = 5;
|
||||
this.togglesTab.Text = "Toggles";
|
||||
this.togglesTab.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// togglesTable
|
||||
//
|
||||
this.togglesTable.AutoSize = true;
|
||||
this.togglesTable.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Inset;
|
||||
this.togglesTable.ColumnCount = 2;
|
||||
this.togglesTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.togglesTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.togglesTable.Controls.Add(this.selHoming, 0, 0);
|
||||
this.togglesTable.Controls.Add(this.selPowerUpLaunch, 0, 2);
|
||||
this.togglesTable.Controls.Add(this.selAdvancedHoming, 1, 0);
|
||||
this.togglesTable.Controls.Add(this.selFireOnGround, 1, 2);
|
||||
this.togglesTable.Controls.Add(this.selPoison, 0, 1);
|
||||
this.togglesTable.Controls.Add(this.selWindEffected, 1, 1);
|
||||
this.togglesTable.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.togglesTable.Location = new System.Drawing.Point(0, 0);
|
||||
this.togglesTable.Name = "togglesTable";
|
||||
this.togglesTable.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.togglesTable.RowCount = 3;
|
||||
this.togglesTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.togglesTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.togglesTable.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.togglesTable.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.togglesTable.Size = new System.Drawing.Size(641, 89);
|
||||
this.togglesTable.TabIndex = 7;
|
||||
//
|
||||
// selHoming
|
||||
//
|
||||
this.selHoming.AutoSize = true;
|
||||
this.selHoming.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.selHoming.Location = new System.Drawing.Point(8, 8);
|
||||
this.selHoming.Name = "selHoming";
|
||||
this.selHoming.Size = new System.Drawing.Size(308, 19);
|
||||
this.selHoming.TabIndex = 0;
|
||||
this.selHoming.Text = "Homing";
|
||||
this.selHoming.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// selPowerUpLaunch
|
||||
//
|
||||
this.selPowerUpLaunch.AutoSize = true;
|
||||
this.selPowerUpLaunch.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.selPowerUpLaunch.Location = new System.Drawing.Point(8, 62);
|
||||
this.selPowerUpLaunch.Name = "selPowerUpLaunch";
|
||||
this.selPowerUpLaunch.Size = new System.Drawing.Size(308, 19);
|
||||
this.selPowerUpLaunch.TabIndex = 5;
|
||||
this.selPowerUpLaunch.Text = "Power Up Launch";
|
||||
this.selPowerUpLaunch.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// selHomingAvoidLand
|
||||
//
|
||||
this.selAdvancedHoming.AutoSize = true;
|
||||
this.selAdvancedHoming.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.selAdvancedHoming.Location = new System.Drawing.Point(324, 8);
|
||||
this.selAdvancedHoming.Name = "selHomingAvoidLand";
|
||||
this.selAdvancedHoming.Size = new System.Drawing.Size(309, 19);
|
||||
this.selAdvancedHoming.TabIndex = 1;
|
||||
this.selAdvancedHoming.Text = "Advanced Homing";
|
||||
this.selAdvancedHoming.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// selFireOnGround
|
||||
//
|
||||
this.selFireOnGround.AutoSize = true;
|
||||
this.selFireOnGround.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.selFireOnGround.Location = new System.Drawing.Point(324, 62);
|
||||
this.selFireOnGround.Name = "selFireOnGround";
|
||||
this.selFireOnGround.Size = new System.Drawing.Size(309, 19);
|
||||
this.selFireOnGround.TabIndex = 3;
|
||||
this.selFireOnGround.Text = "Fire On Ground";
|
||||
this.selFireOnGround.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// selPoison
|
||||
//
|
||||
this.selPoison.AutoSize = true;
|
||||
this.selPoison.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.selPoison.Location = new System.Drawing.Point(8, 35);
|
||||
this.selPoison.Name = "selPoison";
|
||||
this.selPoison.Size = new System.Drawing.Size(308, 19);
|
||||
this.selPoison.TabIndex = 4;
|
||||
this.selPoison.Text = "Poison";
|
||||
this.selPoison.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// selWindEffected
|
||||
//
|
||||
this.selWindEffected.AutoSize = true;
|
||||
this.selWindEffected.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.selWindEffected.Location = new System.Drawing.Point(324, 35);
|
||||
this.selWindEffected.Name = "selWindEffected";
|
||||
this.selWindEffected.Size = new System.Drawing.Size(309, 19);
|
||||
this.selWindEffected.TabIndex = 2;
|
||||
this.selWindEffected.Text = "Wind Effected";
|
||||
this.selWindEffected.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// WeaponsPanel
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.weaponTabsControl);
|
||||
this.Name = "WeaponsPanel";
|
||||
this.Size = new System.Drawing.Size(653, 428);
|
||||
this.weaponTabsControl.ResumeLayout(false);
|
||||
this.generalTab.ResumeLayout(false);
|
||||
this.generalTab.PerformLayout();
|
||||
this.generalTable.ResumeLayout(false);
|
||||
this.generalTable.PerformLayout();
|
||||
this.powerTab.ResumeLayout(false);
|
||||
this.powerTab.PerformLayout();
|
||||
this.powerTable.ResumeLayout(false);
|
||||
this.powerTable.PerformLayout();
|
||||
this.clusterTab.ResumeLayout(false);
|
||||
this.clusterTab.PerformLayout();
|
||||
this.clusterTable.ResumeLayout(false);
|
||||
this.clusterTable.PerformLayout();
|
||||
this.technicalTab.ResumeLayout(false);
|
||||
this.technicalTab.PerformLayout();
|
||||
this.technicalTable.ResumeLayout(false);
|
||||
this.technicalTable.PerformLayout();
|
||||
this.togglesTab.ResumeLayout(false);
|
||||
this.togglesTab.PerformLayout();
|
||||
this.togglesTable.ResumeLayout(false);
|
||||
this.togglesTable.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private TabControl weaponTabsControl;
|
||||
private TabPage generalTab;
|
||||
private TableLayoutPanel generalTable;
|
||||
private ComboBox selDetonation;
|
||||
private Label lblFuseTime;
|
||||
private IntNumericUpDown selRetreatTime;
|
||||
private Label lblRetreatTime;
|
||||
private Label lblWeapType;
|
||||
private Label lblWeapName;
|
||||
private IntNumericUpDown selFuseTime;
|
||||
private ComboBox selType;
|
||||
private TextBox selName;
|
||||
private Label lblGeneralHint;
|
||||
private TabPage powerTab;
|
||||
private TableLayoutPanel powerTable;
|
||||
private Label lblPowerHint;
|
||||
private Label lblMaxThrowStr;
|
||||
private Label lblBlastDmgRad;
|
||||
private FloatNumericUpDown selLandDmgRad;
|
||||
private Label lblLandDmgRad;
|
||||
private FloatNumericUpDown selWormDmgMag;
|
||||
private Label lblWormDmgStr;
|
||||
private Label lblWormDmgRad;
|
||||
private FloatNumericUpDown selWormDmgRad;
|
||||
private FloatNumericUpDown selBlastDmgRad;
|
||||
private FloatNumericUpDown selMaxThrowStr;
|
||||
private TabPage clusterTab;
|
||||
private TableLayoutPanel clusterTable;
|
||||
private Label lblClustersHint;
|
||||
private FloatNumericUpDown selClusterMaxSpeed;
|
||||
private Label lblClusterSpeedMax;
|
||||
private FloatNumericUpDown selClusterSpread;
|
||||
private Label lblClusterSpread;
|
||||
private Label lblNumCluster;
|
||||
private IntNumericUpDown selNumCluster;
|
||||
private TabPage technicalTab;
|
||||
private TabPage togglesTab;
|
||||
private TableLayoutPanel togglesTable;
|
||||
private CheckBox selHoming;
|
||||
private CheckBox selPowerUpLaunch;
|
||||
private CheckBox selAdvancedHoming;
|
||||
private CheckBox selFireOnGround;
|
||||
private CheckBox selPoison;
|
||||
private CheckBox selWindEffected;
|
||||
private TableLayoutPanel technicalTable;
|
||||
private Label lblTechnicalHint;
|
||||
private Label lblGraphicsResIds;
|
||||
private Label lblGraphicsLocIds;
|
||||
private TextBox selLaunchFx;
|
||||
private TextBox selArielFx;
|
||||
private TextBox selDetonationFx;
|
||||
private Label lblDetonationFx;
|
||||
private Label lblArielFx;
|
||||
private Label lblLaunchFx;
|
||||
private FloatNumericUpDown selCollisionRad;
|
||||
private Label lblColRad;
|
||||
private IntNumericUpDown selPayloadId;
|
||||
private Label lblPayloadId;
|
||||
private ListWithAddAndDel selGraphicalResoures;
|
||||
private ListWithAddAndDel selGraphicalLocators;
|
||||
private Label lblDetonation;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,153 @@
|
|||
using LibW4M.Data.WeaponFactory;
|
||||
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 WeaponsPanel : UserControl
|
||||
{
|
||||
public float ConvertToFloat(decimal value)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (value.Equals(Decimal.MaxValue)) return Single.NaN;
|
||||
if (value.Equals(Decimal.MaxValue-1)) return Single.PositiveInfinity;
|
||||
if (value.Equals(Decimal.MaxValue - 2)) return Single.NegativeInfinity;
|
||||
return Convert.ToSingle(value);
|
||||
}
|
||||
catch (OverflowException)
|
||||
{
|
||||
return float.MaxValue;
|
||||
}
|
||||
}
|
||||
public decimal ConvertToDecimal(float value)
|
||||
{
|
||||
try
|
||||
{
|
||||
return Convert.ToDecimal(value);
|
||||
}
|
||||
catch (OverflowException)
|
||||
{
|
||||
if (float.IsNaN(value)) return Decimal.MaxValue;
|
||||
else if (float.IsPositiveInfinity(value)) return Decimal.MaxValue - 1;
|
||||
else if (float.IsNegativeInfinity(value)) return Decimal.MaxValue - 2;
|
||||
else return Decimal.MaxValue - 3;
|
||||
}
|
||||
}
|
||||
public void SaveWeaponData(ref WeaponContainer weapon)
|
||||
{
|
||||
// Save general settings
|
||||
weapon.Name.Value = this.selName.Text;
|
||||
weapon.DetonationType = (DetonationType)this.selDetonation.SelectedIndex;
|
||||
weapon.ProjectileLaunchType = (ProjectileLaunchType)this.selType.SelectedIndex;
|
||||
weapon.RetreatTime = this.selRetreatTime.Value;
|
||||
weapon.FuseTime = this.selFuseTime.Value;
|
||||
|
||||
// Save power settings
|
||||
weapon.WormDamageRadius = this.selWormDmgRad.Value;
|
||||
weapon.WormDamageMagnitude = this.selWormDmgMag.Value;
|
||||
weapon.LandDamageRadius = this.selLandDmgRad.Value;
|
||||
weapon.Push = this.selBlastDmgRad.Value;
|
||||
weapon.ProjectileMaxPower = this.selMaxThrowStr.Value;
|
||||
|
||||
// Save clusters
|
||||
|
||||
weapon.ProjectileNumClusters = this.selNumCluster.Value;
|
||||
weapon.ClusterSpread = this.selClusterSpread.Value;
|
||||
weapon.ClusterMaxSpeed = this.selClusterMaxSpeed.Value;
|
||||
|
||||
// Save technical
|
||||
|
||||
weapon.PayloadResourceId = this.selPayloadId.Value;
|
||||
weapon.ProjectileCollisionRadius = this.selCollisionRad.Value;
|
||||
weapon.LaunchFX = weapon.OriginalSave.LookupString(this.selLaunchFx.Text);
|
||||
weapon.ArielFX = weapon.OriginalSave.LookupString(this.selArielFx.Text);
|
||||
weapon.DetonationFX = weapon.OriginalSave.LookupString(this.selDetonationFx.Text);
|
||||
|
||||
// Save graphical resources
|
||||
string[] graphicalResources = this.selGraphicalResoures.Items;
|
||||
string[] graphicalLocators = this.selGraphicalLocators.Items;
|
||||
|
||||
weapon.GraphicalResources = new XomString[graphicalResources.Length];
|
||||
for (int i = 0; i < graphicalResources.Length; i++)
|
||||
weapon.GraphicalResources[i] = weapon.OriginalSave.LookupString(graphicalResources[i]);
|
||||
|
||||
weapon.GraphicalLocators = new XomString[graphicalLocators.Length];
|
||||
for (int i = 0; i < graphicalLocators.Length; i++)
|
||||
weapon.GraphicalLocators[i] = weapon.OriginalSave.LookupString(graphicalLocators[i]);
|
||||
|
||||
|
||||
// Save toggles
|
||||
|
||||
weapon.Homing = this.selHoming.Checked;
|
||||
weapon.HomingAvoidLand = this.selAdvancedHoming.Checked;
|
||||
weapon.Poison = this.selPoison.Checked;
|
||||
weapon.EffectedByWind = this.selWindEffected.Checked;
|
||||
weapon.ProjectilePowersUp = this.selPowerUpLaunch.Checked;
|
||||
weapon.FireOnGround = this.selFireOnGround.Checked;
|
||||
}
|
||||
public void LoadWeaponData(WeaponContainer weapon)
|
||||
{
|
||||
|
||||
// Read general settings
|
||||
this.selName.Text = weapon.Name.Value;
|
||||
this.selDetonation.SelectedIndex = (int)weapon.DetonationType;
|
||||
this.selType.SelectedIndex = (int)weapon.ProjectileLaunchType;
|
||||
this.selRetreatTime.Value = weapon.RetreatTime;
|
||||
this.selFuseTime.Value = weapon.FuseTime;
|
||||
|
||||
// Read power settings
|
||||
this.selWormDmgRad.Value = weapon.WormDamageRadius;
|
||||
this.selWormDmgMag.Value = weapon.WormDamageMagnitude;
|
||||
this.selLandDmgRad.Value = weapon.LandDamageRadius;
|
||||
this.selBlastDmgRad.Value = weapon.Push;
|
||||
this.selMaxThrowStr.Value = weapon.ProjectileMaxPower;
|
||||
|
||||
// Read clusters
|
||||
|
||||
this.selNumCluster.Value = weapon.ProjectileNumClusters;
|
||||
this.selClusterSpread.Value = weapon.ClusterSpread;
|
||||
this.selClusterMaxSpeed.Value = weapon.ClusterMaxSpeed;
|
||||
|
||||
// Read technical
|
||||
|
||||
this.selPayloadId.Value = weapon.PayloadResourceId;
|
||||
this.selCollisionRad.Value = weapon.ProjectileCollisionRadius;
|
||||
this.selLaunchFx.Text = weapon.LaunchFX.Value;
|
||||
this.selArielFx.Text = weapon.ArielFX.Value;
|
||||
this.selDetonationFx.Text = weapon.DetonationFX.Value;
|
||||
|
||||
selGraphicalLocators.Clear();
|
||||
selGraphicalResoures.Clear();
|
||||
|
||||
foreach(XomString graphicalRes in weapon.GraphicalResources)
|
||||
this.selGraphicalResoures.AddItem(graphicalRes.Value);
|
||||
|
||||
foreach (XomString graphicalLoc in weapon.GraphicalLocators)
|
||||
this.selGraphicalLocators.AddItem(graphicalLoc.Value);
|
||||
|
||||
// Read toggles
|
||||
|
||||
this.selHoming.Checked = weapon.Homing;
|
||||
this.selAdvancedHoming.Checked = weapon.HomingAvoidLand;
|
||||
this.selPoison.Checked = weapon.Poison;
|
||||
this.selWindEffected.Checked = weapon.EffectedByWind;
|
||||
this.selPowerUpLaunch.Checked = weapon.ProjectilePowersUp;
|
||||
this.selFireOnGround.Checked = weapon.FireOnGround;
|
||||
}
|
||||
|
||||
public WeaponsPanel()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,81 @@
|
|||
<root>
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="lblPowerHint.Text" xml:space="preserve">
|
||||
<value>* By default, Worm DMG, Land DMG, Blast DMG and Throw Strength will always be a number between 0.0 and 1.0. numbers higher than this will do increased damage,
|
||||
however it could lag a bit.
|
||||
|
||||
* Worm DMG Radius normally cannot even be adjusted. and is by default a constant "0.75"
|
||||
|
||||
</value>
|
||||
</data>
|
||||
<data name="lblClustersHint.Text" xml:space="preserve">
|
||||
<value>* By default, Cluster Spread, and Cluster Max Speed
|
||||
are a value between 0.0 and 1.0,
|
||||
higher numbers will result in much larger spread of speeds.
|
||||
|
||||
* Normally, number of clusters, cannot go above 10.
|
||||
higher numbers will work, but if you go too high, your game will crash
|
||||
|
||||
* On Air Strike weapons, the "Number of Clusters" field is used
|
||||
for the number of bombs in the airstrike,
|
||||
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
|
@ -3,11 +3,11 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.4.33205.214
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Worms4Editor", "Worms4Editor\Worms4Editor.csproj", "{FBAA43A5-824F-4C9A-97BC-7B18A42413B9}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibXom", "LibXom\LibXom.csproj", "{7B60E17C-780E-44D3-BF02-9F5712DD3AE2}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibW4M", "LibW4M\LibW4M.csproj", "{ABA3728B-4745-4622-B140-A82C07AF4992}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibW4M", "LibW4M\LibW4M.csproj", "{ABA3728B-4745-4622-B140-A82C07AF4992}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "W4Gui", "W4Gui\W4Gui.csproj", "{80F28B66-98AF-4A93-BD2C-05024D619C30}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
|
@ -15,10 +15,6 @@ Global
|
|||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{FBAA43A5-824F-4C9A-97BC-7B18A42413B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FBAA43A5-824F-4C9A-97BC-7B18A42413B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FBAA43A5-824F-4C9A-97BC-7B18A42413B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FBAA43A5-824F-4C9A-97BC-7B18A42413B9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7B60E17C-780E-44D3-BF02-9F5712DD3AE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7B60E17C-780E-44D3-BF02-9F5712DD3AE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7B60E17C-780E-44D3-BF02-9F5712DD3AE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
|
@ -27,6 +23,10 @@ Global
|
|||
{ABA3728B-4745-4622-B140-A82C07AF4992}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{ABA3728B-4745-4622-B140-A82C07AF4992}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{ABA3728B-4745-4622-B140-A82C07AF4992}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{80F28B66-98AF-4A93-BD2C-05024D619C30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{80F28B66-98AF-4A93-BD2C-05024D619C30}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{80F28B66-98AF-4A93-BD2C-05024D619C30}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{80F28B66-98AF-4A93-BD2C-05024D619C30}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
using LibXom;
|
||||
using LibXom.Blocks;
|
||||
using LibXom.Data;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
|
||||
namespace Worms4Editor
|
||||
{
|
||||
internal class Program
|
||||
{
|
||||
static void Main(string[] args)
|
||||
{
|
||||
XomFile xfile = XomReader.ReadXomFile(@"SaveGame.xom");
|
||||
|
||||
foreach(XomType type in xfile.XomTypes)
|
||||
{
|
||||
Console.WriteLine(type.Name);
|
||||
|
||||
if (Directory.Exists(type.Name)) Directory.Delete(type.Name, true);
|
||||
|
||||
Directory.CreateDirectory(type.Name);
|
||||
foreach(XomContainer container in type.Containers)
|
||||
{
|
||||
string name = Path.Combine(type.Name, container.Id.ToString("X") + ".bin");
|
||||
File.WriteAllBytes(name, container.GetData());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\LibXom\LibXom.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
Loading…
Reference in New Issue