using System; using BlueWater.Uis; using UnityEngine; namespace BlueWater.Players.Combat { public class CombatSkillController : MonoBehaviour { // Variables #region Variables // Components [SerializeField] private BaseSkill _mainSkillPrefab; private BaseSkill _instantiateMainSkill; // Variables private bool _enableSkill = true; private bool _isActivatingSkill; // Events public event Action OnStartSkill; public event Action OnEndSkill; #endregion // Unity events #region Unity events private void Start() { InitSkill(); } private void OnDestroy() { if (_instantiateMainSkill) { Destroy(_instantiateMainSkill.gameObject); } } #endregion // Initialize methods #region Initialize methods private void InitSkill() { _instantiateMainSkill = Instantiate(_mainSkillPrefab); _instantiateMainSkill.Initialize(gameObject); CombatUiManager.Instance.CombatSkillUi.ResetSkillUi(); } #endregion // Methods #region Methods // Events methods public void HandleEnableSkill() => _enableSkill = true; public void HandleDisableSkill() => _enableSkill = false; public void HandleMainSkill() { if (!CanSkill()) return; OnStartSkill?.Invoke(); _enableSkill = false; _isActivatingSkill = true; _instantiateMainSkill.ActivateSkill(EndSkill); } // Methods private bool CanSkill() { if (!_enableSkill || _isActivatingSkill) return false; return _instantiateMainSkill.CanSkill(); } private void EndSkill() { OnEndSkill?.Invoke(); _isActivatingSkill = false; _enableSkill = true; } #endregion } }