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

__init__.py (3578B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\dynamicresources\client\ess\bracket\root\__init__.py
      2 import eveui
      3 import threadutils
      4 from carbon.common.script.sys.serviceManager import ServiceManager
      5 from carbonui.uicore import uicore
      6 from dynamicresources.client.ess.bracket.camera import InFlightCameraReference
      7 from dynamicresources.client.ess.bracket.root.online import Online
      8 from dynamicresources.client.ess.bracket.root.status import Offline
      9 from dynamicresources.client.ess.bracket.state_machine import State, StateMachine
     10 from dynamicresources.client.ess.bracket.transform import EssRootTransformController
     11 from dynamicresources.client.ess.state import EssStatus
     12 from dynamicresources.client.service import get_dynamic_resource_service
     13 
     14 class EssBracket(object):
     15     __notifyevents__ = ('OnWarpActive', 'OnClientEvent_WarpFinished')
     16 
     17     def __init__(self, item_id):
     18         self._item_id = item_id
     19         self._closed = False
     20         self._ess_root = None
     21         self._camera = None
     22         self._status_update_token = None
     23         self._michelle = ServiceManager.Instance().GetService('michelle')
     24         self._scene_manager = ServiceManager.Instance().GetService('sceneManager')
     25         self._dynamic_resource_service = get_dynamic_resource_service()
     26         self._state_machine = StateMachine()
     27         self._init()
     28 
     29     @property
     30     def item_id(self):
     31         return self._item_id
     32 
     33     @property
     34     def ess_root(self):
     35         return self._ess_root
     36 
     37     @property
     38     def camera(self):
     39         return self._camera
     40 
     41     @property
     42     def ess_state_provider(self):
     43         return self._dynamic_resource_service.ess_state_provider
     44 
     45     @property
     46     def layer(self):
     47         return uicore.layer.space_ui
     48 
     49     @threadutils.threaded
     50     def _init(self):
     51         ball = self._wait_for_ball()
     52         scene = self._scene_manager.GetRegisteredScene('default')
     53         self._ess_root = EssRootTransformController(ess_ball=ball, scene=scene)
     54         self._camera = InFlightCameraReference(self._scene_manager)
     55         self._on_ess_status_changed()
     56         ServiceManager.Instance().RegisterNotify(self)
     57 
     58     def _wait_for_ball(self):
     59         ball = None
     60         while ball is None:
     61             if self._closed:
     62                 return
     63             ball = self._michelle.GetBall(self._item_id)
     64             if ball is not None:
     65                 break
     66             eveui.wait_for_next_frame()
     67 
     68         return ball
     69 
     70     def _on_ess_status_changed(self, *_args):
     71         if self._closed:
     72             return
     73         (status, in_range), self._status_update_token = self.ess_state_provider.select(self._on_ess_status_changed, lens=lambda state: (state.status, state.in_range))
     74         if status == EssStatus.loading or self._michelle.InWarp():
     75             self._state_machine.move_to(Hidden())
     76         elif status == EssStatus.offline:
     77             self._state_machine.move_to(Offline(self))
     78         elif status == EssStatus.online:
     79             self._state_machine.move_to(Online(self))
     80 
     81     def close(self):
     82         if self._status_update_token:
     83             self._status_update_token.unsubscribe()
     84         self._state_machine.close()
     85         ServiceManager.Instance().UnregisterNotify(self)
     86         self._closed = True
     87 
     88     def OnWarpActive(self, _warp_to_item_id, _warp_to_type_id):
     89         self._on_ess_status_changed()
     90 
     91     def OnClientEvent_WarpFinished(self, _warp_to_item_id, _warp_to_type_id):
     92         self._on_ess_status_changed()
     93 
     94 
     95 class Hidden(State):
     96     pass
     97 
     98 
     99 from dynamicresources.client.ess.bracket.debug import __reload_update__