internal void WriteWeaponInfoDescent1(DescentWriter writer, Weapon weapon) { writer.WriteByte((byte)weapon.RenderType); writer.WriteByte((byte)weapon.ModelNum); writer.WriteByte((byte)weapon.ModelNumInner); writer.WriteByte((byte)(weapon.Persistent ? 1 : 0)); writer.WriteSByte(weapon.MuzzleFlashVClip); writer.WriteInt16(weapon.FiringSound); writer.WriteSByte(weapon.RobotHitVClip); writer.WriteInt16(weapon.RobotHitSound); writer.WriteSByte(weapon.WallHitVClip); writer.WriteInt16(weapon.WallHitSound); writer.WriteByte(weapon.FireCount); writer.WriteByte(weapon.AmmoUsage); writer.WriteSByte(weapon.WeaponVClip); writer.WriteByte((byte)(weapon.Destroyable ? 1 : 0)); writer.WriteByte((byte)(weapon.Matter ? 1 : 0)); writer.WriteByte((byte)weapon.Bounce); writer.WriteByte((byte)(weapon.HomingFlag ? 1 : 0)); writer.Write(weapon.Padding); writer.WriteFix(weapon.EnergyUsage); writer.WriteFix(weapon.FireWait); writer.WriteUInt16(weapon.Bitmap); writer.WriteFix(weapon.BlobSize); writer.WriteFix(weapon.FlashSize); writer.WriteFix(weapon.ImpactSize); for (int s = 0; s < 5; s++) { writer.WriteFix(weapon.Strength[s]); } for (int s = 0; s < 5; s++) { writer.WriteFix(weapon.Speed[s]); } writer.WriteFix(weapon.Mass); writer.WriteFix(weapon.Drag); writer.WriteFix(weapon.Thrust); writer.WriteFix(weapon.POLenToWidthRatio); writer.WriteFix(weapon.Light); writer.WriteFix(weapon.Lifetime); writer.WriteFix(weapon.DamageRadius); writer.WriteUInt16(weapon.CockpitPicture); }
public void WriteRobotDescent1(Robot robot, DescentWriter bw) { bw.WriteInt32(robot.ModelNum); bw.WriteInt32(robot.NumGuns); bw.WriteMany(Polymodel.MaxGuns, robot.GunPoints, (writer, a) => writer.WriteFixVector(a)); bw.WriteMany(8, robot.GunSubmodels, (writer, a) => writer.WriteByte(a)); bw.WriteInt16(robot.HitVClipNum); bw.WriteInt16(robot.HitSoundNum); bw.WriteInt16(robot.DeathVClipNum); bw.WriteInt16(robot.DeathSoundNum); bw.WriteInt16(robot.WeaponType); bw.WriteSByte(robot.ContainsID); bw.WriteSByte(robot.ContainsCount); bw.WriteSByte(robot.ContainsProbability); bw.WriteSByte(robot.ContainsType); bw.WriteInt32(robot.ScoreValue); bw.WriteFix(robot.Lighting); bw.WriteFix(robot.Strength); bw.WriteFix(robot.Mass); bw.WriteFix(robot.Drag); bw.WriteMany(Robot.NumDifficultyLevels, robot.FieldOfView, (writer, a) => writer.WriteFix(a)); bw.WriteMany(Robot.NumDifficultyLevels, robot.FiringWait, (writer, a) => writer.WriteFix(a)); bw.WriteMany(Robot.NumDifficultyLevels, robot.TurnTime, (writer, a) => writer.WriteFix(a)); bw.WriteMany(Robot.NumDifficultyLevels, robot.FirePower, (writer, a) => writer.WriteFix(a)); bw.WriteMany(Robot.NumDifficultyLevels, robot.Shield, (writer, a) => writer.WriteFix(a)); bw.WriteMany(Robot.NumDifficultyLevels, robot.MaxSpeed, (writer, a) => writer.WriteFix(a)); bw.WriteMany(Robot.NumDifficultyLevels, robot.CircleDistance, (writer, a) => writer.WriteFix(a)); bw.WriteMany(Robot.NumDifficultyLevels, robot.RapidfireCount, (writer, a) => writer.WriteSByte(a)); bw.WriteMany(Robot.NumDifficultyLevels, robot.EvadeSpeed, (writer, a) => writer.WriteSByte(a)); bw.WriteSByte((sbyte)robot.CloakType); bw.WriteSByte((sbyte)robot.AttackType); bw.WriteSByte((sbyte)robot.BossFlag); bw.WriteByte(robot.SeeSound); bw.WriteByte(robot.AttackSound); bw.WriteByte(robot.ClawSound); for (int v = 0; v < 9; v++) { for (int u = 0; u < 5; u++) { bw.WriteInt16(robot.AnimStates[v, u].NumJoints); bw.WriteInt16(robot.AnimStates[v, u].Offset); } } bw.WriteInt32(robot.Always0xABCD); }