public static List <SetObjectHeroes> GetHeroesLayout(string fileName) { List <SetObjectHeroes> list = new List <SetObjectHeroes>(2048); BinaryReader LayoutFileReader = new BinaryReader(new FileStream(fileName, FileMode.Open)); for (int i = 0; i < 2048; i++) { LayoutFileReader.BaseStream.Position = 0x30 * i; if (LayoutFileReader.BaseStream.Position == LayoutFileReader.BaseStream.Length) { break; } Vector3 Position = new Vector3(Switch(LayoutFileReader.ReadSingle()), Switch(LayoutFileReader.ReadSingle()), Switch(LayoutFileReader.ReadSingle())); Vector3 Rotation = new Vector3(Switch(LayoutFileReader.ReadInt32()), Switch(LayoutFileReader.ReadInt32()), Switch(LayoutFileReader.ReadInt32())); byte[] UnkBytes1 = LayoutFileReader.ReadBytes(4); LayoutFileReader.BaseStream.Position += 4; byte[] UnkBytes2 = LayoutFileReader.ReadBytes(4); LayoutFileReader.BaseStream.Position += 4; byte List = LayoutFileReader.ReadByte(); byte Type = LayoutFileReader.ReadByte(); byte Link = LayoutFileReader.ReadByte(); byte Rend = LayoutFileReader.ReadByte(); if (List == 0 & Type == 0) { continue; } SetObjectHeroes TempObject = new SetObjectHeroes(List, Type, Position, Rotation, Link, Rend, UnkBytes1.Concat(UnkBytes2).ToArray()); int MiscSettings = Switch(LayoutFileReader.ReadInt32()); if (MiscSettings == 0) { TempObject.HasMiscSettings = false; } else { LayoutFileReader.BaseStream.Position = 0x18000 + (0x24 * MiscSettings); TempObject.MiscSettings = LayoutFileReader.ReadBytes(36); } TempObject.CreateTransformMatrix(); list.Add(TempObject); } LayoutFileReader.Close(); return(list); }
public static List <SetObjectHeroes> GetHeroesLayoutFromShadow(string fileName) { List <SetObjectHeroes> list = new List <SetObjectHeroes>(); foreach (SetObjectShadow i in GetShadowLayout(fileName)) { SetObjectHeroes TempObject = SetObjectShadowToHeroes(i); if (TempObject != null) { TempObject.CreateTransformMatrix(); list.Add(TempObject); } } return(list); }
public static List <SetObjectHeroes> GetHeroesLayoutFromINI(string fileName) { string[] file = File.ReadAllLines(fileName); List <SetObjectHeroes> list = new List <SetObjectHeroes>(); SetObjectHeroes TempObject = new SetObjectHeroes(0, 0, Vector3.Zero, Vector3.Zero, 0, 10, new byte[8]); foreach (string s in file) { if (s.StartsWith("obj ")) { if (!(TempObject.List == 0 & TempObject.Type == 0)) { TempObject.CreateTransformMatrix(); list.Add(TempObject); } TempObject = null; TempObject = new SetObjectHeroes(Convert.ToByte(s.Substring(4, 2), 16), Convert.ToByte(s.Substring(6, 2), 16), Vector3.Zero, Vector3.Zero, 0, 10); } else if (s.StartsWith("link ")) { TempObject.Link = Convert.ToByte(s.Substring(5, 2)); } else if (s.StartsWith("rend ")) { TempObject.Rend = Convert.ToByte(s.Substring(5, 2)); } else if (s.StartsWith("v ")) { string[] j = s.Split(' '); TempObject.Position.X = Convert.ToSingle(j[1]); TempObject.Position.Y = Convert.ToSingle(j[2]); TempObject.Position.Z = Convert.ToSingle(j[3]); } else if (s.StartsWith("r ")) { string[] j = s.Split(' '); TempObject.Rotation.X = Convert.ToInt32(j[1]); TempObject.Rotation.Y = Convert.ToInt32(j[2]); TempObject.Rotation.Z = Convert.ToInt32(j[3]); } else if (s.StartsWith("b ")) { string[] j = s.Split(' '); TempObject.UnkBytes[0] = Convert.ToByte(j[1]); TempObject.UnkBytes[1] = Convert.ToByte(j[2]); TempObject.UnkBytes[2] = Convert.ToByte(j[3]); TempObject.UnkBytes[3] = Convert.ToByte(j[4]); TempObject.UnkBytes[4] = Convert.ToByte(j[5]); TempObject.UnkBytes[5] = Convert.ToByte(j[6]); TempObject.UnkBytes[6] = Convert.ToByte(j[7]); TempObject.UnkBytes[7] = Convert.ToByte(j[8]); } else if (s.StartsWith("misc ")) { if (s.Length == 9 * 9 + 4) { string NewMiscString = Regex.Replace(s.Substring(5), @"\s+", "");; List <byte> NewMiscSettings = new List <byte>(); for (int j = 0; j < 8 * 9; j += 2) { string byteasstring = new string(new char[] { NewMiscString[j], NewMiscString[j + 1] }); NewMiscSettings.Add(Convert.ToByte(byteasstring, 16)); } TempObject.MiscSettings = NewMiscSettings.ToArray(); } else { TempObject.HasMiscSettings = false; } } else if (s == "EndOfFile") { if (!(TempObject.List == 0 & TempObject.Type == 0)) { TempObject.CreateTransformMatrix(); list.Add(TempObject); } TempObject = null; } } return(list); }