65 lines
1.5 KiB
C#
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;
|
|
|
|
}
|
|
} |