gameActorStateMonsterDie.lua 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. local gameActorState = require( "actor/gameActorState")
  2. local gameActorStateMonsterDie = class('gameActorStateMonsterDie', gameActorState)
  3. function gameActorStateMonsterDie:ctor()
  4. gameActorStateMonsterDie.super.ctor(self)
  5. end
  6. function gameActorStateMonsterDie:Tick(dt, monster)
  7. if not monster.mIsArrived then
  8. monster.mCurrentActT = monster.mCurrentActT-dt
  9. if monster.mCurrentActT <= 0.00001 then
  10. monster.mIsArrived = true
  11. monster.mActionHandler:handleActionCompleted( monster, global.MMO.ACTION_DIE )
  12. end
  13. end
  14. end
  15. function gameActorStateMonsterDie:OnEnter( monster)
  16. monster.mCurrentActT = global.FrameAnimManager:GetAnimTotalDuration( monster:GetAnimationID(), global.MMO.SFANIM_TYPE_MONSTER, global.MMO.ANIM_DIE )
  17. monster:SetIsArrived(false)
  18. monster.mActionHandler:handleActionBegin( monster, global.MMO.ACTION_DIE, monster.mOrient, 0 )
  19. end
  20. function gameActorStateMonsterDie:OnExit( actor)
  21. end
  22. function gameActorStateMonsterDie:ChangeState(newState, monster, isTerminate)
  23. if not isTerminate then
  24. if newState:GetStateID() ~= global.MMO.ACTION_IDLE and newState:GetStateID() ~= global.MMO.ACTION_DEATH and newState:GetStateID() ~= global.MMO.ACTION_BORN then
  25. return false
  26. end
  27. end
  28. monster.mCurrentState = newState
  29. return true
  30. end
  31. function gameActorStateMonsterDie:GetStateID()
  32. return global.MMO.ACTION_DIE
  33. end
  34. function gameActorStateMonsterDie:OnAnimLoadCompleted(monster, animAct, elapsed)
  35. if animAct ~= global.MMO.ANIM_DIE then
  36. return false
  37. end
  38. monster.mCurrentActT = global.FrameAnimManager:GetAnimTotalDuration(monster:GetAnimationID(), global.MMO.SFANIM_TYPE_MONSTER, global.MMO.ANIM_DIE) - elapsed
  39. end
  40. return gameActorStateMonsterDie