gather-and-defend/Assets/Scripts/StatusHandler.cs
2025-07-15 01:14:54 -04:00

59 lines
1.5 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class StatusHandler : MonoBehaviour
{
private Entity _entityLinked;
private Dictionary<Enum.StatusType, Status> activeStatuses = new();
public void ApplySlow(float intensity, float duration)
{
// check if effect already applied
Slow slow = (Slow)GetStatus(Enum.StatusType.Slow);
// init effect params
slow.Intensity = intensity;
// apply effect
slow.Apply(duration);
}
// please add status to switch case everytime you design one!
private Status GetStatus(Enum.StatusType type)
{
Status status;
// check if status already exists
activeStatuses.TryGetValue(Enum.StatusType.Slow, out status);
// if status doesn't exist, instantiate it
if (!status)
{
switch (type)
{
case Enum.StatusType.Slow:
status = gameObject.AddComponent<Slow>();
break;
default: break;
}
// if key value pair doesn't exist, create it
if (!activeStatuses.ContainsKey(type))
{
activeStatuses.Add(type, status);
}
}
// link entity to status
status.EntityLinked = _entityLinked;
return status;
}
private void Start()
{
_entityLinked = gameObject.GetComponent<Entity>(); ;
}
}