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.
74 lines
2.3 KiB
C#
74 lines
2.3 KiB
C#
using MalbersAnimations.Scriptables;
|
|
using UnityEngine;
|
|
|
|
|
|
namespace MalbersAnimations.Controller.AI
|
|
{
|
|
[CreateAssetMenu(menuName = "Malbers Animations/Pluggable AI/Decision/Check Mode", order = 2)]
|
|
public class CheckModeDecision : MAIDecision
|
|
{
|
|
public override string DisplayName => "Animal/Check Mode";
|
|
|
|
[Space, Tooltip("Check the Decision on the Animal(Self) or the Target(Target)")]
|
|
public Affected checkOn = Affected.Self;
|
|
[Tooltip("Check if the Mode is Entering or Exiting")]
|
|
public EEnterExit ModeState = EEnterExit.Enter;
|
|
|
|
public ModeID ModeID;
|
|
[Tooltip("Which ability is playing in the Mode. If is set to less or equal to zero; then it will return true if the Mode Playing")]
|
|
public IntReference Ability = new IntReference(0);
|
|
|
|
public override bool Decide(MAnimalBrain brain,int Index)
|
|
{
|
|
switch (checkOn)
|
|
{
|
|
case Affected.Self:
|
|
return AnimalMode(brain.Animal);
|
|
case Affected.Target:
|
|
return AnimalMode(brain.TargetAnimal);
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
private bool AnimalMode(MAnimal animal)
|
|
{
|
|
if (animal == null) return false;
|
|
|
|
switch (ModeState)
|
|
{
|
|
case EEnterExit.Enter:
|
|
return OnEnterMode(animal);
|
|
case EEnterExit.Exit:
|
|
return OnExitMode(animal);
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
private bool OnEnterMode(MAnimal animal)
|
|
{
|
|
if (animal.ActiveModeID == ModeID)
|
|
{
|
|
if (Ability <= 0)
|
|
return true; //Means that Is playing a random mode does not mater which one
|
|
else
|
|
return Ability == (animal.ModeAbility % 1000); //Return if the Ability is playing
|
|
}
|
|
return false;
|
|
}
|
|
|
|
//Why????????????????
|
|
private bool OnExitMode(MAnimal animal)
|
|
{
|
|
if (animal.LastModeID != 0)
|
|
{
|
|
animal.LastModeID = 0;
|
|
animal.LastAbilityIndex = 0;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
}
|