summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Test/SaionjiScript_Ability.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Scripts/Test/SaionjiScript_Ability.cs')
-rw-r--r--Assets/Scripts/Test/SaionjiScript_Ability.cs52
1 files changed, 46 insertions, 6 deletions
diff --git a/Assets/Scripts/Test/SaionjiScript_Ability.cs b/Assets/Scripts/Test/SaionjiScript_Ability.cs
index 375dc631..bd62c138 100644
--- a/Assets/Scripts/Test/SaionjiScript_Ability.cs
+++ b/Assets/Scripts/Test/SaionjiScript_Ability.cs
@@ -29,17 +29,22 @@ public partial class SaionjiScript : MonoBehaviour
/// </summary>
void SetupAbilities()
{
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// abilities
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
IdleAbility idle = new IdleAbility(animator, Anim_Idle);
MoveAbility move = new MoveAbility(animator, Anim_Run);
- MoveAbility dash = new MoveAbility(animator, Anim_Run);
+ MoveAbility dash = new MoveAbility(animator, Anim_DashWithSword);
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);
+ AttackAbility sideKick = new AttackAbility(animator, Anim_SideKick);
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// actions
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ActionTurn180 turn180 = new ActionTurn180(this.transform);
ActionTowardLeft towardLeft = new ActionTowardLeft(this.transform);
ActionTowardRight towardRight = new ActionTowardRight(this.transform);
@@ -51,44 +56,75 @@ public partial class SaionjiScript : MonoBehaviour
ActionSwitchAbility switchToAttk3 = new ActionSwitchAbility(m_AbilitySystem, attk3);
ActionSwitchAbility switchToAttk4 = new ActionSwitchAbility(m_AbilitySystem, attk4);
ActionSwitchAbility switchToAttk5 = new ActionSwitchAbility(m_AbilitySystem, attk5);
+ ActionSwitchAbility switchToSideKick = new ActionSwitchAbility(m_AbilitySystem, sideKick);
+ ActionSwitchAbility switchToDash = new ActionSwitchAbility(m_AbilitySystem, dash);
+ ActionWipeCmdRecord wipeCmdRecord = new ActionWipeCmdRecord();
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// conditions
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ConditionCommand condLeftCmd = new ConditionCommand(GamepadButton.Left);
ConditionCommand condRightCmd = new ConditionCommand(GamepadButton.Right);
ConditionNoMoveButtonHold condNoMoveButtonHold = new ConditionNoMoveButtonHold();
ConditionButtonHold condRightButtonHold = new ConditionButtonHold(GamepadButton.Right);
ConditionButtonHold condLeftButtonHold = new ConditionButtonHold(GamepadButton.Left);
ConditionCommand condCircleCmd = new ConditionCommand(GamepadButton.Circle);
+ ConditionCommand condCrossCmd = new ConditionCommand(GamepadButton.Cross);
ConditionTowardLeft condTowardLeft = new ConditionTowardLeft(this.transform);
ConditionTowardRight condTowardRight = new ConditionTowardRight(this.transform);
+ ConditionCommandSeq condRight2Cmd = new ConditionCommandSeq(new List<GamepadButton>{GamepadButton.Right, GamepadButton.Right }, 1f);
+ ConditionCommandSeq condLeft2Cmd = new ConditionCommandSeq(new List<GamepadButton>{GamepadButton.Left, GamepadButton.Left }, 1f);
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// common triggers
- Trigger triggerTurnRight = new Trigger(condRightCmd, towardRight);
- Trigger triggerTurnLeft = new Trigger(condLeftCmd, towardLeft);
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ Trigger triggerTurnRight = new Trigger(And(condRightButtonHold, Not(condTowardRight)), towardRight);
+ Trigger triggerTurnLeft = new Trigger(And(condLeftButtonHold, Not(condTowardLeft)), towardLeft);
Trigger trigger = null;
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // ability setup
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
// idle ability
- trigger = new Trigger(condRightCmd, new List<ActionBase> { switchToMove, towardRight});
+ trigger = new Trigger(And(condTowardRight, And(condRightCmd, condRight2Cmd)), new List<ActionBase> { wipeCmdRecord , switchToDash });
+ idle.AddTrigger(trigger);
+ trigger = new Trigger(And(condTowardLeft, And(condLeftCmd, condLeft2Cmd)), new List<ActionBase> { wipeCmdRecord , switchToDash });
idle.AddTrigger(trigger);
- trigger = new Trigger(condLeftCmd, new List<ActionBase> { switchToMove, towardLeft});
+ trigger = new Trigger(And(condRightButtonHold, Not(condRight2Cmd)), new List<ActionBase> { switchToMove, towardRight });
+ idle.AddTrigger(trigger);
+ trigger = new Trigger(And(condLeftButtonHold, Not(condLeft2Cmd)), new List<ActionBase> { switchToMove, towardLeft });
idle.AddTrigger(trigger);
trigger = new Trigger(condCircleCmd, switchToAttk1);
idle.AddTrigger(trigger);
+ trigger = new Trigger(condCrossCmd, switchToSideKick);
+ idle.AddTrigger(trigger);
trigger = new Trigger(condLeftCmd, turn180);
idle.AddTrigger(trigger);
// move ability
+ trigger = new Trigger(And(condTowardRight, And(condRightCmd, condRight2Cmd)), new List<ActionBase> { wipeCmdRecord, switchToDash, });
+ move.AddTrigger(trigger);
+ trigger = new Trigger(And(condTowardLeft, And(condLeftCmd, condLeft2Cmd)), new List<ActionBase> { wipeCmdRecord, switchToDash });
+ move.AddTrigger(trigger);
trigger = new Trigger(And(condTowardRight, Not(condRightButtonHold)), switchToIdle);
move.AddTrigger(trigger);
trigger = new Trigger(And(condTowardLeft, Not(condLeftButtonHold)), switchToIdle);
move.AddTrigger(trigger);
trigger = new Trigger(condCircleCmd, switchToAttk1);
move.AddTrigger(trigger);
+ trigger = new Trigger(condCrossCmd, switchToSideKick);
+ move.AddTrigger(trigger);
+
+ // dash ability
+ trigger = new Trigger(new ConditionAnimAtEnd(animator, Anim_DashWithSword), switchToIdle);
+ dash.AddTrigger(trigger);
// attack abilities
float expireTime = 0.3f;
-
+
ConditionAnimAtEnd condAttk1AtEnd = new ConditionAnimAtEnd(animator, Anim_LightAttack1);
trigger = new Trigger(And(condAttk1AtEnd, condCircleCmd), switchToAttk2);
attk1.AddTrigger(trigger);
@@ -134,6 +170,10 @@ public partial class SaionjiScript : MonoBehaviour
attk5.AddTrigger(triggerTurnRight);
attk5.AddTrigger(triggerTurnLeft);
+ ConditionAttkExpireTime condSideKickExpireTime = new ConditionAttkExpireTime(sideKick, expireTime);
+ trigger = new Trigger(condSideKickExpireTime, switchToIdle);
+ sideKick.AddTrigger(trigger);
+
m_AbilitySystem.ForceStart(idle);
}