92 lines
2.1 KiB
C#
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
|
|
}
|
|
} |