component.py (2094B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\dynamicresources\client\ess\bracket\component.py 2 import eveui 3 import spacecomponents.client 4 import threadutils 5 from dynamicresources.client.ess.bracket.root import EssBracket as EssBracketUi 6 from dynamicresources.client.service import get_dynamic_resource_service 7 from dynamicresources.common.ess.const import ESS_MAX_LINK_DISTANCE_METERS 8 9 class EssBracket(spacecomponents.Component): 10 11 def __init__(self, itemID, typeID, attributes, componentRegistry): 12 super(EssBracket, self).__init__(itemID, typeID, attributes, componentRegistry) 13 self._bracket_ui = None 14 self.SubscribeToMessage(spacecomponents.MSG_ON_ADDED_TO_SPACE, self._on_added_to_space) 15 self.SubscribeToMessage(spacecomponents.MSG_ON_REMOVED_FROM_SPACE, self._on_removed_from_space) 16 17 def _on_added_to_space(self, slim_item): 18 if self._bracket_ui is None: 19 self._bracket_ui = EssBracketUi(slim_item.itemID) 20 self._start_range_update_loop() 21 22 def _on_removed_from_space(self): 23 if self._bracket_ui: 24 self._bracket_ui.close() 25 self._bracket_ui = None 26 self._update_range_state(in_range=False) 27 28 @threadutils.threaded 29 def _start_range_update_loop(self): 30 while self._bracket_ui is not None: 31 eveui.wait_for_next_frame() 32 ballpark = sm.GetService('michelle').GetBallpark() 33 if ballpark is None: 34 self._update_range_state(in_range=False) 35 continue 36 if any((ballpark.GetBall(item_id) is None for item_id in (self.itemID, session.shipid))): 37 self._update_range_state(in_range=False) 38 continue 39 distance = ballpark.DistanceBetween(session.shipid, self.itemID) 40 in_range = distance <= ESS_MAX_LINK_DISTANCE_METERS 41 self._update_range_state(in_range) 42 43 def _update_range_state(self, in_range): 44 service = get_dynamic_resource_service() 45 service.ess_state_provider.evolve(in_range=in_range)