analysis_beacon_ui.py (2962B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\analysisbeacon\client\analysis_beacon_ui.py 2 import eveui 3 import threadutils 4 import uthread2 5 from analysisbeacon.client.beacon_state.active import Active 6 from analysisbeacon.client.beacon_state.paused import Paused 7 from analysisbeacon.client.camera_facing_ui_container import BeaconCameraFacingUiContainer 8 from analysisbeacon.client.state import StateMachine 9 from analysisbeacon.client.beacon_ui_container import BeaconUiContainer 10 from carbon.common.script.sys.serviceManager import ServiceManager 11 from carbonui.uicore import uicore 12 from dynamicresources.client.ess.bracket.camera import InFlightCameraReference 13 14 class AnalysisBeaconUI: 15 __notifyevents__ = ('OnWarpActive',) 16 17 def __init__(self, item_id): 18 self._item_id = item_id 19 self._closed = False 20 self._status_update_token = None 21 self._michelle = ServiceManager.Instance().GetService('michelle') 22 self._scene_manager = ServiceManager.Instance().GetService('sceneManager') 23 self._camera = InFlightCameraReference(self._scene_manager) 24 self._state_machine = StateMachine() 25 self._ui = None 26 self._camera_facing_ui = None 27 self._init() 28 29 @threadutils.threaded 30 def _init(self): 31 ball = self._wait_for_ball() 32 scene = self._scene_manager.GetRegisteredScene('default', allowBlocking=True) 33 self._ui = BeaconUiContainer(ball=ball, scene=scene, camera=self._camera) 34 self._camera_facing_ui = BeaconCameraFacingUiContainer(parent=uicore.layer.space_ui, ball=ball, camera=self._camera, scene=scene) 35 ServiceManager.Instance().RegisterNotify(self) 36 37 def set_state(self, remainingDuration, totalDuration, paused, active, complete): 38 if complete: 39 if self._state_machine.state: 40 uthread2.start_tasklet(self._state_machine.state.exit) 41 elif paused: 42 uthread2.start_tasklet(self._state_machine.move_to, Paused(self._ui, self._camera_facing_ui._ui, remainingDuration, totalDuration)) 43 elif active: 44 uthread2.start_tasklet(self._state_machine.move_to, Active(self._ui, self._camera_facing_ui._ui, remainingDuration, totalDuration)) 45 46 def _wait_for_ball(self): 47 ball = None 48 while ball is None: 49 if self._closed: 50 return 51 ball = self._michelle.GetBall(self._item_id) 52 if ball is not None: 53 break 54 eveui.wait_for_next_frame() 55 56 return ball 57 58 def remove_from_space(self): 59 self._closed = True 60 61 def clean_up(): 62 if self._state_machine.state: 63 self._camera_facing_ui._ui.Flush() 64 self._state_machine.state.exit() 65 eveui.wait_for_next_frame() 66 self._ui.remove_from_space() 67 self._camera_facing_ui.remove_from_space() 68 69 uthread2.start_tasklet(clean_up)