BehaviorDig.lua 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. local Behavior = require("bt/Behavior")
  2. local BehaviorDig = class("BehaviorDig", Behavior)
  3. local facade = global.Facade
  4. local BehaviorConfig = global.BehaviorConfig
  5. function BehaviorDig:ctor(data)
  6. BehaviorDig.super.ctor(self, data)
  7. end
  8. function BehaviorDig:getType()
  9. return BehaviorConfig.BehaviorType.BehaviorDig
  10. end
  11. function BehaviorDig:update(player, actCompleted)
  12. local inputProxy = global.Facade:retrieveProxy( global.ProxyTable.PlayerInputProxy )
  13. local digDest = inputProxy:GetDigDest()
  14. local mainPlayer = global.gamePlayerController:GetMainPlayer()
  15. if not mainPlayer then
  16. return BehaviorConfig.BTSTATUS_Failure
  17. end
  18. if not digDest then
  19. return BehaviorConfig.BTSTATUS_Failure
  20. end
  21. local mapX, mapY = global.sceneManager:WorldPos2MapPos(digDest)
  22. local dest = cc.p(mapX, mapY)
  23. local targetID = nil
  24. local targetActor = global.actorManager:Pick(digDest)
  25. if targetActor and targetActor:IsDie() then
  26. targetID = targetActor:GetID()
  27. dest = cc.p(targetActor:GetMapX(), targetActor:GetMapY())
  28. end
  29. local src = cc.p(mainPlayer:GetMapX(), mainPlayer:GetMapY())
  30. local dir = inputProxy:calcMapDirection(dest, src)
  31. if not dir or dir == global.MMO.ORIENT_INVAILD then
  32. dir = mainPlayer:GetDirection()
  33. end
  34. mainPlayer:SetAction(global.MMO.ACTION_SITDOWN)
  35. mainPlayer:SetDirection(dir)
  36. --
  37. inputProxy:RequestDigCorpse(dir, targetID)
  38. inputProxy:ClearDigDest()
  39. return BehaviorConfig.BTSTATUS_Running
  40. end
  41. return BehaviorDig