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

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)