public void ReadFromFile(BinaryReader reader) { unk0 = reader.ReadUInt32(); uint count0 = reader.ReadUInt32(); uint count1 = reader.ReadUInt32(); traffic_tunings = new CarTrafficTuningItem[count0]; for (int i = 0; i < count1; i++) { CarTrafficTuningItem item = new CarTrafficTuningItem(); item.ID = reader.ReadInt32(); item.CollectionOffset = reader.ReadInt32(); item.CollectionCount1 = reader.ReadInt32(); item.CollectionCount2 = reader.ReadInt32(); item.VehicleID = reader.ReadInt32(); item.VehicleFlags = (ETrafficVehicleFlags)reader.ReadInt32(); item.VehicleLookFlags = (ETrafficVehicleLookFlags)reader.ReadInt32(); item.Weight = reader.ReadSingle(); item.NameHash = reader.ReadUInt64(); traffic_tunings[i] = item; } for (int i = 0; i < count1; i++) { var item = traffic_tunings[i]; item.TuningItems = new int[item.CollectionCount1]; for (int z = 0; z < item.CollectionCount1; z++) { item.TuningItems[z] = reader.ReadInt32(); } traffic_tunings[i] = item; } }
public void SetFromTreeNodes(TreeNode Root) { TrafficTuning = new CarTrafficTuningItem[Root.Nodes.Count]; for (int i = 0; i < TrafficTuning.Length; i++) { TreeNode ChildNode = Root.Nodes[i]; CarTrafficTuningItem Entry = (CarTrafficTuningItem)ChildNode.Tag; TrafficTuning[i] = Entry; } }
public void WriteToFile(XBinWriter writer) { writer.Write(unk0); writer.Write(Items.Length); writer.Write(Items.Length); writer.Write(0); // padding int i = 0; long[] offsets = new long[Items.Length]; foreach (var tuning in Items) { CarTrafficTuningItem Item = Items[i]; Item.CollectionCount1 = Item.TuningItems.Length; Item.CollectionCount2 = Item.TuningItems.Length; writer.Write(Item.ID); offsets[i] = writer.BaseStream.Position; writer.Write(0xDEADBEEF); //placeholder writer.Write(Item.TuningItems.Length); writer.Write(Item.TuningItems.Length); writer.Write(Item.VehicleID); writer.Write((int)Item.VehicleFlags); writer.Write((int)Item.VehicleLookFlags); writer.Write(Item.Weight); Item.Name.WriteToFile(writer); i++; } for (int j = 0; j < Items.Length; j++) { CarTrafficTuningItem Item = Items[j]; uint thisPosition = (uint)(writer.BaseStream.Position); for (int z = 0; z < Item.CollectionCount1; z++) { writer.Write(Item.TuningItems[z]); } long currentPosition = writer.BaseStream.Position; writer.BaseStream.Position = offsets[j]; var offset = (uint)(thisPosition - offsets[j]); writer.Write(offset); writer.BaseStream.Position = currentPosition; } offsets = new long[0]; }
public void ReadFromFile(BinaryReader reader) { unk0 = reader.ReadUInt32(); uint count0 = reader.ReadUInt32(); uint count1 = reader.ReadUInt32(); uint padding = reader.ReadUInt32(); Items = new CarTrafficTuningItem[count0]; for (int i = 0; i < count1; i++) { CarTrafficTuningItem item = new CarTrafficTuningItem(); item.ID = reader.ReadInt32(); item.CollectionOffset = reader.ReadInt32(); item.CollectionCount1 = reader.ReadInt32(); item.CollectionCount2 = reader.ReadInt32(); item.VehicleID = reader.ReadInt32(); item.VehicleFlags = (ETrafficVehicleFlags_M3)reader.ReadUInt32(); item.VehicleLookFlags = (ETrafficVehicleLookFlags_M3)reader.ReadUInt32(); item.Weight = reader.ReadSingle(); item.Name = XBinHashName.ConstructAndReadFromFile(reader); Items[i] = item; } for (int i = 0; i < count1; i++) { var item = Items[i]; item.TuningItems = new int[item.CollectionCount1]; for (int z = 0; z < item.CollectionCount1; z++) { item.TuningItems[z] = reader.ReadInt32(); } Items[i] = item; } }