Added more sound effects. Added initial weapon muzzle fire logic.
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
using AlienAttack.MonoGame.Things.Bullets;
|
||||
using Microsoft.Xna.Framework.Audio;
|
||||
using AlienAttack.MonoGame.Things.Muzzles;
|
||||
|
||||
namespace AlienAttack.MonoGame.Things.Weapons;
|
||||
|
||||
public class Minigun : Weapon
|
||||
internal class Minigun : Weapon
|
||||
{
|
||||
public override int FireThreshold => 15;
|
||||
|
||||
@@ -31,7 +31,49 @@ public class Minigun : Weapon
|
||||
}
|
||||
}
|
||||
|
||||
public class FastMinigun : Weapon
|
||||
internal class MinigunSpread : Weapon
|
||||
{
|
||||
public override int FireThreshold => 20;
|
||||
|
||||
public override void Fire(Sprite owner, SpriteUpdateContext context)
|
||||
{
|
||||
// Calculate bullet spawn positions relative to the player's bounding box
|
||||
int x1 = (int)owner.XPosition + 14;
|
||||
int x2 = (int)owner.XPosition + owner.BoundBox.Width - 16;
|
||||
int x3 = (int)owner.XPosition + owner.BoundBox.Width / 2 - 1;
|
||||
int y = (int)owner.YPosition + 10;
|
||||
|
||||
MinigunBulletLarge bullet1 = new(x1, y, -1, -6, owner);
|
||||
MinigunBulletLarge bullet2 = new(x2, y, 1, -6, owner);
|
||||
MinigunBulletLarge bullet3 = new(x3, y-16, 0, -6, owner);
|
||||
|
||||
//context.SpawnSprite(bullet1);
|
||||
//context.SpawnSprite(bullet2);
|
||||
//context.SpawnSprite(bullet3);
|
||||
|
||||
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 FastMinigun : Weapon
|
||||
{
|
||||
public override int FireThreshold => 10;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user