gameActorStatePlayerSYZ.lua 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. local gameActorState = require( "actor/gameActorState")
  2. local gameActorStatePlayerSYZ = class('gameActorStatePlayerSYZ', gameActorState)
  3. function gameActorStatePlayerSYZ:ctor()
  4. gameActorStatePlayerSYZ.super.ctor(self)
  5. end
  6. function gameActorStatePlayerSYZ:GetStateID()
  7. return global.MMO.ACTION_SYZ
  8. end
  9. -----------------------------------------------------------------------------
  10. function gameActorStatePlayerSYZ:Tick(dt, player)
  11. player.mCurrentActT = player.mCurrentActT - dt
  12. if 0 >= player.mCurrentActT and player.mIsConfirmed then
  13. if player.mActionHandler then
  14. player.mActionHandler:handleActionCompleted( player, global.MMO.ACTION_SYZ )
  15. end
  16. end
  17. -- confirmed timeout
  18. if player.mCurrentActT <= -5.0 then
  19. player:SetConfirmed(true)
  20. end
  21. end
  22. -----------------------------------------------------------------------------
  23. function gameActorStatePlayerSYZ:OnEnter(player)
  24. self.super.OnEnter( self, player )
  25. if player.mActionHandler then
  26. player.mActionHandler:handleActionBegin( player, global.MMO.ACTION_SYZ, player.mOrient, 0 )
  27. end
  28. local clothID = player:GetAnimationID()
  29. local SkillPoxy = global.Facade:retrieveProxy(global.ProxyTable.Skill)
  30. local sex = player:GetValueByKey( global.MMO.BUFF_PLAYER_AVATAR_SEX ) or player:GetSexID()
  31. local defaultTime = SkillPoxy:GetSkillActionTime(global.MMO.ACTION_SYZ, clothID, sex) or global.MMO.DEFAULT_SYZ_TIME
  32. local attackSpeed = player:GetMagicSpeed()
  33. if SkillPoxy:GetSkillActionSpeed(global.MMO.ANIM_SYZ) == 0 then
  34. attackSpeed = player:GetAttackSpeed()
  35. end
  36. local animTime = defaultTime / attackSpeed
  37. player.mAnimTime = animTime
  38. player.mCurrentActT = animTime
  39. player:SetConfirmed(true)
  40. -- reset some data
  41. player:SetAnimPrepare( 0.0 )
  42. player:dirtyAnimFlag()
  43. end
  44. -----------------------------------------------------------------------------
  45. function gameActorStatePlayerSYZ:OnExit(player)
  46. -- reset prepare time
  47. player:SetAnimPrepare(3)
  48. --
  49. player:SetAnimAct(global.MMO.ANIM_READY)
  50. player:dirtyAnimFlag()
  51. end
  52. -----------------------------------------------------------------------------
  53. function gameActorStatePlayerSYZ:ChangeState(newState, player, isTerminate)
  54. player.mCurrentState = newState
  55. return true
  56. end
  57. return gameActorStatePlayerSYZ
  58. -----------------------------------------------------------------------------