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

informer.py (3064B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\parklife\overview\default\informer.py
      2 from featuremanagement.client.flag import flag_bool
      3 from logging import getLogger
      4 from player_messaging.client.ui_message import prompt_player_fsd_dialog
      5 logger = getLogger(__name__)
      6 
      7 class DefaultOverviewUpdateInformer(object):
      8 
      9     def __init__(self, settings, defaults, should_delay = lambda : False):
     10         self._settings = settings
     11         self._defaults = defaults
     12         self._should_delay = should_delay
     13         self._is_informing_enabled = None
     14 
     15     def is_informing_enabled(self):
     16         if self._is_informing_enabled is None:
     17             flag_bool(key='default-overview-offer-update', default_value=False, callback=self._refresh_availability)
     18         return self._is_informing_enabled
     19 
     20     def _refresh_availability(self, evaluate_flag):
     21         self._is_informing_enabled = evaluate_flag()
     22 
     23     def update(self):
     24         self._log_debug('Checking whether to update')
     25         if not self._should_inform_of_update():
     26             return True
     27         if not self.is_informing_enabled():
     28             self._log_debug('Do not inform in this session, as informing is disabled')
     29             return True
     30         if self._should_delay():
     31             self._log_debug('Delay informing until NPE is completed (new character of existing user)')
     32             return False
     33         self._inform_of_update()
     34         self._settings.set_informed_of_update(True)
     35         self._log_debug('Informed of the latest Default')
     36         return True
     37 
     38     def _should_inform_of_update(self):
     39         default_overview = self._defaults.default_overview_id
     40         should_inform_of_update = self._defaults.should_inform_of_update()
     41         if not should_inform_of_update:
     42             self._log_debug('Do not inform, this Default Overview should not inform of updates (default: %s)' % default_overview)
     43             return False
     44         current_overview = self._settings.get_overview()
     45         if current_overview == default_overview:
     46             self._log_debug('Do not inform, player already has an unedited Default Overview (current: %s, default: %s)' % (current_overview, default_overview))
     47             return False
     48         has_informed_of_update = self._settings.get_informed_of_update()
     49         if has_informed_of_update:
     50             self._log_debug('Do not inform, player has already been informed before (current: %s, default: %s)' % (current_overview, default_overview))
     51             return False
     52         self._log_debug('Inform, player is existing user without the new Default Overview and has not been informed about the update yet (current: %s, default: %s)' % (current_overview, default_overview))
     53         return True
     54 
     55     def _inform_of_update(self):
     56         prompt_player_fsd_dialog('InformOfNewDefaultOverview')
     57 
     58     def _log_debug(self, text):
     59         settings_text = self._settings.get_settings_report()
     60         msg = 'Default Overview: {text}. \n{settings_text}'.format(text=text, settings_text=settings_text)
     61         logger.debug(msg)