NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

hauling.py (1938B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\behaviors\actions\hauling.py
      2 from collections import deque
      3 from behaviors.tasks import Task
      4 from ccpProfile import TimedFunction
      5 
      6 class GetHaulerPickUpDestination(Task):
      7 
      8     @TimedFunction('behaviors::actions::utility::GetHaulerPickUpDestination::OnEnter')
      9     def OnEnter(self):
     10         self.SetStatusToFailed()
     11         chosenBallId, ballsStillPendingPickUp = self._ChooseBallIdForPickUp()
     12         if chosenBallId is not None:
     13             self.SendBlackboardValue(self.attributes.chosenBallAddress, chosenBallId)
     14             self.SetStatusToSuccess()
     15         self.SendBlackboardValue(self.attributes.availableBallsAddress, ballsStillPendingPickUp)
     16 
     17     def _ChooseBallIdForPickUp(self):
     18         availableBallIds = self._GetAvailableBallIds()
     19         if len(availableBallIds) == 0:
     20             chosenBallId = None
     21         else:
     22             chosenBallId = availableBallIds.pop()
     23         return (chosenBallId, availableBallIds)
     24 
     25     def _GetAvailableBallIds(self):
     26         availableBallIds = self.GetLastBlackboardValue(self.attributes.availableBallsAddress)
     27         if availableBallIds is None:
     28             return deque()
     29         return availableBallIds
     30 
     31 
     32 class AddMeToHaulerPickUpDestination(Task):
     33 
     34     @TimedFunction('behaviors::actions::utility::AddMeToHaulerPickUpDestination::OnEnter')
     35     def OnEnter(self):
     36         self.SetStatusToSuccess()
     37         availableBallIds = self._GetAvailableBallIds()
     38         if self.context.myItemId in availableBallIds:
     39             return
     40         availableBallIds.appendleft(self.context.myItemId)
     41         self.SendBlackboardValue(self.attributes.availableBallsAddress, availableBallIds)
     42 
     43     def _GetAvailableBallIds(self):
     44         availableBallIds = self.GetLastBlackboardValue(self.attributes.availableBallsAddress)
     45         if availableBallIds is None:
     46             return deque()
     47         return availableBallIds