80 lines
2.7 KiB
C#
80 lines
2.7 KiB
C#
![]() |
using System;
|
||
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using Project.B.Item;
|
||
|
using UnityEngine;
|
||
|
using Object = UnityEngine.Object;
|
||
|
|
||
|
namespace Net.Project.B.Item
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// 玩家武器槽
|
||
|
/// </summary>
|
||
|
public enum PlayerWeaponSlot:int
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// 主武器
|
||
|
/// </summary>
|
||
|
Primary=1,
|
||
|
/// <summary>
|
||
|
/// 主武器2
|
||
|
/// </summary>
|
||
|
Secondary=2,
|
||
|
/// <summary>
|
||
|
/// 副武器,例如手枪,近战武器等
|
||
|
/// </summary>
|
||
|
Sidearm=3,
|
||
|
/// <summary>
|
||
|
/// 消耗品,通常是护甲,医疗包等
|
||
|
/// </summary>
|
||
|
Supplies=4,
|
||
|
/// <summary>
|
||
|
/// 战术道具
|
||
|
/// </summary>
|
||
|
Tactics=5,
|
||
|
/// <summary>
|
||
|
/// 致命道具
|
||
|
/// </summary>
|
||
|
Lethal=6,
|
||
|
/// <summary>
|
||
|
/// 连杀奖励,特别的武器
|
||
|
/// </summary>
|
||
|
KillStreak=7,
|
||
|
}
|
||
|
|
||
|
|
||
|
[Serializable]
|
||
|
public sealed class PlayerAnimationClips
|
||
|
{
|
||
|
[SerializeField] private AnimationClip armClip;
|
||
|
[SerializeField] private AnimationClip weaponClip;
|
||
|
[SerializeField] private AnimationClip characterClip;
|
||
|
public AnimationClip ArmClip => armClip;
|
||
|
public AnimationClip WeaponClip => weaponClip;
|
||
|
public AnimationClip CharacterClip => characterClip ? characterClip : armClip;
|
||
|
public static implicit operator bool (PlayerAnimationClips value) => value is not null && value.ArmClip && value.WeaponClip;
|
||
|
}
|
||
|
|
||
|
public class ScriptableWeapon : ScriptableItem
|
||
|
{
|
||
|
[Header(nameof(ScriptableWeapon))]
|
||
|
[SerializeField] private GameObject fpsModel;
|
||
|
public GameObject FpsModel => fpsModel;
|
||
|
[SerializeField] private Vector3 offset;
|
||
|
[SerializeField] private PlayerWeaponSlot weaponSlot;
|
||
|
[Header(nameof(AnimationClip))]
|
||
|
[SerializeField] protected ScriptableGun clipBase;
|
||
|
[SerializeField] private PlayerAnimationClips idleClip;
|
||
|
[SerializeField] private PlayerAnimationClips drawClip;
|
||
|
[SerializeField] private PlayerAnimationClips holsterClip;
|
||
|
[SerializeField] private PlayerAnimationClips meleeClip;
|
||
|
|
||
|
public PlayerAnimationClips IdleClip => idleClip?idleClip:clipBase.IdleClip;
|
||
|
public PlayerAnimationClips DrawClip => drawClip?drawClip:clipBase.DrawClip;
|
||
|
public PlayerAnimationClips HolsterClip => holsterClip?holsterClip:clipBase.HolsterClip;
|
||
|
public PlayerAnimationClips MeleeClip => meleeClip?meleeClip:clipBase.MeleeClip;
|
||
|
public int WeaponSlot => (int)weaponSlot;
|
||
|
public Vector3 Offset => offset;
|
||
|
}
|
||
|
}
|