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