using LibW4M.Data.WeaponFactory; using LibXom.Data; using LibXom.Streams; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LibW4M.Data.Teams { public class TeamData : SaveDataEntry { public override string FriendlyName { get { return Name.Value; } } public XomString Name; public XomString[] Worms; public int TutorialsDone; public int NewTeam; public SkillLevel Skill; public int Grave; public int SWeapon; public XomString Flag; public XomString Speech; public bool InGame; public bool AllTutorialsDone; public bool AllMissionsDone; public XomString Player; public WeaponData SecretWeapon; public WeaponData SecretWeaponCluster; public XomString CustomWeapon; public XomString Hat; public XomString Gloves; public XomString Glasses; public XomString Tash; public int[] StoryMissionsCompleted; public int StoryChapter; public TeamData(W4SaveFile fileBelongs, XomContainer mainContainer) : base(fileBelongs, mainContainer) { } public override void Load() { using (XomStreamReader reader = new XomStreamReader(new MemoryStream(this.mainContainer.GetData()))) { reader.Skip(3); this.Name = fileBelongs.LookupStringFromId(reader.ReadCompressedInt()); this.Worms = fileBelongs.IntArrayToXomStringArray(reader.ReadCompressedIntArray()); this.TutorialsDone = reader.ReadInt32(); this.NewTeam = reader.ReadInt32(); this.Skill = (SkillLevel)reader.ReadInt32(); this.Grave = reader.ReadInt32(); this.SWeapon = reader.ReadInt32(); this.Flag = fileBelongs.LookupStringFromId(reader.ReadCompressedInt()); this.Speech = fileBelongs.LookupStringFromId(reader.ReadCompressedInt()); this.InGame = reader.ReadBool(); this.AllTutorialsDone = reader.ReadBool(); this.AllMissionsDone = reader.ReadBool(); this.Player = fileBelongs.LookupStringFromId(reader.ReadCompressedInt()); this.SecretWeapon = fileBelongs.findWeaponWithContainerId(reader.ReadCompressedInt()); this.SecretWeaponCluster = fileBelongs.findWeaponWithContainerId(reader.ReadCompressedInt()); this.CustomWeapon = fileBelongs.LookupStringFromId(reader.ReadCompressedInt()); this.Hat = fileBelongs.LookupStringFromId(reader.ReadCompressedInt()); this.Gloves = fileBelongs.LookupStringFromId(reader.ReadCompressedInt()); this.Glasses = fileBelongs.LookupStringFromId(reader.ReadCompressedInt()); this.Tash = fileBelongs.LookupStringFromId(reader.ReadCompressedInt()); this.StoryMissionsCompleted = reader.ReadInt32Array(); this.StoryChapter = reader.ReadInt32(); } } public override void Save() { this.SecretWeapon.Save(); this.SecretWeaponCluster.Save(); using (MemoryStream ms = new MemoryStream()) { using (XomStreamWriter writer = new XomStreamWriter(ms)) { writer.Skip(3); writer.WriteCompressedInt(this.Name.Id); writer.WriteCompressedIntArray(this.fileBelongs.XomStringArrayToIntArray(this.Worms)); writer.WriteInt32(this.TutorialsDone); writer.WriteInt32(this.NewTeam); writer.WriteInt32((int)this.Skill); writer.WriteInt32(this.Grave); writer.WriteInt32(this.SWeapon); writer.WriteCompressedInt(this.Flag.Id); writer.WriteCompressedInt(this.Speech.Id); writer.WriteBool(this.InGame); writer.WriteBool(this.AllTutorialsDone); writer.WriteBool(this.AllMissionsDone); writer.WriteCompressedInt(this.Player.Id); writer.WriteCompressedInt(this.SecretWeapon.containerId); writer.WriteCompressedInt(this.SecretWeaponCluster.containerId); writer.WriteCompressedInt(this.CustomWeapon.Id); writer.WriteCompressedInt(this.Hat.Id); writer.WriteCompressedInt(this.Gloves.Id); writer.WriteCompressedInt(this.Glasses.Id); writer.WriteCompressedInt(this.Tash.Id); writer.WriteInt32Array(this.StoryMissionsCompleted); writer.WriteInt32(this.StoryChapter); ms.Seek(0x00, SeekOrigin.Begin); mainContainer.SetData(ms.ToArray()); } } } } }