public static SmashDataExplosion Load(DocumentParser file) { SmashDataExplosion explosion = new SmashDataExplosion { Count = file.ReadInts(), StartDelay = file.ReadVector2(), Offset = file.ReadVector3(), XFactor = file.ReadVector2(), YFactor = file.ReadVector2(), ZFactor = file.ReadVector2(), FrameRate = file.ReadVector2(), ScalingFactor = file.ReadVector2(), RotationMode = file.ReadEnum <ExplosionRotationMode>() }; int frameCount = file.ReadInt(); for (int i = 0; i < frameCount; i++) { explosion.Frames.Add(new SmashDataExplosionFrame { Opacity = file.ReadInt(), Pixelmap = file.ReadLine() }); } return(explosion); }
public void Load(DocumentParser file) { int possibleSounds = file.ReadInt(); for (int k = 0; k < possibleSounds; k++) { Sounds.Add(file.ReadInt()); } int shrapnelCount = file.ReadInt(); for (int k = 0; k < shrapnelCount; k++) { SmashDataShrapnel shrapnel = new SmashDataShrapnel { ShrapnelType = file.ReadEnum <SmashDataShrapnel.SmashDataShrapnelType>() }; shrapnel.InitialVelocity.TowardsYouSpeed = file.ReadVector2(); shrapnel.InitialVelocity.ImpacteeVelocityFactor = file.ReadSingle(); shrapnel.InitialVelocity.MaxRandomVelocity = file.ReadSingle(); shrapnel.InitialVelocity.MaxUpVelocity = file.ReadSingle(); shrapnel.InitialVelocity.MaxNormalVelocity = file.ReadSingle(); shrapnel.InitialVelocity.MaxRandomSpinRate = file.ReadSingle(); if (shrapnel.ShrapnelType != SmashDataShrapnel.SmashDataShrapnelType.shards) { shrapnel.InitialPositionType = file.ReadEnum <SmashDataShrapnel.SmashDataInitialPositionType>(); if (shrapnel.InitialPositionType == SmashDataShrapnel.SmashDataInitialPositionType.sphereclumped) { shrapnel.ClumpingRadius = file.ReadSingle(); shrapnel.ClumpingCentre = file.ReadEnum <SmashDataShrapnel.ClumpCentre>(); } } if (shrapnel.ShrapnelType != SmashDataShrapnel.SmashDataShrapnelType.noncars) { shrapnel.Time = file.ReadVector2(); } if (shrapnel.ShrapnelType == SmashDataShrapnel.SmashDataShrapnelType.shards) { shrapnel.CutLength = file.ReadSingle(); shrapnel.Flags = file.ReadInt(); shrapnel.MaterialName = file.ReadLine(); } else if (shrapnel.ShrapnelType == SmashDataShrapnel.SmashDataShrapnelType.ghostparts) { int[] count = file.ReadInts(); shrapnel.MinCount = count[0]; shrapnel.MaxCount = count.Length == 2 ? count[1] : count[0]; int numActors = file.ReadInt(); if (numActors > 0) { for (int l = 0; l < numActors; l++) { shrapnel.GhostPartActors.Add(file.ReadLine()); } } else { shrapnel.GhostPartActors.Add(file.ReadLine()); } } else if (shrapnel.ShrapnelType == SmashDataShrapnel.SmashDataShrapnelType.noncars) { int[] count = file.ReadInts(); shrapnel.MinCount = count[0]; shrapnel.MaxCount = count[1]; shrapnel.ChanceOfFire = file.ReadInt(); if (shrapnel.ChanceOfFire > 0) { shrapnel.NumFires = file.ReadInt(); shrapnel.SmokeLevel = file.ReadInts(); } shrapnel.Actor = file.ReadLine(); int numActors = file.ReadInt(); for (int l = 0; l < numActors; l++) { shrapnel.Actors.Add(new SmashDataShrapnelActor { Name = file.ReadLine(), FileName = file.ReadLine() }); } } else { shrapnel.MinCount = file.ReadInt(); shrapnel.MaxCount = file.ReadInt(); shrapnel.Actor = file.ReadLine(); } Shrapnel.Add(shrapnel); } int explosionCount = file.ReadInt(); for (int k = 0; k < explosionCount; k++) { Explosions.Add(SmashDataExplosion.Load(file)); } SlickMaterial = file.ReadLine(); int noncarCuboidCount = file.ReadInt(); for (int k = 0; k < noncarCuboidCount; k++) { NoncarCuboids.Add(SmashDataNoncarActivationCuboid.Load(file)); } int smashCuboidCount = file.ReadInt(); for (int k = 0; k < smashCuboidCount; k++) { SmashCuboids.Add(SmashDataSmashActivationCuboid.Load(file)); } ExtensionFlags = file.ReadInt(); RoomTurnOnCode = file.ReadInt(); AwardCode = file.ReadEnum <AwardCodeType>(); if (AwardCode != AwardCodeType.none) { PointsAwarded = file.ReadInt(); TimeAwarded = file.ReadInt(); HudIndex = file.ReadInt(); FancyHUDIndex = file.ReadInt(); } int runtimeVariableChanges = file.ReadInt(); for (int k = 0; k < runtimeVariableChanges; k++) { RuntimeVariableChanges.Add(file.ReadLine()); } }