Net.Like.Xue.Tokyo/Packages-Local/Com.Project.B.Unity/Item/ScriptableGun.cs

57 lines
2.7 KiB
C#

using System.Collections;
using System.Collections.Generic;
using BITKit;
using BITKit.FPS;
using Net.Project.B.FPS;
using Project.B.Item;
using UnityEngine;
namespace Net.Project.B.Item
{
public class ScriptableGun : ScriptableWeapon
{
[Header(nameof(ScriptableGun))]
[SerializeField] private int fireRate = 10;
[SerializeField] private int defaultAmmoCapacity = 30;
[SerializeField] private float defaultZoomFactor = 1.2f;
[SerializeField] private int fireMode;
[SerializeField] private Vector3 aimOffset;
[SerializeField] private ScriptableItem defaultAmmoType;
[SerializeField] private PlayerAnimationClips holsteredDrawClip;
[SerializeField] private PlayerAnimationClips runClip;
[SerializeField] private PlayerAnimationClips sprintClip;
[SerializeField] private PlayerAnimationClips climbClip;
[SerializeField] private PlayerAnimationClips reloadClip;
[SerializeField] private PlayerAnimationClips aimClip;
[SerializeField] private PlayerAnimationClips fireClip;
[SerializeField] private PlayerAnimationClips aimFireClip;
[SerializeField] private PlayerAnimationClips slidingClip;
[SerializeField] private ScriptableSprint3 recoil;
public int FireRate =>fireRate<=0 ? 1 : fireRate;
public int DefaultAmmoCapacity => defaultAmmoCapacity<=0 ? 1 : defaultAmmoCapacity;
public float DefaultZoomFactor => defaultZoomFactor;
public int FireMode => fireMode;
public ScriptableItem DefaultAmmoType => defaultAmmoType;
public PlayerAnimationClips HolsteredDrawClip => holsteredDrawClip?holsteredDrawClip:clipBase.holsteredDrawClip;
public PlayerAnimationClips RunClip => runClip?runClip:clipBase.RunClip;
public PlayerAnimationClips SprintClip => sprintClip?sprintClip:clipBase.SprintClip;
public PlayerAnimationClips ClimbClip => climbClip?climbClip:clipBase.ClimbClip;
public PlayerAnimationClips ReloadClip => reloadClip?reloadClip:clipBase.ReloadClip;
public PlayerAnimationClips AimClip => aimClip?aimClip:clipBase.AimClip;
public PlayerAnimationClips FireClip => fireClip?fireClip:clipBase.FireClip;
public PlayerAnimationClips AimFireClip => aimFireClip?aimFireClip:clipBase.AimFireClip;
public PlayerAnimationClips SlidingClip => slidingClip?slidingClip:clipBase.SlidingClip;
public ISprint3 Recoil => recoil;
public Vector3 AimOffset => aimOffset;
public override IRuntimeItem CreateRuntimeItem()
{
var item = base.CreateRuntimeItem();
item.Amount = defaultAmmoCapacity;
return item;
}
}
}