55 lines
1.2 KiB
C#
55 lines
1.2 KiB
C#
using Darkmatter.Core;
|
|
using Darkmatter.Domain;
|
|
using UnityEngine;
|
|
using VContainer;
|
|
|
|
namespace Darkmatter.Presentation
|
|
{
|
|
public class GunWeapon : WeaponBase
|
|
{
|
|
[Header("VFX")]
|
|
public ParticleSystem MuzzleFlashParticle;
|
|
public ParticleSystem BulletHitEffectParticle;
|
|
|
|
[Header("Weapon Data")]
|
|
public float fireRate = 1f;
|
|
public int ammoCount = 40;
|
|
private float lastUsedTime;
|
|
public override string WeaponName => "Rifel";
|
|
|
|
|
|
public override bool canAttack => Time.time >= lastUsedTime + fireRate;
|
|
|
|
[Inject] private IAimProvider aimProvider;
|
|
|
|
|
|
|
|
public override void Attack()
|
|
{
|
|
lastUsedTime = Time.time;
|
|
ammoCount--;
|
|
PlayMuzzleFlash();
|
|
|
|
Vector3 startPos = transform.position;
|
|
Vector3 direction = aimProvider.AimDir;
|
|
|
|
Debug.Log("Attack using Gun");
|
|
|
|
//use ray cast here
|
|
|
|
|
|
//after ray cast use damage logic too
|
|
}
|
|
public override void Reload()
|
|
{
|
|
base.Reload();
|
|
ammoCount = 40;
|
|
}
|
|
|
|
private void PlayMuzzleFlash()
|
|
{
|
|
MuzzleFlashParticle.Play(true);
|
|
}
|
|
}
|
|
}
|