using UnityEngine;
namespace MalbersAnimations.Controller.Reactions
{
[System.Serializable]
[CreateAssetMenu(menuName = "Malbers Animations/Animal Reactions/Stance Reaction"/*, order = 2*/)]
public class StanceReaction : MReaction
{
public Stance_Reaction type = Stance_Reaction.Set;
[Hide("ShowID",true,false)]
public StanceID ID;
protected override void _React(MAnimal animal)
{
switch (type)
{
case Stance_Reaction.Set:
animal.Stance_Set(ID);
break;
case Stance_Reaction.Reset:
animal.Stance_Reset();
break;
case Stance_Reaction.Toggle:
animal.Stance_Toggle(ID);
break;
case Stance_Reaction.SetDefault:
animal.DefaultStance = ID;
break;
}
}
protected override bool _TryReact(MAnimal animal)
{
_React(animal);
return true;
}
public enum Stance_Reaction
{
/// Enters a Stance
Set,
/// Exits a Stance
Reset,
/// Toggle a Stance
Toggle,
/// Set the Default stance
SetDefault,
}
///
/// VALIDATIONS
///
private void OnEnable() { Validation(); }
private void OnValidate() { Validation(); }
[HideInInspector] public bool ShowID;
private const string reactionName = "Stance → ";
void Validation()
{
fullName = reactionName + type.ToString() + " [" + (ID != null ? ID.name : "None") + "]";
ShowID = true;
switch (type)
{
case Stance_Reaction.Set:
description = "Set a new Stance on an Animal";
break;
case Stance_Reaction.Reset:
description = "Reset a Stance on an Animal. (Changes the Stance Valueto the Animal Default Value)";
ShowID = false;
break;
case Stance_Reaction.Toggle:
description = "Toggle the Stance of an Animal (Between active and default)";
break;
case Stance_Reaction.SetDefault:
description = "Set the Default Stance, Used on the Reset and Toogle Stance Methods";
break;
}
}
}
}