repeaters.py (941B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\behaviors\decorators\repeaters.py 2 from behaviors import status 3 from behaviors.decorators import Decorator 4 from ccpProfile import TimedFunction 5 6 class RepeatWhileFailing(Decorator): 7 8 @TimedFunction('behaviors::decorators::repeaters::RepeatWhileFailing::OnEnter') 9 def OnEnter(self): 10 super(RepeatWhileFailing, self).OnEnter() 11 self.repetitions = self.attributes.maxRepetitions 12 13 @TimedFunction('behaviors::decorators::repeaters::RepeatWhileFailing::DoSubTaskCompleted') 14 def DoSubTaskCompleted(self, task): 15 if task.status is status.TaskSuccessStatus: 16 self.SetStatusToSuccess() 17 else: 18 self.repetitions -= 1 19 if self.repetitions > 0: 20 task.CleanUp() 21 self.behaviorTree.StartTaskNextTick(task) 22 else: 23 self.SetStatusToFailed()