CapersProject/Assets/02.Scripts/Character/Player/Combat/CombatSkillController.cs
2024-06-04 03:26:03 +09:00

92 lines
2.1 KiB
C#

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
}
}