36 lines
1.0 KiB
C#

using System;
using UnityEngine;
[RequireComponent(typeof(AudioSource))]
public abstract class Weapon : MonoBehaviour
{
[Header("Ссылки")]
[SerializeField] protected GameObject ProjectilePrefab;
[SerializeField] protected Transform ShootPoint;
[SerializeField] protected GameObject Owner;
[SerializeField] protected AudioSource ShootAudio;
public int Ammo = 20;
protected float LastShootTime = 0;
//События
public event Action<AbstractProjectile> OnShoot;
//Свойства
public abstract bool CanShoot { get; }
public abstract float ReloadPercent { get; }
//Методы
public abstract void Shoot();
/// <summary>
/// Вызывает событие выстрела для внешних систем. Списывает 1 снаряд.
/// </summary>
public void PerformShoot(AbstractProjectile projectile)
{
Ammo -= 1;
LastShootTime = Time.time;
ShootAudio?.Play();
OnShoot?.Invoke(projectile);
}
}