def __init__(self): self.__volumeByCategory = {} self.__masterVolume = 1.0 self.__isWindowVisible = BigWorld.isWindowVisible() self.__groups = {'arena': ('/vehicles/tanks', '/hits/hits', '/hits/explosions', '/hits/tank_death', '/weapons/large_fire', '/weapons/medium_fire', '/weapons/small_fire', '/weapons/tracer', '/GUI/notifications_FX', '/ingame_voice/notifications_VO', '/objects/wire_barricade', '/objects/tent', '/objects/dog_house', '/objects/structures', '/objects/treefall', '/objects/wood_box_mid', '/objects/telegraph_pole', '/objects/buildings', '/objects/fuel_tank', '/objects/fence', '/objects/fuel_barrel', '/objects/fire', '/objects/hay_stack', '/objects/metall_pole_huge')} self.__categories = {'voice': ('ingame_voice',), 'vehicles': ('vehicles',), 'effects': ('hits', 'weapons', 'environment', 'battle_gui'), 'gui': ('gui',), 'music': ('music',), 'ambient': ('ambient',), 'masterVivox': (), 'micVivox': (), 'masterFadeVivox': ()} defMasterVolume = 0.5 defCategoryVolumes = {'music': 0.5, 'masterVivox': 0.7, 'micVivox': 0.4} userPrefs = Settings.g_instance.userPrefs soundModeName = SoundModes.DEFAULT_MODE_NAME nationalMapping = None self.__soundModes = None if not userPrefs.has_key(Settings.KEY_SOUND_PREFERENCES): userPrefs.write(Settings.KEY_SOUND_PREFERENCES, '') self.__masterVolume = defMasterVolume for categoryName in self.__categories.keys(): self.__volumeByCategory[categoryName] = defCategoryVolumes.get(categoryName, 1.0) self.savePreferences() else: ds = userPrefs[Settings.KEY_SOUND_PREFERENCES] self.__masterVolume = ds.readFloat('masterVolume', defMasterVolume) for categoryName in self.__categories.keys(): volume = ds.readFloat('volume_' + categoryName, defCategoryVolumes.get(categoryName, 1.0)) self.__volumeByCategory[categoryName] = volume soundModeSec = ds['soundMode'] if soundModeSec is not None: soundModeName = soundModeSec.asString if soundModeName == '': soundModeName = SoundModes.DEFAULT_MODE_NAME if ds['soundMode'].has_key('nationalPreset'): nationalMapping = ds.readString('soundMode/nationalPreset', '') else: nationsSec = soundModeSec['nations'] if nationsSec is not None: nationalMapping = {} for nation, sec in nationsSec.items(): nationalMapping[nation] = sec.asString self.__soundModes = SoundModes(SoundModes.DEFAULT_MODE_NAME) if isinstance(nationalMapping, str): self.__soundModes.setNationalMappingByPreset(nationalMapping) elif isinstance(nationalMapping, dict): self.__soundModes.setNationalMapping(nationalMapping) else: self.__soundModes.setNationalMappingByMode(soundModeName) self.applyPreferences() self.__muteCallbackID = BigWorld.callback(0.25, self.__muteByWindowVisibility) return
def __muteByWindowVisibility(self): isWindowVisible = BigWorld.isWindowVisible() if self.__isWindowVisible != isWindowVisible: self.__isWindowVisible = isWindowVisible self.applyPreferences() self.__muteCallbackID = BigWorld.callback( 0.25, self.__muteByWindowVisibility)
def play(self, eventName, vehicleIdToBind=None, checkFn=None, eventPos=None): replayCtrl = BattleReplay.g_replayCtrl if replayCtrl.isPlaying and replayCtrl.isTimeWarpInProgress: return elif not self.__isEnabled or BigWorld.isWindowVisible() is False: return else: event = self.__events.get(eventName, None) if event is None: LOG_WARNING("Couldn't find %s event" % eventName) return queues = self.__soundQueues enabledCategories = self.__enabledSoundCategories time = BigWorld.time() for category, soundDesc in event.iteritems(): if category in enabledCategories and soundDesc['sound'] != '': rules = soundDesc['playRules'] idToBind = vehicleIdToBind if idToBind is None and soundDesc['shouldBindToPlayer']: if BigWorld.player().vehicle is not None: idToBind = BigWorld.player().vehicle.id soundPath = soundDesc['sound'] minTimeBetweenEvents = soundDesc['minTimeBetweenEvents'] queueItem = IngameSoundNotifications.QueueItem( soundPath, time + soundDesc['timeout'], minTimeBetweenEvents, idToBind, checkFn, eventPos) if rules == 0: try: if eventPos is not None: SoundGroups.g_instance.playCameraOriented( soundDesc['sound'], eventPos) else: SoundGroups.g_instance.playSound2D( soundDesc['sound']) except: pass continue else: lastEnqueuedTime = self.__lastEnqueuedTime.get( soundPath) if lastEnqueuedTime is not None and time - lastEnqueuedTime < minTimeBetweenEvents: continue self.__lastEnqueuedTime[soundPath] = time if rules == 1: self.__clearQueue(category) queues[category].append(queueItem) elif rules == 2: queues[category].insert(0, queueItem) elif rules == 3: queues[category].append(queueItem) if self.__activeEvents[category] is None: self.__playFirstFromQueue(category) return
def __checkPause(self): shouldPause = False if not self.__isEnabled or BigWorld.isWindowVisible() is False: shouldPause = True replayCtrl = BattleReplay.g_replayCtrl if replayCtrl.isPlaying: if replayCtrl.isTimeWarpInProgress or replayCtrl.isPaused: shouldPause = True if shouldPause: self.clear() return shouldPause
def applyPreferences(self): if not BigWorld.isWindowVisible(): return self.setMasterVolume(self.__masterVolume) for categoryName in self.__volumeByCategory.iterkeys(): newVolume = self.__volumeByCategory[categoryName] if self.__muffledByReplay and categoryName in ('vehicles', 'effects', 'ambient'): newVolume = 0.0 self.setVolume(categoryName, newVolume, updatePrefs=False)
def play(self, eventName, vehicleIdToBind = None): replayCtrl = BattleReplay.g_replayCtrl if replayCtrl.isPlaying and replayCtrl.isTimeWarpInProgress: return elif not self.__isEnabled or BigWorld.isWindowVisible() == False: return else: event = self.__events.get(eventName, None) if event is None: LOG_WARNING("Couldn't find %s event" % eventName) return queues = self.__soundQueues enabledCategories = self.__enabledSoundCategories time = BigWorld.time() for category, soundDesc in event.iteritems(): if category in enabledCategories and soundDesc['sound'] != '': rules = soundDesc['playRules'] idToBind = vehicleIdToBind if idToBind is None and soundDesc['shouldBindToPlayer']: if BigWorld.player().vehicle is not None: idToBind = BigWorld.player().vehicle.id soundPath = soundDesc['sound'] minTimeBetweenEvents = soundDesc['minTimeBetweenEvents'] queueItem = (soundPath, time + soundDesc['timeout'], minTimeBetweenEvents, idToBind) if rules == 0: try: BigWorld.playSound(soundDesc['sound']) except: pass continue else: lastEnqueuedTime = self.__lastEnqueuedTime.get(soundPath) if lastEnqueuedTime is not None and time - lastEnqueuedTime < minTimeBetweenEvents: continue self.__lastEnqueuedTime[soundPath] = time if rules == 1: self.__clearQueue(category) queues[category].append(queueItem) elif rules == 2: queues[category].insert(0, queueItem) elif rules == 3: queues[category].append(queueItem) if self.__activeEvents[category] is None: self.__playFirstFromQueue(category) return
def __init__(self): self.__volumeByCategory = {} self.__masterVolume = 1.0 self.__isWindowVisible = BigWorld.isWindowVisible() self.__groups = { 'arena': ('/vehicles/tanks', '/hits/hits', '/hits/explosions', '/hits/tank_death', '/weapons/large_fire', '/weapons/medium_fire', '/weapons/small_fire', '/weapons/tracer', '/GUI/notifications_FX', '/ingame_voice/notifications_VO', '/objects/wire_barricade', '/objects/tent', '/objects/dog_house', '/objects/structures', '/objects/treefall', '/objects/wood_box_mid', '/objects/telegraph_pole', '/objects/buildings', '/objects/fuel_tank', '/objects/fence', '/objects/fuel_barrel', '/objects/fire', '/objects/hay_stack', '/objects/metall_pole_huge') } self.__categories = { 'voice': ('ingame_voice', ), 'vehicles': ('vehicles', ), 'effects': ('hits', 'weapons', 'environment', 'battle_gui'), 'gui': ('gui', ), 'music': ('music', ), 'ambient': ('ambient', ), 'masterVivox': (), 'micVivox': (), 'masterFadeVivox': () } defMasterVolume = 0.5 defCategoryVolumes = { 'music': 0.5, 'masterVivox': 0.7, 'micVivox': 0.4 } userPrefs = Settings.g_instance.userPrefs soundModeName = SoundModes.DEFAULT_MODE_NAME nationalMapping = None self.__soundModes = None if not userPrefs.has_key(Settings.KEY_SOUND_PREFERENCES): userPrefs.write(Settings.KEY_SOUND_PREFERENCES, '') self.__masterVolume = defMasterVolume for categoryName in self.__categories.keys(): self.__volumeByCategory[categoryName] = defCategoryVolumes.get( categoryName, 1.0) self.savePreferences() else: ds = userPrefs[Settings.KEY_SOUND_PREFERENCES] self.__masterVolume = ds.readFloat('masterVolume', defMasterVolume) for categoryName in self.__categories.keys(): volume = ds.readFloat( 'volume_' + categoryName, defCategoryVolumes.get(categoryName, 1.0)) self.__volumeByCategory[categoryName] = volume soundModeSec = ds['soundMode'] if soundModeSec is not None: soundModeName = soundModeSec.asString if soundModeName == '': soundModeName = SoundModes.DEFAULT_MODE_NAME if ds['soundMode'].has_key('nationalPreset'): nationalMapping = ds.readString( 'soundMode/nationalPreset', '') else: nationsSec = soundModeSec['nations'] if nationsSec is not None: nationalMapping = {} for nation, sec in nationsSec.items(): nationalMapping[nation] = sec.asString self.__soundModes = SoundModes(SoundModes.DEFAULT_MODE_NAME) if isinstance(nationalMapping, str): self.__soundModes.setNationalMappingByPreset(nationalMapping) elif isinstance(nationalMapping, dict): self.__soundModes.setNationalMapping(nationalMapping) else: self.__soundModes.setNationalMappingByMode(soundModeName) self.applyPreferences() self.__muteCallbackID = BigWorld.callback( 0.25, self.__muteByWindowVisibility) return
def __muteByWindowVisibility(self): isWindowVisible = BigWorld.isWindowVisible() if self.__isWindowVisible != isWindowVisible: self.__isWindowVisible = isWindowVisible self.applyPreferences() self.__muteCallbackID = BigWorld.callback(0.25, self.__muteByWindowVisibility)
def __init__(self): self.__volumeByCategory = {} self.__masterVolume = 1.0 self.__replace = {} self.__isWindowVisible = BigWorld.isWindowVisible() self.__handleInside = None self.__handleOutside = None self.__ceilLess = None self.__activeStinger = None self.__activeTrack = None self.__activeStingerPriority = None self.__muffled = False self.__muffledByReplay = False PlayerEvents.g_playerEvents.onAvatarReady += self.onAvatarReady self.__categories = {'voice': ('ingame_voice',), 'vehicles': ('outside/vehicles', 'vehicles', 'inside/vehicles'), 'effects': ('hits', 'outside/hits', 'inside/hits', 'weapons', 'inside/weapons', 'outside/weapons', 'environment', 'inside/environment', 'outside/environment', 'battle_gui'), 'gui': ('gui',), 'music': ('music',), 'ambient': ('outside/ambient', 'hangar_v2', 'ambientUR'), 'masterVivox': (), 'micVivox': (), 'masterFadeVivox': ()} defMasterVolume = 0.5 defCategoryVolumes = {'music': 0.5, 'masterVivox': 0.7, 'micVivox': 0.4} userPrefs = Settings.g_instance.userPrefs soundModeName = SoundModes.DEFAULT_MODE_NAME nationalMapping = None self.__soundModes = None if not userPrefs.has_key(Settings.KEY_SOUND_PREFERENCES): userPrefs.write(Settings.KEY_SOUND_PREFERENCES, '') self.__masterVolume = defMasterVolume for categoryName in self.__categories.keys(): self.__volumeByCategory[categoryName] = defCategoryVolumes.get(categoryName, 1.0) self.savePreferences() else: ds = userPrefs[Settings.KEY_SOUND_PREFERENCES] self.__masterVolume = ds.readFloat('masterVolume', defMasterVolume) for categoryName in self.__categories.keys(): volume = ds.readFloat('volume_' + categoryName, defCategoryVolumes.get(categoryName, 1.0)) self.__volumeByCategory[categoryName] = volume soundModeSec = ds['soundMode'] if soundModeSec is not None: soundModeName = soundModeSec.asString if soundModeName == '': soundModeName = SoundModes.DEFAULT_MODE_NAME if ds['soundMode'].has_key('nationalPreset'): nationalMapping = ds.readString('soundMode/nationalPreset', '') else: nationsSec = soundModeSec['nations'] if nationsSec is not None: nationalMapping = {} for nation, sec in nationsSec.items(): nationalMapping[nation] = sec.asString self.__soundModes = SoundModes(SoundModes.DEFAULT_MODE_NAME) if isinstance(nationalMapping, str): self.__soundModes.setNationalMappingByPreset(nationalMapping) elif isinstance(nationalMapping, dict): self.__soundModes.setNationalMapping(nationalMapping) else: self.__soundModes.setNationalMappingByMode(soundModeName) self.applyPreferences() self.__muteCallbackID = BigWorld.callback(0.25, self.__muteByWindowVisibility) self.defaultGroupList = [] settings = ResMgr.openSection('scripts/arena_defs/_default_.xml/preloadSoundGroups') if settings is not None: self.defaultGroupList = settings.readStrings('groupName') if FMOD.enabled: for sg in self.defaultGroupList: result = FMOD.WG_loadSoundGroup(sg) if not result: LOG_NOTE('Loading failed for default sound group ', sg) FMOD.WG_unloadAll() g_replayEvents.onMuteSound += self.__onReplayMute return
def __onTick(self): isWindowVisible = BigWorld.isWindowVisible() if isWindowVisible != self.__isWindowVisible: self.__isWindowVisible = isWindowVisible self._onClientMainWindowStateChanged(isWindowVisible)
def mainWindowWatcherInit(self): self.__clear() self.__isWindowVisible = BigWorld.isWindowVisible() self.__tick()
def __init__(self): self.__enableStatus = SOUND_ENABLE_STATUS_DEFAULT self.__volumeByCategory = {} self.__masterVolume = 1.0 self.__lqRenderState = LQ_RENDER_STATE_DEFAULT self.__isWindowVisible = BigWorld.isWindowVisible() self.__handleInside = None self.__handleOutside = None self.__activeStinger = None self.__activeTrack = None self.__activeStingerPriority = None self.__muffled = False self.__muffledByReplay = False self.__states = [] from gui.app_loader import g_appLoader self.__spaceID = g_appLoader.getSpaceID() PlayerEvents.g_playerEvents.onAvatarReady += self.onAvatarReady self.__categories = {'vehicles': ('outside/vehicles', 'vehicles'), 'effects': ('hits', 'outside/hits', 'inside/weapons', 'outside/weapons', 'outside/environment', 'battle_gui'), 'gui': ('gui', 'ingame_voice'), 'music': ('music',), 'ambient': ('outside/ambient', 'hangar_v2', 'ambientUR'), 'masterVivox': (), 'micVivox': (), 'masterFadeVivox': ()} defMasterVolume = 0.5 defCategoryVolumes = {'music': 0.5, 'masterVivox': 0.7, 'micVivox': 0.4} userPrefs = Settings.g_instance.userPrefs soundModeName = SoundModes.DEFAULT_MODE_NAME nationalMapping = None self.__soundModes = None if not userPrefs.has_key(Settings.KEY_SOUND_PREFERENCES): userPrefs.write(Settings.KEY_SOUND_PREFERENCES, '') self.__masterVolume = defMasterVolume for categoryName in self.__categories.keys(): self.__volumeByCategory[categoryName] = defCategoryVolumes.get(categoryName, 1.0) self.savePreferences() else: ds = userPrefs[Settings.KEY_SOUND_PREFERENCES] self.__enableStatus = ds.readInt('enable', SOUND_ENABLE_STATUS_DEFAULT) self.__lqRenderState = ds.readInt('LQ_render', LQ_RENDER_STATE_DEFAULT) self.__masterVolume = ds.readFloat('masterVolume', defMasterVolume) for categoryName in self.__categories.keys(): volume = ds.readFloat('volume_' + categoryName, defCategoryVolumes.get(categoryName, 1.0)) self.__volumeByCategory[categoryName] = volume soundModeSec = ds['soundMode'] if soundModeSec is not None: soundModeName = soundModeSec.asString if soundModeName == '': soundModeName = SoundModes.DEFAULT_MODE_NAME if ds['soundMode'].has_key('nationalPreset'): nationalMapping = ds.readString('soundMode/nationalPreset', '') else: nationsSec = soundModeSec['nations'] if nationsSec is not None: nationalMapping = {} for nation, sec in nationsSec.items(): nationalMapping[nation] = sec.asString self.__soundModes = SoundModes(SoundModes.DEFAULT_MODE_NAME) if isinstance(nationalMapping, str): self.__soundModes.setNationalMappingByPreset(nationalMapping) elif isinstance(nationalMapping, dict): self.__soundModes.setNationalMapping(nationalMapping) else: self.__soundModes.setNationalMappingByMode(soundModeName) self.applyPreferences() self.__muteCallbackID = BigWorld.callback(0.25, self.__muteByWindowVisibility) self.defaultGroupList = '' settings = ResMgr.openSection('scripts/arena_defs/_default_.xml/preloadSoundBanks') if settings is not None: self.defaultGroupList = settings.asString g_replayEvents.onMuteSound += self.__onReplayMute from gui.app_loader import g_appLoader g_appLoader.onGUISpaceEntered += self.__onGUISpaceEntered return
def getMasterVolume(self): if BigWorld.isWindowVisible(): return self.__masterVolume return 0.0
def __init__(self): self.__volumeByCategory = {} self.__masterVolume = 1.0 self.__replace = {} self.__isWindowVisible = BigWorld.isWindowVisible() self.__handleInside = None self.__handleOutside = None self.__ceilLess = None self.__activeStinger = None self.__activeTrack = None self.__activeStingerPriority = None self.__muffled = False self.__muffledByReplay = False PlayerEvents.g_playerEvents.onAvatarReady += self.onAvatarReady self.__categories = {'voice': ('ingame_voice',), 'vehicles': ('outside/vehicles', 'vehicles', 'inside/vehicles'), 'effects': ('hits', 'outside/hits', 'inside/hits', 'weapons', 'inside/weapons', 'outside/weapons', 'environment', 'inside/environment', 'outside/environment', 'battle_gui'), 'gui': ('gui',), 'music': ('music',), 'ambient': ('outside/ambient', 'hangar_v2', 'ambientUR'), 'masterVivox': (), 'micVivox': (), 'masterFadeVivox': ()} defMasterVolume = 0.5 defCategoryVolumes = {'music': 0.5, 'masterVivox': 0.7, 'micVivox': 0.4} userPrefs = Settings.g_instance.userPrefs soundModeName = SoundModes.DEFAULT_MODE_NAME nationalMapping = None self.__soundModes = None if not userPrefs.has_key(Settings.KEY_SOUND_PREFERENCES): userPrefs.write(Settings.KEY_SOUND_PREFERENCES, '') self.__masterVolume = defMasterVolume for categoryName in self.__categories.keys(): self.__volumeByCategory[categoryName] = defCategoryVolumes.get(categoryName, 1.0) self.savePreferences() else: ds = userPrefs[Settings.KEY_SOUND_PREFERENCES] self.__masterVolume = ds.readFloat('masterVolume', defMasterVolume) for categoryName in self.__categories.keys(): volume = ds.readFloat('volume_' + categoryName, defCategoryVolumes.get(categoryName, 1.0)) self.__volumeByCategory[categoryName] = volume soundModeSec = ds['soundMode'] if soundModeSec is not None: soundModeName = soundModeSec.asString if soundModeName == '': soundModeName = SoundModes.DEFAULT_MODE_NAME if ds['soundMode'].has_key('nationalPreset'): nationalMapping = ds.readString('soundMode/nationalPreset', '') else: nationsSec = soundModeSec['nations'] if nationsSec is not None: nationalMapping = {} for nation, sec in nationsSec.items(): nationalMapping[nation] = sec.asString self.__soundModes = SoundModes(SoundModes.DEFAULT_MODE_NAME) if isinstance(nationalMapping, str): self.__soundModes.setNationalMappingByPreset(nationalMapping) elif isinstance(nationalMapping, dict): self.__soundModes.setNationalMapping(nationalMapping) else: self.__soundModes.setNationalMappingByMode(soundModeName) self.applyPreferences() self.__muteCallbackID = BigWorld.callback(0.25, self.__muteByWindowVisibility) self.defaultGroupList = [] settings = ResMgr.openSection('scripts/arena_defs/_default_.xml/preloadSoundGroups') if settings is not None: self.defaultGroupList = settings.readStrings('groupName') if FMOD.enabled: for sg in self.defaultGroupList: result = FMOD.WG_loadSoundGroup(sg) if not result: LOG_NOTE('Loading failed for default sound group ', sg) FMOD.WG_unloadAll() g_replayEvents.onMuteSound += self.__onReplayMute
def __init__(self): self.__enableStatus = SOUND_ENABLE_STATUS_DEFAULT self.__volumeByCategory = {} self.__masterVolume = 1.0 self.__isWindowVisible = BigWorld.isWindowVisible() self.__handleInside = None self.__handleOutside = None self.__activeStinger = None self.__activeTrack = None self.__activeStingerPriority = None self.__muffled = False self.__muffledByReplay = False self.__states = [] from gui.app_loader import g_appLoader self.__spaceID = g_appLoader.getSpaceID() PlayerEvents.g_playerEvents.onAvatarReady += self.onAvatarReady self.__categories = { 'vehicles': ('outside/vehicles', 'vehicles'), 'effects': ('hits', 'outside/hits', 'inside/weapons', 'outside/weapons', 'outside/environment', 'battle_gui'), 'gui': ('gui', 'ingame_voice'), 'music': ('music', ), 'ambient': ('outside/ambient', 'hangar_v2', 'ambientUR'), 'masterVivox': (), 'micVivox': (), 'masterFadeVivox': () } defCategoryVolumes = { 'music': 0.5, 'masterVivox': 0.7, 'micVivox': 0.4 } userPrefs = Settings.g_instance.userPrefs soundModeName = SoundModes.DEFAULT_MODE_NAME nationalMapping = None self.__soundModes = None if not userPrefs.has_key(Settings.KEY_SOUND_PREFERENCES): userPrefs.write(Settings.KEY_SOUND_PREFERENCES, '') self.__masterVolume = MASTER_VOLUME_DEFAULT for categoryName in self.__categories.iterkeys(): self.__volumeByCategory[categoryName] = defCategoryVolumes.get( categoryName, 1.0) self.savePreferences() else: ds = userPrefs[Settings.KEY_SOUND_PREFERENCES] self.__enableStatus = ds.readInt('enable', SOUND_ENABLE_STATUS_DEFAULT) self.__masterVolume = ds.readFloat('masterVolume', MASTER_VOLUME_DEFAULT) self.__volumeByCategory['music_hangar'] = ds.readFloat( 'volume_music_hangar', 1.0) self.__volumeByCategory['voice'] = ds.readFloat( 'volume_voice', 1.0) self.__volumeByCategory['ev_ambient'] = ds.readFloat( 'volume_ev_ambient', 0.8) self.__volumeByCategory['ev_effects'] = ds.readFloat( 'volume_ev_effects', 0.8) self.__volumeByCategory['ev_gui'] = ds.readFloat( 'volume_ev_gui', 0.8) self.__volumeByCategory['ev_music'] = ds.readFloat( 'volume_ev_music', 0.8) self.__volumeByCategory['ev_vehicles'] = ds.readFloat( 'volume_ev_vehicles', 0.8) self.__volumeByCategory['ev_voice'] = ds.readFloat( 'volume_ev_voice', 0.8) for categoryName in self.__categories.iterkeys(): volume = ds.readFloat( 'volume_' + categoryName, defCategoryVolumes.get(categoryName, 1.0)) self.__volumeByCategory[categoryName] = volume soundModeSec = ds['soundMode'] if soundModeSec is not None: soundModeName = soundModeSec.asString if soundModeName == '': soundModeName = SoundModes.DEFAULT_MODE_NAME if ds['soundMode'].has_key('nationalPreset'): nationalMapping = ds.readString( 'soundMode/nationalPreset', '') else: nationsSec = soundModeSec['nations'] if nationsSec is not None: nationalMapping = {} for nation, sec in nationsSec.items(): nationalMapping[nation] = sec.asString self.__soundModes = SoundModes(SoundModes.DEFAULT_MODE_NAME) if isinstance(nationalMapping, str): self.__soundModes.setNationalMappingByPreset(nationalMapping) elif isinstance(nationalMapping, dict): self.__soundModes.setNationalMapping(nationalMapping) else: self.__soundModes.setNationalMappingByMode(soundModeName) self.applyPreferences() self.__muteCallbackID = BigWorld.callback( 0.25, self.__muteByWindowVisibility) g_replayEvents.onMuteSound += self.__onReplayMute g_appLoader.onGUISpaceEntered += self.__onGUISpaceEntered return