using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public partial class SaionjiScript : MonoBehaviour
{
///
/// ability system
///
AbilitySystem m_AbilitySystem = new AbilitySystem();
ConditionBase And(ConditionBase c1, ConditionBase c2)
{
return new ConditionAnd(c1, c2);
}
ConditionBase Or(ConditionBase c1, ConditionBase c2)
{
return new ConditionOr(c1,c2);
}
///
/// 设置abilities
///
void SetupAbilities()
{
IdleAbility idle = new IdleAbility(animator, Anim_Idle);
MoveAbility move = new MoveAbility(animator, Anim_Run);
AttackAbility attk1 = new AttackAbility(animator, Anim_LightAttack1);
AttackAbility attk2 = new AttackAbility(animator, Anim_LightAttack2);
AttackAbility attk3 = new AttackAbility(animator, Anim_LightAttack3);
AttackAbility attk4 = new AttackAbility(animator, Anim_LightAttack4);
AttackAbility attk5 = new AttackAbility(animator, Anim_LightAttack5);
ActionSwitchAbility switchToMove = new ActionSwitchAbility(m_AbilitySystem, move);
ActionSwitchAbility switchToIdle = new ActionSwitchAbility(m_AbilitySystem, idle);
ActionSwitchAbility switchToAttk1 = new ActionSwitchAbility(m_AbilitySystem, attk1);
ActionSwitchAbility switchToAttk2 = new ActionSwitchAbility(m_AbilitySystem, attk2);
ActionSwitchAbility switchToAttk3 = new ActionSwitchAbility(m_AbilitySystem, attk3);
ActionSwitchAbility switchToAttk4 = new ActionSwitchAbility(m_AbilitySystem, attk4);
ActionSwitchAbility switchToAttk5 = new ActionSwitchAbility(m_AbilitySystem, attk5);
ConditionCommand condRightCmd = new ConditionCommand(GamepadButton.Right);
ConditionNoMoveButtonHold condNoMoveButtonHold = new ConditionNoMoveButtonHold();
ConditionCommand condCircleCmd = new ConditionCommand(GamepadButton.Circle);
Trigger trigger = null;
trigger = new Trigger(condRightCmd, switchToMove);
idle.AddTrigger(trigger);
trigger = new Trigger(condCircleCmd, switchToAttk1);
idle.AddTrigger(trigger);
trigger = new Trigger(condNoMoveButtonHold, switchToIdle);
move.AddTrigger(trigger);
trigger = new Trigger(condCircleCmd, switchToAttk1);
move.AddTrigger(trigger);
ConditionAnimAtEnd condAttk1AtEnd = new ConditionAnimAtEnd(animator, Anim_LightAttack1);
trigger = new Trigger(And(condAttk1AtEnd, condCircleCmd), switchToAttk2);
attk1.AddTrigger(trigger);
ConditionAnimAtEnd condAttk2AtEnd = new ConditionAnimAtEnd(animator, Anim_LightAttack2);
trigger = new Trigger(And(condAttk2AtEnd, condCircleCmd), switchToAttk3);
attk2.AddTrigger(trigger);
ConditionAnimAtEnd condAttk3AtEnd = new ConditionAnimAtEnd(animator, Anim_LightAttack3);
trigger = new Trigger(And(condAttk3AtEnd, condCircleCmd), switchToAttk4);
attk3.AddTrigger(trigger);
ConditionAnimAtEnd condAttk4AtEnd = new ConditionAnimAtEnd(animator, Anim_LightAttack4);
trigger = new Trigger(And(condAttk4AtEnd, condCircleCmd), switchToAttk5);
attk4.AddTrigger(trigger);
ConditionAnimAtEnd condAttk5AtEnd = new ConditionAnimAtEnd(animator, Anim_LightAttack5);
trigger = new Trigger(condAttk5AtEnd, switchToIdle);
attk5.AddTrigger(trigger);
m_AbilitySystem.ForceStart(idle);
}
}