Added more minigum options.
This commit is contained in:
@@ -61,8 +61,8 @@ internal class Player : MoveableSprite
|
||||
{
|
||||
BoundBox = new Rectangle(0, 0, 64, 64);
|
||||
//ActiveWeapons.Add(new Minigun());
|
||||
//ActiveWeapons.Add(new FastMinigun());
|
||||
ActiveWeapons.Add(new MinigunSpread());
|
||||
ActiveWeapons.Add(new MinigunTripleSpreadFast());
|
||||
//ActiveWeapons.Add(new MinigunSpread());
|
||||
Health = 100;
|
||||
Shield = 100;
|
||||
}
|
||||
|
||||
@@ -73,20 +73,167 @@ internal class MinigunSpread : Weapon
|
||||
}
|
||||
}
|
||||
|
||||
internal class FastMinigun : Weapon
|
||||
internal abstract class MinigunSingle : Weapon
|
||||
{
|
||||
public override int FireThreshold => 10;
|
||||
|
||||
public override void Fire(Sprite owner, SpriteUpdateContext context)
|
||||
{
|
||||
// Calculate bullet spawn positions relative to the player's bounding box
|
||||
float x = (owner.Position.X - (7/2) + owner.BoundBox.Width / 2);
|
||||
float y = owner.YPosition - 16;
|
||||
FireBulletFromMuzzleContext fireBulletContext = new()
|
||||
{
|
||||
Owner = owner,
|
||||
SpriteUpdateContext = context,
|
||||
BulletWidth = MinigunBulletSmall.Width,
|
||||
BulletHeight = MinigunBulletSmall.Height,
|
||||
Factory = (x, y, vx, vy2, o) => new MinigunBulletSmall(x, y, vx, vy2, o),
|
||||
ExtraOffset = new(4f, 0),
|
||||
Shots =
|
||||
[
|
||||
new() { Muzzle = MuzzleId.Center, XVelocity = 0, YVelocity = -6 }
|
||||
]
|
||||
};
|
||||
|
||||
// Create bullets with velocity (0, -4)
|
||||
MinigunBulletSmall bullet = new(x, y, 0, -6, owner);
|
||||
FireFromMuzzle(fireBulletContext);
|
||||
|
||||
// Queue the bullets for spawning
|
||||
context.SpawnSprite(bullet);
|
||||
context.AudioManager.PlayPlayerFire();
|
||||
}
|
||||
}
|
||||
|
||||
internal class MinigunSingleSlow : MinigunSingle
|
||||
{
|
||||
public override int FireThreshold => 20;
|
||||
}
|
||||
|
||||
internal class MinigunSingleAverage : MinigunSingle
|
||||
{
|
||||
public override int FireThreshold => 15;
|
||||
}
|
||||
|
||||
|
||||
internal class MinigunSingleFast : MinigunSingle
|
||||
{
|
||||
public override int FireThreshold => 10;
|
||||
}
|
||||
|
||||
internal abstract class MinigunDouble : Weapon
|
||||
{
|
||||
public override void Fire(Sprite owner, SpriteUpdateContext context)
|
||||
{
|
||||
FireBulletFromMuzzleContext fireBulletContext = new()
|
||||
{
|
||||
Owner = owner,
|
||||
SpriteUpdateContext = context,
|
||||
BulletWidth = MinigunBulletMedium.Width,
|
||||
BulletHeight = MinigunBulletMedium.Height,
|
||||
Factory = (x, y, vx, vy2, o) => new MinigunBulletMedium(x, y, vx, vy2, o),
|
||||
ExtraOffset = new(4f, 0),
|
||||
Shots =
|
||||
[
|
||||
new() { Muzzle = MuzzleId.Left, XVelocity = 0, YVelocity = -6 },
|
||||
new() { Muzzle = MuzzleId.Right, XVelocity = 0, YVelocity = -6 }
|
||||
]
|
||||
};
|
||||
|
||||
FireFromMuzzle(fireBulletContext);
|
||||
|
||||
context.AudioManager.PlayPlayerFire();
|
||||
}
|
||||
}
|
||||
|
||||
internal class MinigunDoubleSlow : MinigunDouble
|
||||
{
|
||||
public override int FireThreshold => 30;
|
||||
}
|
||||
|
||||
internal class MinigunDoubleAverage : MinigunDouble
|
||||
{
|
||||
public override int FireThreshold => 20;
|
||||
}
|
||||
|
||||
|
||||
internal class MinigunDoubleFast : MinigunDouble
|
||||
{
|
||||
public override int FireThreshold => 15;
|
||||
}
|
||||
|
||||
internal abstract class MinigunTriple : Weapon
|
||||
{
|
||||
public override void Fire(Sprite owner, SpriteUpdateContext context)
|
||||
{
|
||||
FireBulletFromMuzzleContext fireBulletContext = new()
|
||||
{
|
||||
Owner = owner,
|
||||
SpriteUpdateContext = context,
|
||||
BulletWidth = MinigunBulletMedium.Width,
|
||||
BulletHeight = MinigunBulletMedium.Height,
|
||||
Factory = (x, y, vx, vy2, o) => new MinigunBulletMedium(x, y, vx, vy2, o),
|
||||
ExtraOffset = new(4f, 0),
|
||||
Shots =
|
||||
[
|
||||
new() { Muzzle = MuzzleId.Left, XVelocity = 0, YVelocity = -6 },
|
||||
new() { Muzzle = MuzzleId.Center, XVelocity = 0, YVelocity = -6 },
|
||||
new() { Muzzle = MuzzleId.Right, XVelocity = 0, YVelocity = -6 }
|
||||
]
|
||||
};
|
||||
|
||||
FireFromMuzzle(fireBulletContext);
|
||||
|
||||
context.AudioManager.PlayPlayerFire();
|
||||
}
|
||||
}
|
||||
|
||||
internal class MinigunTripleSlow : MinigunTriple
|
||||
{
|
||||
public override int FireThreshold => 30;
|
||||
}
|
||||
|
||||
internal class MinigunTripleAverage : MinigunTriple
|
||||
{
|
||||
public override int FireThreshold => 20;
|
||||
}
|
||||
|
||||
|
||||
internal class MinigunTripleFast : MinigunTriple
|
||||
{
|
||||
public override int FireThreshold => 15;
|
||||
}
|
||||
|
||||
internal abstract class MinigunTripleSpread : Weapon
|
||||
{
|
||||
public override void Fire(Sprite owner, SpriteUpdateContext context)
|
||||
{
|
||||
FireBulletFromMuzzleContext fireBulletContext = new()
|
||||
{
|
||||
Owner = owner,
|
||||
SpriteUpdateContext = context,
|
||||
BulletWidth = MinigunBulletLarge.Width,
|
||||
BulletHeight = MinigunBulletLarge.Height,
|
||||
Factory = (x, y, vx, vy2, o) => new MinigunBulletLarge(x, y, vx, vy2, o),
|
||||
ExtraOffset = new(4f, 0),
|
||||
Shots =
|
||||
[
|
||||
new() { Muzzle = MuzzleId.Left, XVelocity = -1, YVelocity = -6 },
|
||||
new() { Muzzle = MuzzleId.Right, XVelocity = 1, YVelocity = -6 },
|
||||
new() { Muzzle = MuzzleId.Center, XVelocity = 0, YVelocity = -6 }
|
||||
]
|
||||
};
|
||||
|
||||
FireFromMuzzle(fireBulletContext);
|
||||
|
||||
context.AudioManager.PlayPlayerFire();
|
||||
}
|
||||
}
|
||||
|
||||
internal class MinigunTripleSpreadSlow : MinigunTripleSpread
|
||||
{
|
||||
public override int FireThreshold => 30;
|
||||
}
|
||||
|
||||
internal class MinigunTripleSpreadAverage : MinigunTripleSpread
|
||||
{
|
||||
public override int FireThreshold => 20;
|
||||
}
|
||||
|
||||
|
||||
internal class MinigunTripleSpreadFast : MinigunTripleSpread
|
||||
{
|
||||
public override int FireThreshold => 15;
|
||||
}
|
||||
Reference in New Issue
Block a user