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)