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

combattargets.py (2258B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\behaviors\monitors\combattargets.py
      2 from ballpark.messenger.const import MESSAGE_TARGET_ADDED, MESSAGE_ON_DOGMA_ATTRIBUTE_VALUE_CHANGED
      3 from behaviors.tasks import Task
      4 from ccpProfile import TimedFunction
      5 from dogma.const import attributeMaxRange, attributeMissileEntityVelocityMultiplier
      6 BEHAVIOR_RANGE_ATTRIBUTES_FOR_RECALCULATION = [attributeMaxRange, attributeMissileEntityVelocityMultiplier]
      7 
      8 class MonitorTargetAdded(Task):
      9 
     10     @TimedFunction('behaviors::monitors::combattargets::MonitorTargetLockSuccess::OnEnter')
     11     def OnEnter(self):
     12         self.SubscribeItem(self.context.myItemId, MESSAGE_TARGET_ADDED, self._OnTargetAdded)
     13         self.SetStatusToSuccess()
     14 
     15     def CleanUp(self):
     16         if not self.IsInvalid():
     17             self.UnsubscribeItem(self.context.myItemId, MESSAGE_TARGET_ADDED, self._OnTargetAdded)
     18         super(MonitorTargetAdded, self).CleanUp()
     19 
     20     @TimedFunction('behaviors::monitors::combattargets::MonitorTargetLockSuccess::_OnMaxLockedTargetsChanged')
     21     def _OnTargetAdded(self, target_id):
     22         if not self.IsInvalid() and self._is_my_pending_target(target_id):
     23             self.behaviorTree.RequestReset(requestedBy=self)
     24 
     25     def _is_my_pending_target(self, target_id):
     26         return self.GetLastBlackboardValue(self.attributes.targetAddress) == target_id
     27 
     28 
     29 class CombatRangeMonitor(Task):
     30 
     31     def OnEnter(self):
     32         self.SetStatusToSuccess()
     33         self.SubscribeItem(self.context.myItemId, MESSAGE_ON_DOGMA_ATTRIBUTE_VALUE_CHANGED, self._on_dogma_attribute_value_changed)
     34 
     35     @TimedFunction('behaviors::monitors::combattargets::CombatRangeMonitor::_on_dogma_attribute_value_changed')
     36     def _on_dogma_attribute_value_changed(self, attribute_id):
     37         if attribute_id in BEHAVIOR_RANGE_ATTRIBUTES_FOR_RECALCULATION:
     38             self.SendBlackboardValue(self.attributes.combatRangeRecalculateAddress, None)
     39             self.behaviorTree.RequestReset(requestedBy=self)
     40 
     41     def CleanUp(self):
     42         if not self.IsInvalid():
     43             self.UnsubscribeItem(self.context.myItemId, MESSAGE_ON_DOGMA_ATTRIBUTE_VALUE_CHANGED, self._on_dogma_attribute_value_changed)
     44         super(CombatRangeMonitor, self).CleanUp()