using AsteroidGame.ScriptableObjects; 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; [Header("Stats")] [SerializeField] private float _kills = 0f; [SerializeField] private float _damageDealt = 0f; [Header("RigConnections")] [SerializeField] private Transform _turretHead; [SerializeField] private Transform _barrel; [Header("Targeter")] [SerializeField] private SoTargeterConfig _targeterConfig; [SerializeField] private Targeter _targeter; [SerializeField] private Targetable _target; #region Publics public int Damage { get => _damage; set => _damage = value; } #endregion protected override void OnEnable() { base.OnEnable(); InitializeTargeter(); } private void InitializeTargeter() { _targeter = gameObject.AddComponent(); //_targeter.SetParent(this); _targeter.SetConfig(_targeterConfig); } private void Update() { if (!_targeter.FoundTarget()) return; _target = _targeter.GetTarget(); _turretHead.transform.LookAt(_target.GetCenterPosition()); } } }