Pedro Gomes 959aa0e3fe Ability UI Binds
with info & animations
2024-07-07 12:51:29 +01:00

71 lines
1.9 KiB
C#

using Photon.Pun;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//[CreateAssetMenu(fileName = "BaseAbility", menuName = "RiftMayhem/AbilitySystem/Abilities/Base Ability", order = 1)]
public class BaseAbility : ScriptableObject
{
public Sprite Icon;
public List<TargetTag> targettingTags = new List<TargetTag>();
public List<GameTag> tags = new List<GameTag>();
public List<BaseEffect> abilityEffects = new List<BaseEffect>();
[Space]
public float castTime;
public float manaCost;
public bool castableWhileMoving;
public AbilityAnimationType animationType;
public virtual void Execute(PhotonView user, Taggable userTag)
{
user.GetComponent<Mana>().ChangeValue(-manaCost);
//for (int i = 0; i < abilityEffects.Count; i++)
//{
// Debug.Log($"Ability {this.name} applied {abilityEffects[i].name} effect at xtarget");
//}
}
public virtual void Execute(PhotonView user, Taggable userTag, Vector3 point)
{
user.GetComponent<Mana>().ChangeValue(-manaCost);
}
private void OnValidate()
{
InitializeUniqueTags();
}
private void OnEnable()
{
InitializeUniqueTags();
}
public void InitializeUniqueTags()
{
tags.Clear();
// Iterate through each effect and add unique GameTags to uniqueTags list
foreach (var effect in abilityEffects)
{
if (effect != null)
{
foreach (var tag in effect.tags)
{
if (!tags.Contains(tag))
{
tags.Add(tag);
}
}
foreach (var statTag in effect.influencingStats)
{
if(!tags.Contains(statTag))
{
tags.Add(statTag);
}
}
}
}
}
}