groups.py (1310B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\behaviors\monitors\groups.py 2 from ballpark.entities.entitygroup import MESSAGE_ON_ENTITY_GROUP_MEMBERSHIP_CHANGED 3 from behaviors.groups.mixin import GroupTaskMixin, EntityGroupNotFound 4 from behaviors.tasks import Task 5 import logging 6 logger = logging.getLogger(__name__) 7 8 class GroupMembershipMonitor(Task, GroupTaskMixin): 9 10 def OnEnter(self): 11 self.SubscribeMembershipChanges() 12 self.SetStatusToSuccess() 13 14 def CleanUp(self): 15 if not self.IsInvalid(): 16 self.UnsubscribeMembershipChanges() 17 self.SetStatusToInvalid() 18 19 def OnMembershipChanged(self, _): 20 if self.IsInvalid(): 21 return 22 self.behaviorTree.RequestReset(requestedBy=self) 23 24 def SubscribeMembershipChanges(self): 25 messenger = self.GetGroupMessenger() 26 messenger.SubscribeToMessage(MESSAGE_ON_ENTITY_GROUP_MEMBERSHIP_CHANGED, self.OnMembershipChanged) 27 28 def UnsubscribeMembershipChanges(self): 29 try: 30 messenger = self.GetGroupMessenger() 31 messenger.UnsubscribeFromMessage(MESSAGE_ON_ENTITY_GROUP_MEMBERSHIP_CHANGED, self.OnMembershipChanged) 32 except EntityGroupNotFound: 33 logger.debug('The entity group can not be found')