class BattleRibbonsPanel(RibbonsPanelMeta): def __init__(self): super(BattleRibbonsPanel, self).__init__() self.__enabled = True self.__userPreferences = {} self.__isWithRibbonName = True self.__isWithVehName = True self.__isExtendedAnim = True self.__isVisible = True self.__arenaDP = g_sessionProvider.getCtx().getArenaDP() self.__ribbonsAggregator = RibbonsAggregator() self.__ribbonsAggregator.onRibbonAdded += self.__showRibbon self.__ribbonsAggregator.onRibbonUpdated += self.__showRibbon def onShow(self): self.__playSound(_SHOW_RIBBON_SOUND_NAME) def onChange(self): self.__playSound(_CHANGE_RIBBON_SOUND_NAME) def onHide(self, ribbonType): LOG_DEBUG_DEV( 'RIBBON PANEL: onHide: ribbonType="{}"'.format(ribbonType)) if ribbonType not in _AGGREGATED_RIBBON_TYPES: self.__ribbonsAggregator.clearRibbonData(ribbonType) self.__playSound(_HIDE_RIBBON_SOUND_NAME) def _populate(self): super(BattleRibbonsPanel, self)._populate() self.__enabled = bool( g_settingsCore.getSetting( BATTLE_EVENTS.SHOW_IN_BATTLE)) and self.__arenaDP is not None self.__isWithRibbonName = bool( g_settingsCore.getSetting(BATTLE_EVENTS.EVENT_NAME)) self.__isWithVehName = bool( g_settingsCore.getSetting(BATTLE_EVENTS.VEHICLE_INFO)) self.__isExtendedAnim = g_settingsCore.getSetting( GRAPHICS.RENDER_PIPELINE) == _EXTENDED_RENDER_PIPELINE for settingName in _BATTLE_EVENTS_SETTINGS_TO_BATTLE_EFFICIENCY_TYPES: key = _BATTLE_EVENTS_SETTINGS_TO_BATTLE_EFFICIENCY_TYPES[ settingName] self.__userPreferences[key] = bool( g_settingsCore.getSetting(settingName)) self.__setupView() g_settingsCore.onSettingsChanged += self.__onSettingsChanged g_eventBus.addListener(GameEvent.GUI_VISIBILITY, self.__onGUIVisibilityChanged, scope=EVENT_BUS_SCOPE.BATTLE) if self.__enabled: self.__ribbonsAggregator.start() return def _dispose(self): self.__ribbonsAggregator.onRibbonAdded -= self.__showRibbon self.__ribbonsAggregator.onRibbonUpdated -= self.__showRibbon g_eventBus.removeListener(GameEvent.GUI_VISIBILITY, self.__onGUIVisibilityChanged, scope=EVENT_BUS_SCOPE.BATTLE) g_settingsCore.onSettingsChanged -= self.__onSettingsChanged if self.__enabled: self.__ribbonsAggregator.stop() self.__arenaDP = None super(BattleRibbonsPanel, self)._dispose() return def __playSound(self, eventName): if not self.__isVisible or not _RIBBON_SOUNDS_ENABLED: return soundNotifications = avatar_getter.getSoundNotifications() if soundNotifications and hasattr(soundNotifications, 'play') and hasattr( soundNotifications, 'isPlaying'): for eventName in _SOUNDS: if soundNotifications.isPlaying(eventName): break else: soundNotifications.play(eventName) def __addBattleEfficiencyEvent(self, ribbonType='', leftFieldStr='', vehName='', vehType='', rightFieldStr=''): LOG_DEBUG_DEV( 'RIBBON PANEL: __addBattleEfficiencyEvent: ribbonType="{}", leftFieldStr="{}", vehName="{}", vehType="{}", rightFieldStr="{}".' .format(ribbonType, leftFieldStr, vehName, vehType, rightFieldStr)) self.as_addBattleEfficiencyEventS(ribbonType, leftFieldStr, vehName, vehType, rightFieldStr) def __showRibbon(self, ribbon): if self.__checkUserPreferences( ribbon) and ribbon.getType() in _RIBBONS_FMTS: updater = _RIBBONS_FMTS[ribbon.getType()] updater(ribbon, self.__arenaDP, self.__addBattleEfficiencyEvent) def __onGUIVisibilityChanged(self, event): self.__isVisible = event.ctx['visible'] def __onSettingsChanged(self, diff): addSettings = {} for item in diff: if item in _BATTLE_EVENTS_SETTINGS_TO_BATTLE_EFFICIENCY_TYPES: key = _BATTLE_EVENTS_SETTINGS_TO_BATTLE_EFFICIENCY_TYPES[item] self.__userPreferences[key] = bool(diff[item]) elif item in _ADDITIONAL_USER_SETTINGS: addSettings[item] = diff[item] if addSettings: enabled = bool( addSettings.get(BATTLE_EVENTS.SHOW_IN_BATTLE, self.__enabled)) and self.__arenaDP is not None self.__isWithRibbonName = bool( g_settingsCore.getSetting(BATTLE_EVENTS.EVENT_NAME)) self.__isWithVehName = bool( g_settingsCore.getSetting(BATTLE_EVENTS.VEHICLE_INFO)) self.__isExtendedAnim = g_settingsCore.getSetting( GRAPHICS.RENDER_PIPELINE) == _EXTENDED_RENDER_PIPELINE if self.__enabled != enabled: self.__enabled = enabled if self.__enabled: self.__ribbonsAggregator.start() else: self.__ribbonsAggregator.stop() self.as_setSettingsS(self.__enabled, self.__isExtendedAnim, self.__isWithRibbonName, self.__isWithVehName) return def __checkUserPreferences(self, ribbon): """ Returns True if the user has enabled displaying of the given ribbon or there is no setting for the given ribbon. Otherwise returns False. :param ribbon: An instance of _Ribbon derived class. """ return self.__userPreferences.get(ribbon.getType(), True) def __setupView(self): self.as_setupS([ [ _BET.ARMOR, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.ARMOR)) ], [ _BET.DEFENCE, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.DEFENCE)) ], [ _BET.DAMAGE, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.DAMAGE)) ], [ _BET.ASSIST_SPOT, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.ASSIST_SPOT)) ], [ _BET.ASSIST_TRACK, i18n.makeString(INGAME_GUI.efficiencyribbons( _BET.ASSIST_TRACK)) ], [ _BET.BURN, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.BURN)) ], [ _BET.CAPTURE, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.CAPTURE)) ], [ _BET.DESTRUCTION, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.DESTRUCTION)) ], [ _BET.DETECTION, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.DETECTION)) ], [ _BET.RAM, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.RAM)) ], [ _BET.CRITS, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.CRITS)) ] ], self.__isExtendedAnim, self.__enabled, self.__isWithRibbonName, self.__isWithVehName)
class BattleRibbonsPanel(RibbonsPanelMeta): def __init__(self): super(BattleRibbonsPanel, self).__init__() self.__enabled = True self.__userPreferences = {} self.__isWithRibbonName = True self.__isWithVehName = True self.__isExtendedAnim = True self.__isVisible = True self.__arenaDP = g_sessionProvider.getCtx().getArenaDP() self.__ribbonsAggregator = RibbonsAggregator() self.__ribbonsAggregator.onRibbonAdded += self.__showRibbon self.__ribbonsAggregator.onRibbonUpdated += self.__showRibbon def onShow(self): self.__playSound(_SHOW_RIBBON_SOUND_NAME) def onChange(self): self.__playSound(_CHANGE_RIBBON_SOUND_NAME) def onHide(self, ribbonType): LOG_DEBUG_DEV('RIBBON PANEL: onHide: ribbonType="{}"'.format(ribbonType)) if ribbonType not in _AGGREGATED_RIBBON_TYPES: self.__ribbonsAggregator.clearRibbonData(ribbonType) self.__playSound(_HIDE_RIBBON_SOUND_NAME) def _populate(self): super(BattleRibbonsPanel, self)._populate() self.__enabled = bool(g_settingsCore.getSetting(BATTLE_EVENTS.SHOW_IN_BATTLE)) and self.__arenaDP is not None self.__isWithRibbonName = bool(g_settingsCore.getSetting(BATTLE_EVENTS.EVENT_NAME)) self.__isWithVehName = bool(g_settingsCore.getSetting(BATTLE_EVENTS.VEHICLE_INFO)) self.__isExtendedAnim = g_settingsCore.getSetting(GRAPHICS.RENDER_PIPELINE) == _EXTENDED_RENDER_PIPELINE for settingName in _BATTLE_EVENTS_SETTINGS_TO_BATTLE_EFFICIENCY_TYPES: key = _BATTLE_EVENTS_SETTINGS_TO_BATTLE_EFFICIENCY_TYPES[settingName] self.__userPreferences[key] = bool(g_settingsCore.getSetting(settingName)) self.__setupView() g_settingsCore.onSettingsChanged += self.__onSettingsChanged g_eventBus.addListener(GameEvent.GUI_VISIBILITY, self.__onGUIVisibilityChanged, scope=EVENT_BUS_SCOPE.BATTLE) if self.__enabled: self.__ribbonsAggregator.start() return def _dispose(self): self.__ribbonsAggregator.onRibbonAdded -= self.__showRibbon self.__ribbonsAggregator.onRibbonUpdated -= self.__showRibbon g_eventBus.removeListener(GameEvent.GUI_VISIBILITY, self.__onGUIVisibilityChanged, scope=EVENT_BUS_SCOPE.BATTLE) g_settingsCore.onSettingsChanged -= self.__onSettingsChanged if self.__enabled: self.__ribbonsAggregator.stop() self.__arenaDP = None super(BattleRibbonsPanel, self)._dispose() return def __playSound(self, eventName): if not self.__isVisible or not _RIBBON_SOUNDS_ENABLED: return soundNotifications = avatar_getter.getSoundNotifications() if soundNotifications and hasattr(soundNotifications, 'play') and hasattr(soundNotifications, 'isPlaying'): for eventName in _SOUNDS: if soundNotifications.isPlaying(eventName): break else: soundNotifications.play(eventName) def __addBattleEfficiencyEvent(self, ribbonType = '', leftFieldStr = '', vehName = '', vehType = '', rightFieldStr = ''): LOG_DEBUG_DEV('RIBBON PANEL: __addBattleEfficiencyEvent: ribbonType="{}", leftFieldStr="{}", vehName="{}", vehType="{}", rightFieldStr="{}".'.format(ribbonType, leftFieldStr, vehName, vehType, rightFieldStr)) self.as_addBattleEfficiencyEventS(ribbonType, leftFieldStr, vehName, vehType, rightFieldStr) def __showRibbon(self, ribbon): if self.__checkUserPreferences(ribbon) and ribbon.getType() in _RIBBONS_FMTS: updater = _RIBBONS_FMTS[ribbon.getType()] updater(ribbon, self.__arenaDP, self.__addBattleEfficiencyEvent) def __onGUIVisibilityChanged(self, event): self.__isVisible = event.ctx['visible'] def __onSettingsChanged(self, diff): addSettings = {} for item in diff: if item in _BATTLE_EVENTS_SETTINGS_TO_BATTLE_EFFICIENCY_TYPES: key = _BATTLE_EVENTS_SETTINGS_TO_BATTLE_EFFICIENCY_TYPES[item] self.__userPreferences[key] = bool(diff[item]) elif item in _ADDITIONAL_USER_SETTINGS: addSettings[item] = diff[item] if addSettings: enabled = bool(addSettings.get(BATTLE_EVENTS.SHOW_IN_BATTLE, self.__enabled)) and self.__arenaDP is not None self.__isWithRibbonName = bool(g_settingsCore.getSetting(BATTLE_EVENTS.EVENT_NAME)) self.__isWithVehName = bool(g_settingsCore.getSetting(BATTLE_EVENTS.VEHICLE_INFO)) self.__isExtendedAnim = g_settingsCore.getSetting(GRAPHICS.RENDER_PIPELINE) == _EXTENDED_RENDER_PIPELINE if self.__enabled != enabled: self.__enabled = enabled if self.__enabled: self.__ribbonsAggregator.start() else: self.__ribbonsAggregator.stop() self.as_setSettingsS(self.__enabled, self.__isExtendedAnim, self.__isWithRibbonName, self.__isWithVehName) return def __checkUserPreferences(self, ribbon): """ Returns True if the user has enabled displaying of the given ribbon or there is no setting for the given ribbon. Otherwise returns False. :param ribbon: An instance of _Ribbon derived class. """ return self.__userPreferences.get(ribbon.getType(), True) def __setupView(self): self.as_setupS([[_BET.ARMOR, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.ARMOR))], [_BET.DEFENCE, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.DEFENCE))], [_BET.DAMAGE, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.DAMAGE))], [_BET.ASSIST_SPOT, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.ASSIST_SPOT))], [_BET.ASSIST_TRACK, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.ASSIST_TRACK))], [_BET.BURN, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.BURN))], [_BET.CAPTURE, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.CAPTURE))], [_BET.DESTRUCTION, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.DESTRUCTION))], [_BET.DETECTION, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.DETECTION))], [_BET.RAM, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.RAM))], [_BET.CRITS, i18n.makeString(INGAME_GUI.efficiencyribbons(_BET.CRITS))]], self.__isExtendedAnim, self.__enabled, self.__isWithRibbonName, self.__isWithVehName)