using System.Collections.Generic; using GameDev.CoreSystems; using UnityEngine; namespace AsteroidGame.Entities { public class Turret : StructureBase { [Header("WeaponParameters")] [SerializeField] private int _damage = 1; [SerializeField] private float _fireRate = 1; [SerializeField] private float _projectileSpeed = 5; [field: Header("Stats")] [field: SerializeField] public float Kills { get; set; } [field: SerializeField] public float DamageDealt { get; set; } [field: Header("Weapon")] [field: SerializeField] public List Weapons { get; set; } [field: Header("Targeter")] [field: SerializeField] public Targeter Targeter { get; set; } protected override void OnEnable() { base.OnEnable(); InitializeTargeter(); } private void InitializeTargeter() { Targeter.SetParent(Targetable); } private void Update() { HandleWeapon(); HandleStats(); } #region Weapon private void HandleWeapon() { if (!powerSystem.PowerLost.Value) { if (Targeter.FoundTarget()) { FireWeapons(); } else { TurnOffWeapons(); } } else { TurnOffWeapons(); } } private void FireWeapons() { powerSystem.SetCurrentPower(powerSystem.GetMaxPower()); foreach (var weapon in Weapons) { weapon.PivotPoint.transform.LookAt(Targeter.GetTarget().GetCenterPosition()); weapon.FireWeapon = true; } } private void TurnOffWeapons() { //powerSystem.SetCurrentPower(0); foreach (var weapon in Weapons) { weapon.FireWeapon = false; } } #endregion #region Stats private void HandleStats() { Kills = 0; DamageDealt = 0; foreach (var weapon in Weapons) { Kills += weapon.NumberOfKills; DamageDealt += weapon.DamageDealt; } } #endregion } }