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

__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__