Added damage dealt and kills stats to weapons

This commit is contained in:
Stedd 2024-10-06 11:04:28 +02:00
parent 87e455827c
commit 510aaf1b67
4 changed files with 15 additions and 37 deletions

View File

@ -1,23 +0,0 @@
using GameDev.CoreSystems;
using UnityEngine;
namespace AsteroidGame.ScriptableObjects
{
public class SoWeaponConfig : ScriptableObject, IWeapon
{
[SerializeField] private float _fireRate;
[SerializeField] private float _damage;
public float FireRate
{
get => _fireRate;
set => _fireRate = value;
}
public float Damage
{
get => _damage;
set => _damage = value;
}
}
}

View File

@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 19bf3f6dd184a48499aff1db728edfcd
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -3,6 +3,6 @@ namespace GameDev.CoreSystems
public interface IWeapon
{
public float FireRate { get; set; }
public float Damage { get; set; }
public int Damage { get; set; }
}
}

View File

@ -10,12 +10,16 @@ namespace GameDev.CoreSystems
[field: Header("Config")]
[field: SerializeField] public float FireRate { get; set; }
[field: SerializeField] public float Damage { get; set; }
[field: SerializeField] public int Damage { get; set; }
[field: Header("State")]
[field: SerializeField] public bool FireWeapon { get; set; }
[field: SerializeField] private float _timeUntilFire;
[field: Header("Stats")]
[field: SerializeField] public int NumberOfKills { get; set; }
[field: SerializeField] public int DamageDealt { get; set; }
private void Update()
{
if (FireWeapon)
@ -32,9 +36,12 @@ namespace GameDev.CoreSystems
{
if (hitInfo.transform.TryGetComponent(out Targetable target))
{
target.Damageable.DeathEvent.AddListener(IncrementKillCount);
Debug.DrawRay(position, forward * Vector3.Distance(position, target.GetCenterPosition()),
Color.red, 0.1f);
target.Damageable.ModifyHealth(Mathf.RoundToInt(-Damage));
target.Damageable.ModifyHealth(-Damage);
DamageDealt += Damage;
target.Damageable.DeathEvent.RemoveListener(IncrementKillCount);
}
}
@ -45,5 +52,10 @@ namespace GameDev.CoreSystems
_timeUntilFire = 0;
}
}
private void IncrementKillCount()
{
NumberOfKills += 1;
}
}
}