Added other bullet classes. Add plasma pickup audio.
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using AlienAttack.MonoGame.Things.Items;
|
||||
using AlienAttack.MonoGame.Things.Bullets;
|
||||
using AlienAttack.MonoGame.Things.Items;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Audio;
|
||||
using Microsoft.Xna.Framework.Content;
|
||||
@@ -18,10 +19,14 @@ public sealed class AudioManager
|
||||
|
||||
// Pools
|
||||
private VariantSoundPool _playerGunPool = default!;
|
||||
private readonly Dictionary<BulletKind, VariantSoundPool> _playerGunPool2 = [];
|
||||
|
||||
private VariantSoundPool _enemyGunPool = default!;
|
||||
private readonly Dictionary<BulletKind, VariantSoundPool> _enemyGunPool2 = [];
|
||||
|
||||
private VariantSoundPool _explosionPool = default!;
|
||||
private VariantSoundPool _impactPool = default!;
|
||||
private Dictionary<PickupKind, VariantSoundPool> _pickupPool = [];
|
||||
private readonly Dictionary<PickupKind, VariantSoundPool> _pickupPool = [];
|
||||
|
||||
// Rate limiters (global caps per category/event)
|
||||
private RateLimiter _playerGunLimiter = new(0.06f); // max ~16 plays/sec
|
||||
@@ -45,6 +50,7 @@ public sealed class AudioManager
|
||||
LoadShieldPickupPool(content);
|
||||
LoadAmmoPickupPool(content);
|
||||
LoadRocketsPickupPool(content);
|
||||
LoadPlasmaPickupPool(content);
|
||||
}
|
||||
|
||||
private void LoadPlayerGunPool(ContentManager content)
|
||||
@@ -155,6 +161,23 @@ public sealed class AudioManager
|
||||
_pickupPool.Add(PickupKind.Rockets, new VariantSoundPool(variants, voicesPerVariant: 1, rng: _random));
|
||||
}
|
||||
|
||||
//SCIMisc_Sci Fi Shotgun Reload_01_SFRMS_SCIWPNS
|
||||
|
||||
private void LoadPlasmaPickupPool(ContentManager content)
|
||||
{
|
||||
var variants = new[]
|
||||
{
|
||||
content.Load<SoundEffect>("Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_01_SFRMS_SCIWPNS"),
|
||||
content.Load<SoundEffect>("Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_02_SFRMS_SCIWPNS"),
|
||||
content.Load<SoundEffect>("Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_03_SFRMS_SCIWPNS"),
|
||||
content.Load<SoundEffect>("Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_04_SFRMS_SCIWPNS"),
|
||||
content.Load<SoundEffect>("Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_05_SFRMS_SCIWPNS"),
|
||||
content.Load<SoundEffect>("Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_06_SFRMS_SCIWPNS"),
|
||||
};
|
||||
|
||||
_pickupPool.Add(PickupKind.Plasma, new VariantSoundPool(variants, voicesPerVariant: 1, rng: _random));
|
||||
}
|
||||
|
||||
//GUNMech_Rocket Launcher Reload_01_SFRMS_SCIWPNS
|
||||
|
||||
// Call this once per frame
|
||||
|
||||
@@ -355,6 +355,120 @@
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Rocket Launcher/GUNMech_Rocket Launcher Reload_11_SFRMS_SCIWPNS.wav;Sfx/Rocket Launcher/GUNMech_Rocket Launcher Reload_11_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire Heavy_01_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire Heavy_01_SFRMS_SCIWPNS.wav;Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire Heavy_01_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire Heavy_02_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire Heavy_02_SFRMS_SCIWPNS.wav;Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire Heavy_02_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire Heavy_03_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire Heavy_03_SFRMS_SCIWPNS.wav;Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire Heavy_03_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire Heavy_04_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire Heavy_04_SFRMS_SCIWPNS.wav;Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire Heavy_04_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire Heavy_05_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire Heavy_05_SFRMS_SCIWPNS.wav;Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire Heavy_05_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire Heavy_06_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire Heavy_06_SFRMS_SCIWPNS.wav;Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire Heavy_06_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_01_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_01_SFRMS_SCIWPNS.wav;Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_01_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_02_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_02_SFRMS_SCIWPNS.wav;Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_02_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_03_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_03_SFRMS_SCIWPNS.wav;Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_03_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_04_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_04_SFRMS_SCIWPNS.wav;Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_04_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_05_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_05_SFRMS_SCIWPNS.wav;Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_05_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_06_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_06_SFRMS_SCIWPNS.wav;Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_06_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_07_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_07_SFRMS_SCIWPNS.wav;Sfx/Sci Fi Shotgun/GUNTech_Sci Fi Shotgun Fire_07_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_01_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_01_SFRMS_SCIWPNS.wav;Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_01_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_02_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_02_SFRMS_SCIWPNS.wav;Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_02_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_03_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_03_SFRMS_SCIWPNS.wav;Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_03_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_04_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_04_SFRMS_SCIWPNS.wav;Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_04_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_05_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_05_SFRMS_SCIWPNS.wav;Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_05_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_06_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
/processorParam:Quality=Best
|
||||
/build:Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_06_SFRMS_SCIWPNS.wav;Sfx/Sci Fi Shotgun/SCIMisc_Sci Fi Shotgun Reload_06_SFRMS_SCIWPNS
|
||||
|
||||
#begin Sfx/Shield/SCIEnrg_Shield Activate_01_SFRMS_SCIWPNS.wav
|
||||
/importer:WavImporter
|
||||
/processor:SoundEffectProcessor
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
17
AlientAttack.MonoGame/Things/Bullets/BulletKind.cs
Normal file
17
AlientAttack.MonoGame/Things/Bullets/BulletKind.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
namespace AlienAttack.MonoGame.Things.Bullets;
|
||||
|
||||
public enum BulletKind
|
||||
{
|
||||
LaserSmall,
|
||||
LaserMedium,
|
||||
LaserLarge,
|
||||
MinigunSmall,
|
||||
MinigunMedium,
|
||||
MinigunLarge,
|
||||
PlasmaSmall,
|
||||
PlasmaMedium,
|
||||
PlasmaLarge,
|
||||
ProtonSmall,
|
||||
ProtonMedium,
|
||||
ProtonLarge
|
||||
}
|
||||
27
AlientAttack.MonoGame/Things/Bullets/LaserBulletLarge.cs
Normal file
27
AlientAttack.MonoGame/Things/Bullets/LaserBulletLarge.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using System;
|
||||
|
||||
namespace AlienAttack.MonoGame.Things.Bullets;
|
||||
|
||||
internal class LaserBulletLarge : Bullet
|
||||
{
|
||||
public const int Width = 8;
|
||||
public const int Height = 28;
|
||||
|
||||
public LaserBulletLarge(float x, float y, float xVel, float yVel, Sprite owner) : base(x, y, xVel, yVel, owner)
|
||||
{
|
||||
BoundBox = new(0, 0, Width, Height);
|
||||
Damage = 3;
|
||||
}
|
||||
|
||||
public override void Draw(SpriteDrawArgs args)
|
||||
{
|
||||
Texture2D texture = args.Content.Load<Texture2D>(@$"Sprites\Laser_Large");
|
||||
|
||||
float rotation = MathF.Atan2(YVelocity, XVelocity) + MathF.PI / 2f;
|
||||
Vector2 origin = new(texture.Width / 2f, texture.Height / 2f);
|
||||
|
||||
args.SpriteBatch.Draw(texture, Position, null, DrawColor, rotation, origin, 1f, SpriteEffects.None, 1);
|
||||
}
|
||||
}
|
||||
27
AlientAttack.MonoGame/Things/Bullets/LaserBulletMedium.cs
Normal file
27
AlientAttack.MonoGame/Things/Bullets/LaserBulletMedium.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using System;
|
||||
|
||||
namespace AlienAttack.MonoGame.Things.Bullets;
|
||||
|
||||
internal class LaserBulletMedium : Bullet
|
||||
{
|
||||
public const int Width = 7;
|
||||
public const int Height = 21;
|
||||
|
||||
public LaserBulletMedium(float x, float y, float xVel, float yVel, Sprite owner) : base(x, y, xVel, yVel, owner)
|
||||
{
|
||||
BoundBox = new(0, 0, Width, Height);
|
||||
Damage = 2;
|
||||
}
|
||||
|
||||
public override void Draw(SpriteDrawArgs args)
|
||||
{
|
||||
Texture2D texture = args.Content.Load<Texture2D>(@$"Sprites\Laser_Medium");
|
||||
|
||||
float rotation = MathF.Atan2(YVelocity, XVelocity) + MathF.PI / 2f;
|
||||
Vector2 origin = new(texture.Width / 2f, texture.Height / 2f);
|
||||
|
||||
args.SpriteBatch.Draw(texture, Position, null, DrawColor, rotation, origin, 1f, SpriteEffects.None, 1);
|
||||
}
|
||||
}
|
||||
27
AlientAttack.MonoGame/Things/Bullets/LaserBulletSmall.cs
Normal file
27
AlientAttack.MonoGame/Things/Bullets/LaserBulletSmall.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using System;
|
||||
|
||||
namespace AlienAttack.MonoGame.Things.Bullets;
|
||||
|
||||
internal class LaserBulletSmall : Bullet
|
||||
{
|
||||
public const int Width = 6;
|
||||
public const int Height = 18;
|
||||
|
||||
public LaserBulletSmall(float x, float y, float xVel, float yVel, Sprite owner) : base(x, y, xVel, yVel, owner)
|
||||
{
|
||||
BoundBox = new(0, 0, Width, Height);
|
||||
Damage = 1;
|
||||
}
|
||||
|
||||
public override void Draw(SpriteDrawArgs args)
|
||||
{
|
||||
Texture2D texture = args.Content.Load<Texture2D>(@$"Sprites\Laser_Small");
|
||||
|
||||
float rotation = MathF.Atan2(YVelocity, XVelocity) + MathF.PI / 2f;
|
||||
Vector2 origin = new(texture.Width / 2f, texture.Height / 2f);
|
||||
|
||||
args.SpriteBatch.Draw(texture, Position, null, DrawColor, rotation, origin, 1f, SpriteEffects.None, 1);
|
||||
}
|
||||
}
|
||||
27
AlientAttack.MonoGame/Things/Bullets/PlasmaBulletLarge.cs
Normal file
27
AlientAttack.MonoGame/Things/Bullets/PlasmaBulletLarge.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using System;
|
||||
|
||||
namespace AlienAttack.MonoGame.Things.Bullets;
|
||||
|
||||
internal class PlasmaBulletLarge : Bullet
|
||||
{
|
||||
public const int Width = 9;
|
||||
public const int Height = 31;
|
||||
|
||||
public PlasmaBulletLarge(float x, float y, float xVel, float yVel, Sprite owner) : base(x, y, xVel, yVel, owner)
|
||||
{
|
||||
BoundBox = new(0, 0, Width, Height);
|
||||
Damage = 3;
|
||||
}
|
||||
|
||||
public override void Draw(SpriteDrawArgs args)
|
||||
{
|
||||
Texture2D texture = args.Content.Load<Texture2D>(@$"Sprites\Plasma_Large");
|
||||
|
||||
float rotation = MathF.Atan2(YVelocity, XVelocity) + MathF.PI / 2f;
|
||||
Vector2 origin = new(texture.Width / 2f, texture.Height / 2f);
|
||||
|
||||
args.SpriteBatch.Draw(texture, Position, null, DrawColor, rotation, origin, 1f, SpriteEffects.None, 1);
|
||||
}
|
||||
}
|
||||
27
AlientAttack.MonoGame/Things/Bullets/PlasmaBulletMedium.cs
Normal file
27
AlientAttack.MonoGame/Things/Bullets/PlasmaBulletMedium.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using System;
|
||||
|
||||
namespace AlienAttack.MonoGame.Things.Bullets;
|
||||
|
||||
internal class PlasmaBulletMedium : Bullet
|
||||
{
|
||||
public const int Width = 8;
|
||||
public const int Height = 26;
|
||||
|
||||
public PlasmaBulletMedium(float x, float y, float xVel, float yVel, Sprite owner) : base(x, y, xVel, yVel, owner)
|
||||
{
|
||||
BoundBox = new(0, 0, Width, Height);
|
||||
Damage = 2;
|
||||
}
|
||||
|
||||
public override void Draw(SpriteDrawArgs args)
|
||||
{
|
||||
Texture2D texture = args.Content.Load<Texture2D>(@$"Sprites\Plasma_Medium");
|
||||
|
||||
float rotation = MathF.Atan2(YVelocity, XVelocity) + MathF.PI / 2f;
|
||||
Vector2 origin = new(texture.Width / 2f, texture.Height / 2f);
|
||||
|
||||
args.SpriteBatch.Draw(texture, Position, null, DrawColor, rotation, origin, 1f, SpriteEffects.None, 1);
|
||||
}
|
||||
}
|
||||
27
AlientAttack.MonoGame/Things/Bullets/PlasmaBulletSmall.cs
Normal file
27
AlientAttack.MonoGame/Things/Bullets/PlasmaBulletSmall.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using System;
|
||||
|
||||
namespace AlienAttack.MonoGame.Things.Bullets;
|
||||
|
||||
internal class PlasmaBulletSmall : Bullet
|
||||
{
|
||||
public const int Width = 7;
|
||||
public const int Height = 24;
|
||||
|
||||
public PlasmaBulletSmall(float x, float y, float xVel, float yVel, Sprite owner) : base(x, y, xVel, yVel, owner)
|
||||
{
|
||||
BoundBox = new(0, 0, Width, Height);
|
||||
Damage = 1;
|
||||
}
|
||||
|
||||
public override void Draw(SpriteDrawArgs args)
|
||||
{
|
||||
Texture2D texture = args.Content.Load<Texture2D>(@$"Sprites\Plasma_Small");
|
||||
|
||||
float rotation = MathF.Atan2(YVelocity, XVelocity) + MathF.PI / 2f;
|
||||
Vector2 origin = new(texture.Width / 2f, texture.Height / 2f);
|
||||
|
||||
args.SpriteBatch.Draw(texture, Position, null, DrawColor, rotation, origin, 1f, SpriteEffects.None, 1);
|
||||
}
|
||||
}
|
||||
27
AlientAttack.MonoGame/Things/Bullets/ProtonBulletLarge.cs
Normal file
27
AlientAttack.MonoGame/Things/Bullets/ProtonBulletLarge.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using System;
|
||||
|
||||
namespace AlienAttack.MonoGame.Things.Bullets;
|
||||
|
||||
internal class ProtonBulletLarge : Bullet
|
||||
{
|
||||
public const int Width = 13;
|
||||
public const int Height = 13;
|
||||
|
||||
public ProtonBulletLarge(float x, float y, float xVel, float yVel, Sprite owner) : base(x, y, xVel, yVel, owner)
|
||||
{
|
||||
BoundBox = new(0, 0, Width, Height);
|
||||
Damage = 3;
|
||||
}
|
||||
|
||||
public override void Draw(SpriteDrawArgs args)
|
||||
{
|
||||
Texture2D texture = args.Content.Load<Texture2D>(@$"Sprites\Proton_Large");
|
||||
|
||||
float rotation = MathF.Atan2(YVelocity, XVelocity) + MathF.PI / 2f;
|
||||
Vector2 origin = new(texture.Width / 2f, texture.Height / 2f);
|
||||
|
||||
args.SpriteBatch.Draw(texture, Position, null, DrawColor, rotation, origin, 1f, SpriteEffects.None, 1);
|
||||
}
|
||||
}
|
||||
27
AlientAttack.MonoGame/Things/Bullets/ProtonBulletMedium.cs
Normal file
27
AlientAttack.MonoGame/Things/Bullets/ProtonBulletMedium.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using System;
|
||||
|
||||
namespace AlienAttack.MonoGame.Things.Bullets;
|
||||
|
||||
internal class ProtonBulletMedium : Bullet
|
||||
{
|
||||
public const int Width = 10;
|
||||
public const int Height = 10;
|
||||
|
||||
public ProtonBulletMedium(float x, float y, float xVel, float yVel, Sprite owner) : base(x, y, xVel, yVel, owner)
|
||||
{
|
||||
BoundBox = new(0, 0, Width, Height);
|
||||
Damage = 2;
|
||||
}
|
||||
|
||||
public override void Draw(SpriteDrawArgs args)
|
||||
{
|
||||
Texture2D texture = args.Content.Load<Texture2D>(@$"Sprites\Proton_Medium");
|
||||
|
||||
float rotation = MathF.Atan2(YVelocity, XVelocity) + MathF.PI / 2f;
|
||||
Vector2 origin = new(texture.Width / 2f, texture.Height / 2f);
|
||||
|
||||
args.SpriteBatch.Draw(texture, Position, null, DrawColor, rotation, origin, 1f, SpriteEffects.None, 1);
|
||||
}
|
||||
}
|
||||
27
AlientAttack.MonoGame/Things/Bullets/ProtonBulletSmall.cs
Normal file
27
AlientAttack.MonoGame/Things/Bullets/ProtonBulletSmall.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using System;
|
||||
|
||||
namespace AlienAttack.MonoGame.Things.Bullets;
|
||||
|
||||
internal class ProtonBulletSmall : Bullet
|
||||
{
|
||||
public const int Width = 6;
|
||||
public const int Height = 6;
|
||||
|
||||
public ProtonBulletSmall(float x, float y, float xVel, float yVel, Sprite owner) : base(x, y, xVel, yVel, owner)
|
||||
{
|
||||
BoundBox = new(0, 0, Width, Height);
|
||||
Damage = 1;
|
||||
}
|
||||
|
||||
public override void Draw(SpriteDrawArgs args)
|
||||
{
|
||||
Texture2D texture = args.Content.Load<Texture2D>(@$"Sprites\Proton_Small");
|
||||
|
||||
float rotation = MathF.Atan2(YVelocity, XVelocity) + MathF.PI / 2f;
|
||||
Vector2 origin = new(texture.Width / 2f, texture.Height / 2f);
|
||||
|
||||
args.SpriteBatch.Draw(texture, Position, null, DrawColor, rotation, origin, 1f, SpriteEffects.None, 1);
|
||||
}
|
||||
}
|
||||
@@ -22,53 +22,6 @@ internal class Minigun : Weapon
|
||||
context.SpawnSprite(bullet1);
|
||||
context.SpawnSprite(bullet2);
|
||||
|
||||
//int number = context.Random.Next(1, 7);
|
||||
|
||||
//SoundEffect soundEffect = context.Content.Load<SoundEffect>(@$"Sfx\GUNAuto_Assault Rifle A Fire_0{number}_SFRMS_SCIWPNS");
|
||||
//soundEffect.Play(0.25f, (float)(context.Random.NextDouble() * 0.1 - 0.05), 0);
|
||||
|
||||
context.AudioManager.PlayPlayerFire();
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
@@ -204,9 +157,9 @@ internal abstract class MinigunTripleSpread : Weapon
|
||||
{
|
||||
Owner = owner,
|
||||
SpriteUpdateContext = context,
|
||||
BulletWidth = MinigunBulletLarge.Width,
|
||||
BulletHeight = MinigunBulletLarge.Height,
|
||||
Factory = (x, y, vx, vy2, o) => new MinigunBulletLarge(x, y, vx, vy2, o),
|
||||
BulletWidth = LaserBulletLarge.Width,
|
||||
BulletHeight = LaserBulletLarge.Height,
|
||||
Factory = (x, y, vx, vy2, o) => new LaserBulletLarge(x, y, vx, vy2, o),
|
||||
ExtraOffset = new(4f, 0),
|
||||
Shots =
|
||||
[
|
||||
|
||||
Reference in New Issue
Block a user