gameActorStatePlayerTurn.lua 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. local gameActorState = require( "actor/gameActorState")
  2. local gameActorStatePlayerTurn = class('gameActorStatePlayerTurn', gameActorState)
  3. function gameActorStatePlayerTurn:ctor()
  4. gameActorStatePlayerTurn.super.ctor(self)
  5. end
  6. function gameActorStatePlayerTurn:GetStateID()
  7. return global.MMO.ACTION_TURN
  8. end
  9. function gameActorStatePlayerTurn:Tick(dt, player)
  10. player.mCurrentActT = player.mCurrentActT - dt
  11. if player.mCurrentActT <= 0.00001 then
  12. if player.mActionHandler and player.mIsConfirmed then
  13. player.mActionHandler:handleActionCompleted( player, global.MMO.ACTION_TURN )
  14. end
  15. end
  16. --
  17. local prepareTime = player:GetAnimPrepare()
  18. if prepareTime > 0.001 then
  19. if prepareTime - dt <= 0.001 then
  20. player:SetAnimPrepare( 0.0 )
  21. else
  22. player:SetAnimPrepare( prepareTime - dt )
  23. end
  24. end
  25. -- confirmed timeout
  26. if player.mCurrentActT <= -5.0 then
  27. player:SetConfirmed(true)
  28. end
  29. end
  30. function gameActorStatePlayerTurn:OnEnter(player)
  31. self.super.OnEnter( self, player )
  32. if player.mActionHandler then
  33. player.mActionHandler:handleActionBegin( player, global.MMO.ACTION_TURN, player.mOrient, 0 )
  34. end
  35. local mapProxy = global.Facade:retrieveProxy(global.ProxyTable.Map)
  36. local actionTime = mapProxy:GetTurnIntervalTime() * 0.001
  37. player.mCurrentActT = actionTime
  38. -- reset some data
  39. player:SetConfirmed(false)
  40. player:SetAnimPrepare( 0.0 )
  41. player:dirtyAnimFlag()
  42. end
  43. function gameActorStatePlayerTurn:OnExit(player)
  44. player:dirtyAnimFlag()
  45. end
  46. function gameActorStatePlayerTurn:ChangeState(newState, player, isTerminate)
  47. player.mCurrentState = newState
  48. return true
  49. end
  50. return gameActorStatePlayerTurn