clone_grade_fanfare_ui_controller.py (4463B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\clonegrade\clone_grade_fanfare_ui_controller.py 2 import blue 3 import logging 4 import trinity 5 import uthread2 6 from eve.client.script.ui.omega.upsell.omegaHeroNotifications import omega_hero_notification 7 from player_messaging.client.ui_message import message_player 8 from eve.client.script.ui.omega.upsell.omegaUpsellWindow import OmegaUpsellWindow 9 from eve.client.script.ui.shared.cloneGrade import open_alpha_state_window 10 from localization import GetByLabel 11 from omega.client import signal as omega_signals 12 from omega.client.clone_grade_svc import get_clone_grade_svc 13 from omega.client.const import LOG_ENTRY_NAME 14 from stackless_response_router.exceptions import TimeoutException 15 logger = logging.getLogger(__name__) 16 17 class CloneGradeFanfareUiController(object): 18 __notifyevents__ = ['OnSubscriptionChangedServer', 'OnApplicationFocusChanged'] 19 20 def __init__(self): 21 self._fanfare_pending_method = None 22 omega_signals.on_omega_license_acquired.connect(self._on_omega_license_acquired) 23 omega_signals.on_omega_license_changed.connect(self._on_omega_license_changed) 24 sm.RegisterNotify(self) 25 26 def __del__(self): 27 omega_signals.on_omega_license_acquired.disconnect(self._on_omega_license_acquired) 28 omega_signals.on_omega_license_changed.disconnect(self._on_omega_license_changed) 29 30 def _on_omega_license_acquired(self, *args): 31 try: 32 if get_clone_grade_svc().is_omega_without_grace_period(): 33 if trinity.app.active: 34 uthread2.start_tasklet(self._trigger_omega_acquired_fanfare) 35 else: 36 self._fanfare_pending_method = self._trigger_omega_acquired_fanfare 37 except TimeoutException: 38 logger.info("%s - Could not get Omega status - timed out. If not using mocks, this isn't expected to work in dev tier." % LOG_ENTRY_NAME) 39 40 def _on_omega_license_changed(self, *args): 41 try: 42 if get_clone_grade_svc().is_omega_without_grace_period(): 43 if trinity.app.active: 44 uthread2.start_tasklet(self._trigger_omega_extended_fanfare) 45 else: 46 self._fanfare_pending_method = self._trigger_omega_extended_fanfare 47 except TimeoutException: 48 logger.info("%s - Could not get Omega status - timed out. If not using mocks, this isn't expected to work in dev tier." % LOG_ENTRY_NAME) 49 50 def OnSubscriptionChangedServer(self, _): 51 info_log = '%s - clone grade fanfare controller - OnSubscriptionChangedServer received... ' 52 sm.ScatterEvent('OnSubscriptionChanged') 53 if not get_clone_grade_svc().is_omega_with_grace_period(force_refresh=True): 54 info_log += 'user is not omega with grace period, triggering alpha lapse' 55 sm.GetService('audio').SendUIEvent('downgrade_to_alpha_play') 56 self._trigger_lapse_window() 57 else: 58 info_log += 'user is omega, nothing to do!' 59 logger.info(info_log) 60 61 def _trigger_lapse_window(self): 62 logger.info('%s - Triggering clone state lapse window' % LOG_ENTRY_NAME) 63 open_alpha_state_window() 64 65 def OnApplicationFocusChanged(self, hasFocus): 66 if self._fanfare_pending_method and hasFocus: 67 method = self._fanfare_pending_method 68 blue.synchro.SleepWallclock(1000) 69 uthread2.start_tasklet(method) 70 71 def _trigger_omega_acquired_fanfare(self): 72 self._fanfare_pending_method = None 73 sm.ScatterEvent('OnSubscriptionChanged') 74 if self.is_fanfare_allowed_to_play(): 75 OmegaUpsellWindow.show_omega_acquired_fanfare() 76 else: 77 self.show_hero_notification(text=GetByLabel('UI/OmegaUpsell/OmegaSubscriptionActivated')) 78 79 def _trigger_omega_extended_fanfare(self): 80 self._fanfare_pending_method = None 81 if self.is_fanfare_allowed_to_play(): 82 OmegaUpsellWindow.show_omega_extended_fanfare() 83 else: 84 self.show_hero_notification(text=GetByLabel('UI/OmegaUpsell/OmegaSubscriptionExtended')) 85 86 def is_fanfare_allowed_to_play(self): 87 return not session.solarsystemid 88 89 def show_hero_notification(self, text): 90 91 def PlayVideo(parent, cancellation_token): 92 omega_hero_notification(parent, text) 93 94 sm.GetService('heroNotification').play(PlayVideo, 1)