__init__.py (5767B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\dynamicresources\client\ess\bracket\main_bank\__init__.py 2 import contextlib 3 import math 4 import signals 5 from carbonui import uiconst 6 from carbonui.primitives.containerAutoSize import ContainerAutoSize 7 from carbonui.primitives.transform import Transform 8 from carbonui.uianimations import animations 9 from dynamicresources.client.ess.bracket.main_bank.hacking import Hacking 10 from dynamicresources.client.ess.bracket.main_bank.idle import Idle 11 from dynamicresources.client.ess.bracket.state_machine import StateMachine 12 from dynamicresources.client.ess.bracket.panel import BracketPanel, get_absolute_bounds, Priority 13 from dynamicresources.client.ess.bracket.tether import BracketTether 14 from dynamicresources.client.ess.bracket.transform import BankPanelTransformController, BankTransformSide 15 from dynamicresources.client.service import get_dynamic_resource_service 16 17 class MainBank(BracketPanel): 18 19 def __init__(self, parent, camera, ess_root_transform, on_focus = None): 20 self._camera = camera 21 self._ess_root_transform = ess_root_transform 22 self._watch_token = None 23 self._state_machine = StateMachine() 24 self._main_bank_transform = BankPanelTransformController(root=ess_root_transform, camera=camera, side=BankTransformSide.left, offset_y=2500.0, radius=800.0) 25 super(MainBank, self).__init__(name='ess_main_bank', transform=self._main_bank_transform.transform, layer=parent, camera=camera, collapse_at_camera_distance=100000.0, clipping_dead_zone=50, on_focus=on_focus, collapsed=True) 26 self.playerRequestedCollapseToken = None 27 self._base = ContainerAutoSize(name='ess_main_bank', alignMode=uiconst.CENTERRIGHT) 28 self._main_content = ContainerAutoSize(parent=self._base, align=uiconst.CENTERRIGHT, alignMode=uiconst.TOPRIGHT, left=120) 29 self._content = ContainerAutoSize(parent=self._main_content, align=uiconst.TOPRIGHT, alignMode=uiconst.TOPLEFT, state=uiconst.UI_DISABLED if self.is_collapsed else uiconst.UI_PICKCHILDREN, left=-20 if self.is_collapsed else 0, opacity=0.0 if self.is_collapsed else 1.0) 30 self._content_tracker_token = self.tracker.add(self._base, anchor=(1.0, 0.0), offset=(0, -16)) 31 tether_cont = Transform(name='ess_main_bank_tether', rotation=math.radians(180.0), width=100, height=30) 32 self._tether = BracketTether(parent=tether_cont, align=uiconst.TOPLEFT, collapsed=True, on_click=self._on_tether_click, on_close_point_click=self._on_close_point_click) 33 self.tracker.add(tether_cont, anchor=(1.0, 0.5)) 34 self._on_main_bank_state_update() 35 36 @property 37 def camera(self): 38 return self._camera 39 40 @property 41 def ess_root_transform(self): 42 return self._ess_root_transform 43 44 @property 45 def content_bounds(self): 46 return get_absolute_bounds(self._main_content) 47 48 @property 49 def content(self): 50 return self._content 51 52 @property 53 def content_anchor(self): 54 return self._content_tracker_token.anchor 55 56 @content_anchor.setter 57 def content_anchor(self, anchor): 58 self._content_tracker_token.anchor = anchor 59 60 @property 61 def content_offset(self): 62 return self._content_tracker_token.offset 63 64 @content_offset.setter 65 def content_offset(self, offset): 66 self._content_tracker_token.offset = offset 67 68 @contextlib.contextmanager 69 def tracking_override(self, anchor = None, offset = None): 70 if anchor is None: 71 anchor = self.content_anchor 72 if offset is None: 73 offset = self.content_offset 74 old_anchor = self.content_anchor 75 old_offset = self.content_offset 76 self.content_anchor = anchor 77 self.content_offset = offset 78 try: 79 yield 80 finally: 81 self.content_anchor = old_anchor 82 self.content_offset = old_offset 83 84 def collapse(self, lock = False): 85 self._main_content.DisableAutoSize() 86 self._content.state = uiconst.UI_DISABLED 87 self._tether.collapse(lock=lock) 88 animations.MorphScalar(self._content, 'left', startVal=self._content.left, endVal=-20, duration=0.2) 89 animations.FadeOut(self._content, duration=0.2, callback=self._main_content.EnableAutoSize) 90 91 def expand(self): 92 self._tether.expand() 93 self._content.state = uiconst.UI_PICKCHILDREN 94 animations.MorphScalar(self._content, 'left', startVal=self._content.left, endVal=0, duration=0.2, timeOffset=0.2, callback=self._main_content.EnableAutoSize) 95 animations.FadeIn(self._content, duration=0.2, timeOffset=0.2) 96 97 def close(self): 98 self._state_machine.close() 99 self._base.Close() 100 self._tether.parent.Close() 101 self._watch_token = None 102 self._main_bank_transform.close() 103 super(MainBank, self).close() 104 105 def _on_tether_click(self): 106 if self.playerRequestedCollapseToken: 107 self.playerRequestedCollapseToken.clear() 108 self.force_expand() 109 110 def _on_close_point_click(self): 111 self.playerRequestedCollapseToken = self.request_collapse(Priority.control_point) 112 113 def _on_main_bank_state_update(self, link = None): 114 service = get_dynamic_resource_service() 115 link, self._watch_token = service.ess_state_provider.select(callback=self._on_main_bank_state_update, lens=lambda s: s.main_bank.link) 116 if link is None: 117 self.unfocus() 118 self._state_machine.move_to(Idle(self)) 119 elif link: 120 if link.character_id == session.charid: 121 self.focus() 122 self._state_machine.move_to(Hacking(self, link)) 123 124 125 from dynamicresources.client.ess.bracket.debug import __reload_update__