You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.0 KiB
C#
63 lines
2.0 KiB
C#
using MalbersAnimations.Controller;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace MalbersAnimations.Conditions
|
|
{
|
|
[System.Serializable]
|
|
public class C_AnimalMode : MAnimalCondition
|
|
{
|
|
public override string DisplayName => "Animal/Modes";
|
|
public enum ModeCondition { PlayingMode, PlayingAbility, HasMode, HasAbility, Enabled }
|
|
public ModeCondition Condition;
|
|
public ModeID Value;
|
|
[Hide("showName", true,false)]
|
|
public string AbilityName;
|
|
|
|
private Mode mode;
|
|
|
|
private void OnEnable()
|
|
{
|
|
if (Target) mode = Target.Mode_Get(Value);
|
|
}
|
|
|
|
|
|
public void SetValue(ModeID v) => Value = v;
|
|
|
|
|
|
public override bool _Evaluate()
|
|
{
|
|
if (Target != null && mode != null)
|
|
{
|
|
switch (Condition)
|
|
{
|
|
case ModeCondition.PlayingMode:
|
|
return Target.IsPlayingMode && (Value == null || Target.ActiveMode.ID == Value);
|
|
case ModeCondition.PlayingAbility:
|
|
return Target.IsPlayingMode && (string.IsNullOrEmpty(AbilityName) || Target.ActiveMode.ActiveAbility.Name == AbilityName);
|
|
case ModeCondition.HasMode:
|
|
return mode != null;
|
|
case ModeCondition.HasAbility:
|
|
return mode != null && mode.Abilities.Exists(x => x.Name == AbilityName);
|
|
case ModeCondition.Enabled:
|
|
return mode != null && mode.Active;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private void Reset() => Name = "New Animal Mode Condition";
|
|
|
|
[HideInInspector, SerializeField] private bool showName;
|
|
|
|
|
|
protected override void OnValidate()
|
|
{
|
|
base.OnValidate();
|
|
|
|
showName = Condition == ModeCondition.PlayingAbility || Condition == ModeCondition.HasAbility;
|
|
}
|
|
|
|
}
|
|
}
|