66 lines
1.6 KiB
C#
66 lines
1.6 KiB
C#
using System;
|
|
using HurricaneVR.Framework.Components;
|
|
using UnityEngine;
|
|
|
|
namespace HurricaneVR.Framework.Weapons
|
|
{
|
|
public class HVRAmmo : HVRDamageProvider
|
|
{
|
|
[Tooltip("Magazine Starting Count")]
|
|
public int StartingCount = 15;
|
|
[Tooltip("Max bullets allowed in the magazine")]
|
|
public int MaxCount;
|
|
|
|
[Tooltip("Bullet Range")]
|
|
public float MaxRange = 40f;
|
|
|
|
[Header("Magazine Cleanup")]
|
|
[Tooltip("Should the empty magazine be destroyed")]
|
|
public bool DestroyIfEmpty = true;
|
|
[Tooltip("How long to wait after ejecting the magazine to destroy it")]
|
|
public float EmptyDestroyTimer = 3f;
|
|
|
|
[Header("Debug")]
|
|
public int CurrentCount;
|
|
|
|
public bool HasAmmo => CurrentCount > 0;
|
|
public bool IsEmpty => CurrentCount <= 0;
|
|
|
|
protected virtual void Awake()
|
|
{
|
|
CurrentCount = StartingCount;
|
|
}
|
|
|
|
public virtual void AddBullet()
|
|
{
|
|
CurrentCount++;
|
|
}
|
|
|
|
public virtual bool CanAddBullet()
|
|
{
|
|
return CurrentCount < MaxCount;
|
|
}
|
|
|
|
public virtual bool TryAddBullet()
|
|
{
|
|
if (CanAddBullet())
|
|
{
|
|
AddBullet();
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public virtual void RemoveBullet()
|
|
{
|
|
CurrentCount--;
|
|
if (CurrentCount < 0)
|
|
CurrentCount = 0;
|
|
}
|
|
|
|
public virtual void StartDestroy()
|
|
{
|
|
Destroy(gameObject, EmptyDestroyTimer);
|
|
}
|
|
}
|
|
} |