Example #1
0
        public void AddPresetCar(AaronPresetCar presetCar)
        {
            if (_presetCars.Contains(presetCar))
            {
                throw new DuplicateNameException("Attempted to add the same preset car twice");
            }

            _presetCars.Add(presetCar);
        }
Example #2
0
        /// <summary>
        /// Converts a <see cref="FEPresetCar"/> to a <see cref="AaronPresetCar"/>.
        /// </summary>
        /// <param name="fePresetCar">The <see cref="FEPresetCar"/> to be converted.</param>
        /// <returns></returns>
        public static AaronPresetCar ConvertFeToAaronPresetCar(FEPresetCar fePresetCar)
        {
            AaronPresetCar aaronPresetCar = new AaronPresetCar();

            aaronPresetCar.CarName            = fePresetCar.CarCollectionName;
            aaronPresetCar.PresetName         = fePresetCar.PresetName;
            aaronPresetCar.PhysicsProfileHash = ~(fePresetCar.VehicleKey * 0x0CF96D9C3);

            aaronPresetCar.Paints           = new SynchronizedObservableCollection <AaronPresetCarPaint>();
            aaronPresetCar.PerformanceParts = new SynchronizedObservableCollection <AaronPresetCarPerfPart>();
            aaronPresetCar.SkillModParts    = new SynchronizedObservableCollection <AaronPresetCarSkill>();
            aaronPresetCar.Vinyls           = new SynchronizedObservableCollection <AaronPresetCarVinyl>();
            aaronPresetCar.VisualParts      = new SynchronizedObservableCollection <AaronPresetCarVisualPart>();

            aaronPresetCar.SkillModSlotCount = fePresetCar.SkillModSlotCount;

            for (int i = 0; i < fePresetCar.PaintsSet.Length; i++)
            {
                aaronPresetCar.Paints.Add(fePresetCar.PaintsSet[i]
                    ? convertFePaintToAaronPaint(fePresetCar.Paints[i])
                    : new AaronPresetCarPaint());
            }

            for (int i = 0; i < fePresetCar.PerformanceParts.Length && fePresetCar.PerformanceParts[i] != 0; i++)
            {
                aaronPresetCar.PerformanceParts.Add(new AaronPresetCarPerfPart
                {
                    Hash = fePresetCar.PerformanceParts[i]
                });
            }

            for (int i = 0; i < fePresetCar.SkillModHashes.Length && fePresetCar.SkillModHashes[i] != 0; i++)
            {
                aaronPresetCar.SkillModParts.Add(new AaronPresetCarSkill
                {
                    Hash    = fePresetCar.SkillModHashes[i],
                    IsFixed = fePresetCar.SkillModsFixed[i]
                });
            }

            for (var index = 0; index < fePresetCar.VisualPartHashes.Length; index++)
            {
                var visualPartHash = fePresetCar.VisualPartHashes[index];
                if (visualPartHash != 0xFFFFFFFF)
                {
                    aaronPresetCar.VisualParts.Add(new AaronPresetCarVisualPart
                    {
                        PartHash = visualPartHash,
                        SlotHash = indexToSlotDictionary[index]
                    });
                }
            }

            foreach (var fePresetVinyl in fePresetCar.Vinyls)
            {
                if (fePresetVinyl.Hash == 0)
                {
                    break;
                }
                aaronPresetCar.Vinyls.Add(convertFeVinylToAaronVinyl(fePresetVinyl));
            }

            return(aaronPresetCar);
        }
Example #3
0
        public static AaronPresetCar ConvertServerXMLToAaronPreset(OwnedCarTrans ownedCarTrans)
        {
            AaronPresetCar aaronPresetCar = new AaronPresetCar();

            aaronPresetCar.CarName            = ownedCarTrans.CustomCar.Name;
            aaronPresetCar.Paints             = new SynchronizedObservableCollection <AaronPresetCarPaint>();
            aaronPresetCar.PerformanceParts   = new SynchronizedObservableCollection <AaronPresetCarPerfPart>();
            aaronPresetCar.SkillModParts      = new SynchronizedObservableCollection <AaronPresetCarSkill>();
            aaronPresetCar.Vinyls             = new SynchronizedObservableCollection <AaronPresetCarVinyl>();
            aaronPresetCar.VisualParts        = new SynchronizedObservableCollection <AaronPresetCarVisualPart>();
            aaronPresetCar.SkillModSlotCount  = (uint)ownedCarTrans.CustomCar.SkillModSlotCount;
            aaronPresetCar.PhysicsProfileHash = unchecked ((uint)ownedCarTrans.CustomCar.PhysicsProfileHash);

            for (int i = 0; i < 8; i++)
            {
                aaronPresetCar.Paints.Add(new AaronPresetCarPaint());
            }

            for (int i = 0; i < 31; i++)
            {
                aaronPresetCar.Vinyls.Add(new AaronPresetCarVinyl());
            }

            foreach (var paint in ownedCarTrans.CustomCar.Paints)
            {
                aaronPresetCar.Paints[paint.Slot] =
                    convertXMLPaintToAaron(paint);
            }

            foreach (var skillModPart in ownedCarTrans.CustomCar.SkillModParts)
            {
                aaronPresetCar.SkillModParts.Add(new AaronPresetCarSkill
                {
                    Hash    = unchecked ((uint)skillModPart.SkillModPartAttribHash),
                    IsFixed = skillModPart.IsFixed
                });
            }

            foreach (var performancePart in ownedCarTrans.CustomCar.PerformanceParts)
            {
                aaronPresetCar.PerformanceParts.Add(new AaronPresetCarPerfPart
                {
                    Hash = unchecked ((uint)performancePart.PerformancePartAttribHash)
                });
            }

            foreach (var customCarVisualPart in ownedCarTrans.CustomCar.VisualParts)
            {
                aaronPresetCar.VisualParts.Add(new AaronPresetCarVisualPart
                {
                    PartHash = unchecked ((uint)customCarVisualPart.PartHash),
                    SlotHash = unchecked ((uint)customCarVisualPart.SlotHash)
                });
            }

            foreach (var customVinyl in ownedCarTrans.CustomCar.Vinyls)
            {
                aaronPresetCar.Vinyls[customVinyl.Layer] = convertXMLVinylToAaron(customVinyl);
            }

            return(aaronPresetCar);
        }
Example #4
0
        /// <summary>
        /// Converts a <see cref="AaronPresetCar"/> to a <see cref="OwnedCarTrans"/>
        /// </summary>
        /// <param name="aaronPresetCar"></param>
        /// <returns></returns>
        public static OwnedCarTrans ConvertAaronPresetToServerXML(AaronPresetCar aaronPresetCar)
        {
            OwnedCarTrans ownedCarTrans = new OwnedCarTrans();

            ownedCarTrans.ExpirationDate = DateTime.FromBinary(0);
            ownedCarTrans.OwnershipType  = "PresetCar";
            ownedCarTrans.Id             = 0;
            ownedCarTrans.Durability     = 0;
            ownedCarTrans.CustomCar      = new CustomCarTrans();

            // setup customcar
            ownedCarTrans.CustomCar.Name               = aaronPresetCar.CarName;
            ownedCarTrans.CustomCar.BaseCar            = unchecked ((int)Hashing.BinHash(aaronPresetCar.CarName.ToUpperInvariant()));
            ownedCarTrans.CustomCar.IsPreset           = true;
            ownedCarTrans.CustomCar.PhysicsProfileHash = unchecked ((int)aaronPresetCar.PhysicsProfileHash);

            ownedCarTrans.CustomCar.Paints           = new List <CustomPaintTrans>();
            ownedCarTrans.CustomCar.PerformanceParts = new List <PerformancePartTrans>();
            ownedCarTrans.CustomCar.SkillModParts    = new List <SkillModPartTrans>();
            ownedCarTrans.CustomCar.Vinyls           = new List <CustomVinylTrans>();
            ownedCarTrans.CustomCar.VisualParts      = new List <VisualPartTrans>();

            ownedCarTrans.CustomCar.SkillModSlotCount = (int)aaronPresetCar.SkillModSlotCount;

            for (var index = 0; index < aaronPresetCar.Paints.Count; index++)
            {
                var aaronPresetCarPaint = aaronPresetCar.Paints[index];

                if (aaronPresetCarPaint == null)
                {
                    continue;
                }

                var paint = convertAaronPaintToXML(aaronPresetCarPaint, index);

                ownedCarTrans.CustomCar.Paints.Add(paint);
            }

            foreach (var aaronPresetCarPart in aaronPresetCar.SkillModParts)
            {
                ownedCarTrans.CustomCar.SkillModParts.Add(new SkillModPartTrans
                {
                    IsFixed = false,
                    SkillModPartAttribHash = unchecked ((int)aaronPresetCarPart.Hash)
                });
            }

            foreach (var aaronPresetCarVisualPart in aaronPresetCar.VisualParts)
            {
                ownedCarTrans.CustomCar.VisualParts.Add(new VisualPartTrans
                {
                    PartHash = unchecked ((int)aaronPresetCarVisualPart.PartHash),
                    SlotHash = unchecked ((int)aaronPresetCarVisualPart.SlotHash),
                });
            }

            foreach (var aaronPresetCarPerfPart in aaronPresetCar.PerformanceParts)
            {
                ownedCarTrans.CustomCar.PerformanceParts.Add(new PerformancePartTrans
                {
                    PerformancePartAttribHash = unchecked ((int)aaronPresetCarPerfPart.Hash)
                });
            }

            for (var index = 0; index < aaronPresetCar.Vinyls.Count; index++)
            {
                var aaronPresetCarVinyl = aaronPresetCar.Vinyls[index];

                if (aaronPresetCarVinyl == null)
                {
                    continue;
                }

                var convertAaronVinylToXml = convertAaronVinylToXML(aaronPresetCarVinyl);
                convertAaronVinylToXml.Layer = index;

                ownedCarTrans.CustomCar.Vinyls.Add(convertAaronVinylToXml);
            }

            return(ownedCarTrans);
        }
Example #5
0
        public static FEPresetCar ConvertAaronPresetToFEPreset(AaronPresetCar aaronPresetCar)
        {
            FEPresetCar presetCar = new FEPresetCar();

            presetCar.InheritedFields   = new byte[8];
            presetCar.CarCollectionName = aaronPresetCar.CarName;
            presetCar.PresetName        = aaronPresetCar.PresetName;
            presetCar.VehicleKey        = ~aaronPresetCar.PhysicsProfileHash * 0x57A5DEEB;
            presetCar.InverseThing      = 0xA85A2115;
            presetCar.VisualPartHashes  = new uint[123];
            presetCar.PaintsSet         = new bool[8];
            presetCar.Paints            = new FEPresetPaint[8];
            presetCar.Blank             = new byte[0x64];
            presetCar.PerformanceParts  = new uint[6];
            presetCar.SkillModSlotCount = aaronPresetCar.SkillModSlotCount;
            presetCar.SkillModHashes    = new uint[6];
            presetCar.SkillModsFixed    = new bool[8];
            presetCar.Vinyls            = new FEPresetVinyl[31];
            presetCar.Blank4            = new byte[8];

            for (int i = 0; i < 123; i++)
            {
                presetCar.VisualPartHashes[i] = 0xFFFFFFFF;
            }

            foreach (var aaronPresetCarVisualPart in aaronPresetCar.VisualParts)
            {
                presetCar.VisualPartHashes[slotToIndexDictionary[aaronPresetCarVisualPart.SlotHash]] =
                    aaronPresetCarVisualPart.PartHash;
            }

            for (var index = 0; index < aaronPresetCar.Paints.Count; index++)
            {
                var aaronPresetCarPaint = aaronPresetCar.Paints[index];
                if (aaronPresetCarPaint == null || aaronPresetCarPaint.Group == 0)
                {
                    continue;
                }

                presetCar.PaintsSet[index] = true;
            }

            for (int i = 0; i < aaronPresetCar.Paints.Count; i++)
            {
                if (!presetCar.PaintsSet[i])
                {
                    presetCar.Paints[i] = new FEPresetPaint();
                }
                else
                {
                    presetCar.Paints[i] = new FEPresetPaint
                    {
                        Group      = aaronPresetCar.Paints[i].Group,
                        Hue        = aaronPresetCar.Paints[i].Hue,
                        Saturation = aaronPresetCar.Paints[i].Saturation,
                        Variance   = aaronPresetCar.Paints[i].Variance,
                    };
                }
            }

            for (var index = 0; index < aaronPresetCar.PerformanceParts.Count; index++)
            {
                var aaronPresetCarPerfPart = aaronPresetCar.PerformanceParts[index];

                presetCar.PerformanceParts[index] = aaronPresetCarPerfPart.Hash;
            }

            for (var index = 0; index < aaronPresetCar.SkillModParts.Count; index++)
            {
                var aaronPresetCarSkill = aaronPresetCar.SkillModParts[index];

                presetCar.SkillModHashes[index] = aaronPresetCarSkill.Hash;
                presetCar.SkillModsFixed[index] = aaronPresetCarSkill.IsFixed;
            }

            for (var index = 0; index < aaronPresetCar.Vinyls.Count; index++)
            {
                var aaronPresetCarVinyl = aaronPresetCar.Vinyls[index];

                if (aaronPresetCarVinyl.Hash == 0)
                {
                    presetCar.Vinyls[index] = new FEPresetVinyl();
                }
                else
                {
                    presetCar.Vinyls[index] = convertAaronVinylToFE(aaronPresetCarVinyl);
                }
            }

            return(presetCar);
        }