gameActorStatePlayerAttack.lua 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. local gameActorState = require( "actor/gameActorState")
  2. local gameActorStatePlayerAttack = class('gameActorStatePlayerAttack', gameActorState)
  3. function gameActorStatePlayerAttack:ctor()
  4. gameActorStatePlayerAttack.super.ctor(self)
  5. end
  6. function gameActorStatePlayerAttack:Tick(dt, player)
  7. player.mCurrentActT = player.mCurrentActT-dt
  8. if 0 >= player.mCurrentActT and player.mIsConfirmed then
  9. if player.mActionHandler then
  10. player.mActionHandler:handleActionCompleted( player, global.MMO.ACTION_ATTACK )
  11. end
  12. end
  13. -- confirmed timeout
  14. if player.mCurrentActT <= -5.0 then
  15. player:SetConfirmed(true)
  16. end
  17. end
  18. function gameActorStatePlayerAttack:OnEnter(player)
  19. if player.mActionHandler then
  20. player.mActionHandler:handleActionBegin( player, global.MMO.ACTION_ATTACK, player.mOrient, 0 )
  21. end
  22. local animTime = player:GetAttackStepTime() / player:GetAttackSpeed()
  23. player.mCurrentActT = animTime
  24. player.mIsConfirmed = true
  25. -- reset some data
  26. player:SetAnimPrepare( 0.0 )
  27. player:dirtyAnimFlag()
  28. end
  29. function gameActorStatePlayerAttack:OnExit(player)
  30. -- reset prepare time
  31. player:SetAnimPrepare(3)
  32. --
  33. player:SetAnimAct(global.MMO.ANIM_READY)
  34. player:dirtyAnimFlag()
  35. end
  36. function gameActorStatePlayerAttack:ChangeState(newState, player, isTerminate)
  37. player.mCurrentState = newState
  38. return true
  39. end
  40. function gameActorStatePlayerAttack:GetStateID()
  41. return global.MMO.ACTION_ATTACK
  42. end
  43. return gameActorStatePlayerAttack