gameActorStatePlayerStuck.lua 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. local gameActorState = require( "actor/gameActorState")
  2. local gameActorStatePlayerStuck = class('gameActorStatePlayerStuck', gameActorState)
  3. local MIN_PLAYER_STUCK_STATE_TIME =0.1
  4. function gameActorStatePlayerStuck:ctor()
  5. gameActorStatePlayerStuck.super.ctor(self)
  6. end
  7. function gameActorStatePlayerStuck:Tick(dt, player)
  8. player.mCurrentActT = player.mCurrentActT - dt
  9. if player.mCurrentActT <= 0.00001 then
  10. if player.mActionHandler then
  11. player.mActionHandler:handleActionCompleted( player, global.MMO.ACTION_STUCK )
  12. end
  13. end
  14. end
  15. function gameActorStatePlayerStuck:OnEnter(player)
  16. if player.mActionHandler then
  17. player.mActionHandler:handleActionBegin( player, global.MMO.ACTION_STUCK, player.mOrient, 0 )
  18. end
  19. local mapProxy = global.Facade:retrieveProxy(global.ProxyTable.Map)
  20. local stuckTimeMS = (mapProxy:GetStuckActionTime() or 200) / 1000
  21. local currentActT = stuckTimeMS
  22. if player:GetIsFullSpeedup() then
  23. currentActT = stuckTimeMS / global.MMO.DEFAULT_MUCH_FAST_TIME
  24. elseif player:GetIsSpeedup() then
  25. currentActT = stuckTimeMS / global.MMO.DEFAULT_FAST_TIME_RATE
  26. end
  27. player.mCurrentActT = currentActT
  28. --
  29. player:SetAnimPrepare( 0.0 )
  30. player:dirtyAnimFlag()
  31. end
  32. function gameActorStatePlayerStuck:OnExit(player)
  33. player:dirtyAnimFlag()
  34. end
  35. function gameActorStatePlayerStuck:ChangeState(newState, player, isTerminate)
  36. player.mCurrentState = newState
  37. return true
  38. end
  39. function gameActorStatePlayerStuck:GetStateID()
  40. return global.MMO.ACTION_STUCK
  41. end
  42. return gameActorStatePlayerStuck