/// <summary> /// 発射 /// </summary> public override void Fire(ISFXShooter shooter, ISFXAmmo ammo) { if (!m_grip.CanGrip()) { // 打てない状況なら無視 return; } if (m_magazine.IsEmpty()) { // 空なら無理 return; } DoFire(shooter, ammo); }
/// <summary> /// 発射 /// </summary> public abstract void Fire(ISFXShooter shooter, ISFXAmmo ammo);
public override void Fire(ISFXShooter shooter, ISFXAmmo ammo) { }
//================================= // Method //================================= internal static void Fire(ISFXWeapon weapon, ISFXAmmo ammo) { Shooter?.Fire(weapon, ammo); }
//================================== // Method //================================== protected override void DoFire(ISFXShooter shooter, ISFXAmmo ammo) { var playback = Shot(ammo); shooter.Shot(playback); }
protected ISFXPlayback Shot(ISFXAmmo ammo) { m_grip.Press(); m_magazine.Pop(); return(m_barrel.Fire(this, ammo)); }
protected abstract void DoFire(ISFXShooter shooter, ISFXAmmo ammo);
/// <summary> /// 再生処理 /// </summary> public void Fire(ISFXWeapon weapon, ISFXAmmo ammo) { weapon.Fire(this, ammo); }
/// <summary> /// 発射 /// </summary> /// <param name="ammo"></param> public abstract ISFXPlayback Fire(ISFXWeapon weapon, ISFXAmmo ammo);