Пример #1
0
 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
Пример #2
0
 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
Пример #3
0
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)
Пример #4
0
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)