Add basic radar and weapon
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using EvilSatellites.Objects;
|
||||
using SynthySound;
|
||||
using EvilSatellites.Screens;
|
||||
using Microsoft.Xna.Framework;
|
||||
|
||||
namespace EvilSatellites.Weapons
|
||||
{
|
||||
public class LaserMG : AbstractWeapon
|
||||
{
|
||||
public AudioAsset sfxShoot;
|
||||
public ISoundEffect sfxReload;
|
||||
public ISoundEffect sfxSpindown;
|
||||
public ISoundEffect sfxSpinup;
|
||||
public ISoundEffect sfxSpinning;
|
||||
public IScreen Screen;
|
||||
public LaserMG(IGameObject wielder, IScreen screen)
|
||||
{
|
||||
_wielder = wielder;
|
||||
Screen = screen;
|
||||
MaxAmmo = 250;
|
||||
RemainingAmmo = MaxAmmo;
|
||||
FireRate = 90;
|
||||
State = WeaponState.Stopped;
|
||||
LoadSounds();
|
||||
}
|
||||
|
||||
public void LoadSounds()
|
||||
{
|
||||
sfxReload = Screen.Manager.Sound.Load(@"sfx/weapons/LaserMG/reload.wav", false);
|
||||
sfxSpindown = Screen.Manager.Sound.Load(@"sfx/weapons/LaserMG/spindown.wav", false);
|
||||
sfxSpinup = Screen.Manager.Sound.Load(@"sfx/weapons/LaserMG/spinup.wav", false);
|
||||
sfxSpinning = Screen.Manager.Sound.Load(@"sfx/weapons/LaserMG/spinning.wav", false);
|
||||
sfxSpinning.Loop = true;
|
||||
sfxShoot = new AudioAsset(Screen.Manager.Sound, @"sfx/weapons/LaserMG/fire", 1, 4);
|
||||
}
|
||||
|
||||
public override void Shoot(GameTime time)
|
||||
{
|
||||
State = WeaponState.Starting;
|
||||
sfxSpinup.Reset();
|
||||
sfxSpinup.Play();
|
||||
TimerStart = time.TotalGameTime.TotalMilliseconds;
|
||||
}
|
||||
|
||||
public override void Stop()
|
||||
{
|
||||
if (State == WeaponState.Firing)
|
||||
{
|
||||
sfxSpinning.Pause();
|
||||
sfxSpindown.Reset();
|
||||
sfxSpindown.Play();
|
||||
State = WeaponState.Stopped;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Update(GameTime time)
|
||||
{
|
||||
TimerEnd += time.ElapsedGameTime.TotalMilliseconds;
|
||||
if (State == WeaponState.Starting)
|
||||
{
|
||||
if (TimerEnd - TimerStart > 800)
|
||||
{
|
||||
State = WeaponState.Firing;
|
||||
sfxSpinning.Play();
|
||||
TimerStart = TimerEnd;
|
||||
}
|
||||
}
|
||||
if (State == WeaponState.Firing)
|
||||
{
|
||||
if (TimerEnd - TimerStart > FireRate)
|
||||
{
|
||||
sfxShoot.Play();
|
||||
TimerStart = TimerEnd;
|
||||
}
|
||||
}
|
||||
base.Update(time);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user