Fix WWP land data IMG alignment and accept bugged PX weapon blocks.

This commit is contained in:
Ray Koopa 2017-05-01 14:39:14 +02:00
parent e4f3c0ced1
commit 5e23aef58c
9 changed files with 16 additions and 16 deletions

View File

@ -40,7 +40,7 @@ namespace Syroot.Worms.Gen2.Armageddon.ProjectX
{ {
using (BinaryDataReader reader = new BinaryDataReader(stream, Encoding.ASCII, true)) using (BinaryDataReader reader = new BinaryDataReader(stream, Encoding.ASCII, true))
{ {
Collisions = reader.ReadEnum<CollisionFlags>(true); Collisions = reader.ReadEnum<CollisionFlags>(false);
Bounciness = reader.ReadInt32(); Bounciness = reader.ReadInt32();
Acceleration = reader.ReadInt32(); Acceleration = reader.ReadInt32();
Sound = reader.ReadInt32(); Sound = reader.ReadInt32();

View File

@ -29,7 +29,7 @@ namespace Syroot.Worms.Gen2.Armageddon.ProjectX
{ {
reader.Seek(4); reader.Seek(4);
Sprite = reader.ReadStruct<Sprite>(); Sprite = reader.ReadStruct<Sprite>();
HomeStyle = reader.ReadEnum<HomeStyle>(true); HomeStyle = reader.ReadEnum<HomeStyle>(false);
Delay = reader.ReadInt32(); Delay = reader.ReadInt32();
Duration = reader.ReadInt32(); Duration = reader.ReadInt32();
} }

View File

@ -54,8 +54,8 @@ namespace Syroot.Worms.Gen2.Armageddon.ProjectX
{ {
using (BinaryDataReader reader = new BinaryDataReader(stream, Encoding.ASCII, true)) using (BinaryDataReader reader = new BinaryDataReader(stream, Encoding.ASCII, true))
{ {
RoamCollisions = reader.ReadEnum<CollisionFlags>(true); RoamCollisions = reader.ReadEnum<CollisionFlags>(false);
ExplosionCollisions = reader.ReadEnum<CollisionFlags>(true); ExplosionCollisions = reader.ReadEnum<CollisionFlags>(false);
WalkSpeed = reader.ReadInt32(); WalkSpeed = reader.ReadInt32();
Unknown = reader.ReadInt32(); Unknown = reader.ReadInt32();
JumpAngleEdge = reader.ReadInt32(); JumpAngleEdge = reader.ReadInt32();

View File

@ -40,7 +40,7 @@ namespace Syroot.Worms.Gen2.Armageddon.ProjectX
HorizontalSpeed = reader.ReadInt32(); HorizontalSpeed = reader.ReadInt32();
Sound = reader.ReadInt32(); Sound = reader.ReadInt32();
Action = reader.ReadEnum<WeaponAirstrikeAction>(true); Action = reader.ReadEnum<WeaponAirstrikeAction>(false);
switch (Action) switch (Action)
{ {
case WeaponAirstrikeAction.Launcher: case WeaponAirstrikeAction.Launcher:

View File

@ -52,7 +52,7 @@ namespace Syroot.Worms.Gen2.Armageddon.ProjectX
BulletSpread = reader.ReadInt32(); BulletSpread = reader.ReadInt32();
Burst = reader.ReadInt32(); Burst = reader.ReadInt32();
BurstSpread = reader.ReadInt32(); BurstSpread = reader.ReadInt32();
Collisions = reader.ReadEnum<CollisionFlags>(true); Collisions = reader.ReadEnum<CollisionFlags>(false);
ExplosionBias = reader.ReadInt32(); ExplosionBias = reader.ReadInt32();
ExplosionPower = reader.ReadInt32(); ExplosionPower = reader.ReadInt32();
MaxDamage = reader.ReadInt32(); MaxDamage = reader.ReadInt32();

View File

@ -69,7 +69,7 @@ namespace Syroot.Worms.Gen2.Armageddon.ProjectX
SpriteSize = reader.ReadInt32(); SpriteSize = reader.ReadInt32();
FixedSpeed = reader.ReadInt32(); FixedSpeed = reader.ReadInt32();
RunAway = reader.ReadBoolean(BinaryBooleanFormat.NonZeroDword); RunAway = reader.ReadBoolean(BinaryBooleanFormat.NonZeroDword);
Collisions = reader.ReadEnum<CollisionFlags>(true); Collisions = reader.ReadEnum<CollisionFlags>(false);
ExplosionBias = reader.ReadInt32(); ExplosionBias = reader.ReadInt32();
ExplosionPushPower = reader.ReadInt32(); ExplosionPushPower = reader.ReadInt32();
ExplosionDamage = reader.ReadInt32(); ExplosionDamage = reader.ReadInt32();
@ -85,7 +85,7 @@ namespace Syroot.Worms.Gen2.Armageddon.ProjectX
Sound = reader.ReadStruct<Sound>(); Sound = reader.ReadStruct<Sound>();
ExplodeOnSpace = reader.ReadBoolean(BinaryBooleanFormat.NonZeroDword); ExplodeOnSpace = reader.ReadBoolean(BinaryBooleanFormat.NonZeroDword);
ExplosionAction = reader.ReadEnum<ExplosionAction>(true); ExplosionAction = reader.ReadEnum<ExplosionAction>(false);
switch (ExplosionAction) switch (ExplosionAction)
{ {
case ExplosionAction.Bounce: case ExplosionAction.Bounce:
@ -103,7 +103,7 @@ namespace Syroot.Worms.Gen2.Armageddon.ProjectX
} }
reader.Position = offset + 180; reader.Position = offset + 180;
ExplosionTarget = reader.ReadEnum<ExplosionTarget>(true); ExplosionTarget = reader.ReadEnum<ExplosionTarget>(false);
reader.Seek(sizeof(int)); reader.Seek(sizeof(int));
switch (ExplosionTarget) switch (ExplosionTarget)
{ {

View File

@ -68,7 +68,7 @@ namespace Syroot.Worms.Gen2.Armageddon.ProjectX
Speed = reader.ReadInt32(); Speed = reader.ReadInt32();
EjectionAngle = reader.ReadInt32(); EjectionAngle = reader.ReadInt32();
DispersionAngle = reader.ReadInt32(); DispersionAngle = reader.ReadInt32();
Collisions = reader.ReadEnum<CollisionFlags>(true); Collisions = reader.ReadEnum<CollisionFlags>(false);
ExplosionBias = reader.ReadInt32(); ExplosionBias = reader.ReadInt32();
ExplosionPushPower = reader.ReadInt32(); ExplosionPushPower = reader.ReadInt32();
ExplosionDamage = reader.ReadInt32(); ExplosionDamage = reader.ReadInt32();
@ -84,7 +84,7 @@ namespace Syroot.Worms.Gen2.Armageddon.ProjectX
Sound = reader.ReadStruct<Sound>(); Sound = reader.ReadStruct<Sound>();
ExplodeOnSpace = reader.ReadBoolean(BinaryBooleanFormat.NonZeroDword); ExplodeOnSpace = reader.ReadBoolean(BinaryBooleanFormat.NonZeroDword);
ExplosionAction = reader.ReadEnum<ExplosionAction>(true); ExplosionAction = reader.ReadEnum<ExplosionAction>(false);
switch (ExplosionAction) switch (ExplosionAction)
{ {
case ExplosionAction.Bounce: case ExplosionAction.Bounce:

View File

@ -131,7 +131,7 @@ namespace Syroot.Worms.Gen2.Armageddon.ProjectX
Unknown2 = reader.ReadInt32(); Unknown2 = reader.ReadInt32();
// Read the activation and the corresponding weapon settings. // Read the activation and the corresponding weapon settings.
Activation = reader.ReadEnum<WeaponActivation>(true); Activation = reader.ReadEnum<WeaponActivation>(false);
switch (Activation) switch (Activation)
{ {
case WeaponActivation.Airstrike: case WeaponActivation.Airstrike:
@ -140,7 +140,7 @@ namespace Syroot.Worms.Gen2.Armageddon.ProjectX
break; break;
case WeaponActivation.Crosshair: case WeaponActivation.Crosshair:
reader.Seek(sizeof(int)); reader.Seek(sizeof(int));
CrosshairAction = reader.ReadEnum<WeaponCrosshairAction>(true); CrosshairAction = reader.ReadEnum<WeaponCrosshairAction>(false);
switch (CrosshairAction) switch (CrosshairAction)
{ {
case WeaponCrosshairAction.Bow: case WeaponCrosshairAction.Bow:
@ -158,7 +158,7 @@ namespace Syroot.Worms.Gen2.Armageddon.ProjectX
} }
break; break;
case WeaponActivation.Spacebar: case WeaponActivation.Spacebar:
SpacebarAction = reader.ReadEnum<WeaponSpacebarAction>(true); SpacebarAction = reader.ReadEnum<WeaponSpacebarAction>(false);
switch (SpacebarAction) switch (SpacebarAction)
{ {
case WeaponSpacebarAction.Armageddon: case WeaponSpacebarAction.Armageddon:
@ -219,7 +219,7 @@ namespace Syroot.Worms.Gen2.Armageddon.ProjectX
break; break;
case WeaponActivation.Throw: case WeaponActivation.Throw:
ThrowHerdCount = reader.ReadInt32(); ThrowHerdCount = reader.ReadInt32();
ThrowAction = reader.ReadEnum<WeaponThrowAction>(true); ThrowAction = reader.ReadEnum<WeaponThrowAction>(false);
switch (ThrowAction) switch (ThrowAction)
{ {
case WeaponThrowAction.Canister: case WeaponThrowAction.Canister:

View File

@ -53,7 +53,7 @@ namespace Syroot.Worms.Gen2
/// <param name="alignData"><c>true</c> to align the data array by 4 bytes.</param> /// <param name="alignData"><c>true</c> to align the data array by 4 bytes.</param>
internal Image(Stream stream, bool alignData) internal Image(Stream stream, bool alignData)
{ {
Load(stream); Load(stream, alignData);
} }
// ---- PROPERTIES --------------------------------------------------------------------------------------------- // ---- PROPERTIES ---------------------------------------------------------------------------------------------