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

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