Пример #1
0
        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;
            }
        }
Пример #2
0
        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;
            }
        }
Пример #3
0
        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];
        }
Пример #4
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;
            }
        }