Files
3DBlobici-WorkingTitle/3D blobici/Assets/Scripts/Player/PlayerSkillHandler.cs

71 lines
2.3 KiB
C#
Raw Normal View History

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerSkillHandler: MonoBehaviour
{
[Header("Dash stats")]
[SerializeField] private float dashCooldown;
[SerializeField] private float dashSpeed;
[SerializeField] private float dashDuration;
private bool isDashing = false;
private Dictionary<PlayerSkillTree.Skills, float> cooldowns;
private Dictionary<PlayerSkillTree.Skills, float> cooldownsActivated;
public bool IsDashing() { return isDashing; }
public void Start()
{
cooldowns = new Dictionary<PlayerSkillTree.Skills, float>();
cooldownsActivated = new Dictionary<PlayerSkillTree.Skills, float>();
AssignCooldowns();
}
public IEnumerator DashCoroutine(CharacterController controller, Vector3 direction)
{
Physics.IgnoreLayerCollision(6, 7, true); // disable collisions between player and enemies
float startTime = Time.time;
isDashing = true; // just for now. maybe will be removed
while (Time.time - startTime < dashDuration)
{
controller.Move(dashSpeed * Time.deltaTime * direction);
yield return null; // wait one frame
}
handleCooldownTimer(PlayerSkillTree.Skills.Dash);
isDashing = false; // just for now. maybe will be removed
Physics.IgnoreLayerCollision(6, 7, false); // enable collisions between player and enemies
}
private void handleCooldownTimer(PlayerSkillTree.Skills skill)
{
if(!cooldownsActivated.ContainsKey(skill))
{
cooldownsActivated.Add(skill, Time.time);
}
else
{
cooldownsActivated[skill] = Time.time;
}
}
private void AssignCooldowns()
{
// handle Dash stats
cooldowns.Add(PlayerSkillTree.Skills.Dash, dashCooldown);
cooldownsActivated.Add(PlayerSkillTree.Skills.Dash, Time.time - dashCooldown);
}
public bool IsOnCooldown(PlayerSkillTree.Skills skill)
{
Debug.Log("cooldown time: " + (Time.time - cooldownsActivated[skill]));
Debug.Log("skill cooldown: " + cooldowns[skill]);
return !cooldowns.ContainsKey(skill) || !cooldownsActivated.ContainsKey(skill)
? false
: Time.time - cooldownsActivated[skill] < cooldowns[skill];
}
}