FighterStateAttack.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using UnityEngine;
  2. using System.Collections;
  3. public struct FighterStateAttackParam
  4. {
  5. public int attackInt;
  6. public BaseSkill skill;
  7. public FighterStateAttackParam(int idx, BaseSkill skill)
  8. {
  9. this.attackInt = idx;
  10. this.skill = skill;
  11. }
  12. }
  13. public class FighterStateAttack : FighterState
  14. {
  15. public static FighterState Creator (Fighter fighter)
  16. {
  17. return new FighterStateAttack (fighter);
  18. }
  19. public FighterStateAttack (Fighter fighter)
  20. : base (fighter, FighterStateType.Attack, true)
  21. {
  22. }
  23. public FighterStateAttackParam mAttackParam;
  24. public override void OnEnter (FighterStateType fromState, object param)
  25. {
  26. mAttackParam = (FighterStateAttackParam)param;
  27. if (mAttackParam.attackInt > 0)
  28. mFighter.ShowSkillName(mAttackParam.skill.SkillName);
  29. if (mAttackParam.skill != null)
  30. {
  31. mAnimName = mAttackParam.skill.IsSingSkill ? mAttackParam.skill.SkillSingAnimName : mAttackParam.skill.SkillAnimName;
  32. mStateData.SkillStateData.OnEnter (mAttackParam.skill);
  33. }
  34. base.OnEnter(fromState, param);
  35. }
  36. public override void Update (float deltaTime)
  37. {
  38. if (mAttackParam.skill != null)
  39. {
  40. if (mStateData.SkillStateData.IsNormalEnd)
  41. {
  42. mStateData.ChangeState(mStateData.GetIdleNext());
  43. }
  44. }
  45. else {
  46. mStateData.ChangeState (mStateData.GetIdleNext ());
  47. }
  48. }
  49. public override void OnLeave ()
  50. {
  51. base.OnLeave();
  52. if (mAttackParam.skill != null) {
  53. mStateData.SkillStateData.OnLeave ();
  54. mAttackParam.skill = null;
  55. }
  56. if(mFighter.Ctrl.Animator != null)
  57. mFighter.Ctrl.Animator.speed = 1.0f;
  58. }
  59. public override void OnDataChanged ()
  60. {
  61. if (mAttackParam.attackInt == 5)
  62. return;
  63. if (!mStateData.IsAlive)
  64. mStateData.ChangeState(mStateData.IsGround ? FighterStateType.Die : FighterStateType.BeHitDown);
  65. else if(mStateData.IsVertigo)
  66. mStateData.ChangeState(mStateData.IsGround ? FighterStateType.Vertigo : FighterStateType.BeHitDown);
  67. else if(mStateData.IsSleep)
  68. mStateData.ChangeState(mStateData.IsGround ? FighterStateType.Sleep : FighterStateType.BeHitDown);
  69. else if(mStateData.IsStark)
  70. mStateData.ChangeState (FighterStateType.Stark);
  71. }
  72. public override FighterStateType GetTriggerNextState (FighterStateTriggerType triggerType, int checkVal = 0)
  73. {
  74. switch (triggerType) {
  75. case FighterStateTriggerType.BeHit:
  76. return checkVal > 0? FighterStateType.BeHit:FighterStateType.None;
  77. case FighterStateTriggerType.Attack:
  78. return mFighter.CurrentBattleField.IsPlayingRecorder ? FighterStateType.Attack : FighterStateType.None;
  79. default:
  80. return FighterStateType.None;
  81. }
  82. }
  83. }