| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- local Behavior = require("bt/Behavior")
- local BehaviorDig = class("BehaviorDig", Behavior)
- local facade = global.Facade
- local BehaviorConfig = global.BehaviorConfig
- function BehaviorDig:ctor(data)
- BehaviorDig.super.ctor(self, data)
- end
- function BehaviorDig:getType()
- return BehaviorConfig.BehaviorType.BehaviorDig
- end
- function BehaviorDig:update(player, actCompleted)
- local inputProxy = global.Facade:retrieveProxy( global.ProxyTable.PlayerInputProxy )
- local digDest = inputProxy:GetDigDest()
- local mainPlayer = global.gamePlayerController:GetMainPlayer()
- if not mainPlayer then
- return BehaviorConfig.BTSTATUS_Failure
- end
- if not digDest then
- return BehaviorConfig.BTSTATUS_Failure
- end
- local mapX, mapY = global.sceneManager:WorldPos2MapPos(digDest)
- local dest = cc.p(mapX, mapY)
- local targetID = nil
- local targetActor = global.actorManager:Pick(digDest)
-
- if targetActor and targetActor:IsDie() then
- targetID = targetActor:GetID()
- dest = cc.p(targetActor:GetMapX(), targetActor:GetMapY())
- end
- local src = cc.p(mainPlayer:GetMapX(), mainPlayer:GetMapY())
- local dir = inputProxy:calcMapDirection(dest, src)
- if not dir or dir == global.MMO.ORIENT_INVAILD then
- dir = mainPlayer:GetDirection()
- end
- mainPlayer:SetAction(global.MMO.ACTION_SITDOWN)
- mainPlayer:SetDirection(dir)
- --
- inputProxy:RequestDigCorpse(dir, targetID)
- inputProxy:ClearDigDest()
- return BehaviorConfig.BTSTATUS_Running
- end
- return BehaviorDig
|