BITFALL/Assets/Artists/Scripts/Equip/AssetableGun.cs

65 lines
1.5 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using BITKit;
namespace BITFALL.Guns
{
/// <summary>
/// 射击模式的接口
/// </summary>
public interface IFireMode
{
float FireRate { get; }
}
/// <summary>
/// 射击模式的基类
/// </summary>
public record FireMode : IFireMode {
[SerializeField]protected float fireRate;
public float FireRate => fireRate;
}
/// <summary>
/// 自动开火模式
/// </summary>
[System.Serializable]
public record AutoFireMode : FireMode
{
}
/// <summary>
/// 半自动开火模式
/// </summary>
[System.Serializable]
public record SemiFireMode : FireMode
{
}
/// <summary>
/// 爆炸射击模式 BurstRound为爆炸开火时一次发射的子弹数量
///
/// </summary>
[System.Serializable]
public record BurstFireMode : FireMode
{
[SerializeField] protected int brustRound;
[SerializeField] protected float burstFireInterval;
public int BurstRound=> brustRound;
public float BurstFireInterval => burstFireInterval;
}
/// <summary>
/// 资产化武器配置
/// </summary>
[System.Serializable]
public record ArrowFireMode : FireMode
{
}
public class AssetableGun : AssetableEquip
{
[Header("GunSettings")]
[SerializeField, SerializeReference, SubclassSelector] protected IFireMode fireMode;
public IFireMode FireMode => fireMode;
}
}