def apply(self, restartApproved, callbackId, settings): restartClient = False interfaceScaled = False g_settingsCore.isDeviseRecreated = False import VOIP if (not self.resolutions.isVideoWindowed or settings["fullScreen"]) and ( settings["monitor"] != self.resolutions.realMonitorIndex or self.resolutions.monitorChanged ): restartClient = True if g_settingsCore.getSetting("interfaceScale") != settings["interfaceScale"]: interfaceScaled = True g_settingsCore.applySetting("ppShowTypes", settings["ppShowTypes"]) g_settingsCore.applySetting("ppShowLevels", settings["ppShowLevels"]) g_settingsCore.applySetting("replayEnabled", settings["replayEnabled"]) g_settingsCore.applySetting("fpsPerfomancer", settings["fpsPerfomancer"]) g_settingsCore.applySetting("colorFilterIntensity", settings["colorFilterIntensity"]) g_settingsCore.applySetting("fov", settings["fov"]) g_settingsCore.applySetting("dynamicFov", settings["dynamicFov"]) g_settingsCore.applySetting("enableOpticalSnpEffect", settings["enableOpticalSnpEffect"]) g_settingsCore.applySetting("nationalVoices", settings["nationalVoices"]) g_settingsCore.applySetting("isColorBlind", settings["isColorBlind"]) g_settingsCore.applySetting("useServerAim", settings["useServerAim"]) g_settingsCore.applySetting("showVehiclesCounter", settings["showVehiclesCounter"]) g_settingsCore.applySetting("showMarksOnGun", settings["showMarksOnGun"]) g_settingsCore.applySetting("minimapAlpha", settings["minimapAlpha"]) g_settingsCore.applySetting("showVectorOnMap", settings["showVectorOnMap"]) g_settingsCore.applySetting("showSectorOnMap", settings["showSectorOnMap"]) g_settingsCore.applySetting("showVehModelsOnMap", settings["showVehModelsOnMap"]) arcade = g_settingsCore.options.getSetting("arcade").fromAccountSettings(settings["arcade"]) sniper = g_settingsCore.options.getSetting("sniper").fromAccountSettings(settings["sniper"]) g_settingsCore.applySetting("arcade", arcade) g_settingsCore.applySetting("sniper", sniper) g_settingsCore.applySetting("enemy", settings["markers"]["enemy"]) g_settingsCore.applySetting("dead", settings["markers"]["dead"]) g_settingsCore.applySetting("ally", settings["markers"]["ally"]) g_settingsCore.applySetting("interfaceScale", settings["interfaceScale"]) if "showBattleEfficiencyRibbons" in settings: g_settingsCore.applySetting("showBattleEfficiencyRibbons", settings["showBattleEfficiencyRibbons"]) g_settingsCore.applySetting("dynamicCamera", settings["dynamicCamera"]) g_settingsCore.applySetting("horStabilizationSnp", settings["horStabilizationSnp"]) if self.__altVoiceSetting.isOptionEnabled(): altVoices = settings.get("alternativeVoices") if altVoices is not None: self.__altVoiceSetting.apply(altVoices) vManager = VibroManager.g_instance vManager.setGain(settings["vibroGain"] / 100.0) vEffGroups = vManager.getGroupsSettings() for groupName, newValue in [ ("engine", settings["vibroEngine"]), ("acceleration", settings["vibroAcceleration"]), ("shots", settings["vibroShots"]), ("hits", settings["vibroHits"]), ("collisions", settings["vibroCollisions"]), ("damage", settings["vibroDamage"]), ("gui", settings["vibroGUI"]), ]: if groupName in vEffGroups: vEffGroups[groupName].gain = newValue / 100.0 vEffGroups[groupName].enabled = newValue > 0 vManager.setGroupsSettings(vEffGroups) self.__voiceChatEnable(settings["enableVoIP"]) g_settingsCore.applySetting(SOUND.CAPTURE_DEVICES, settings[Settings.KEY_VOIP_DEVICE]) g_settingsCore.applySetting("enablePostMortemEffect", settings["enablePostMortemEffect"]) g_settingsCore.applySetting("enablePostMortemDelay", settings["enablePostMortemDelay"]) self.uiHolder.clearCommands() keyboard = settings["controls"]["keyboard"] keyboardMapping = {} keysLayout = dict(g_settingsCore.options.getSetting("keyboard").KEYS_LAYOUT) layout = list(itertools.chain(*keysLayout.values())) for i in xrange(len(self.KEYBOARD_MAPPING_BLOCKS)): group_name = keyboard[i]["id"] for j in xrange(len(self.KEYBOARD_MAPPING_BLOCKS[group_name])): key_name = keyboard[i]["commands"][j]["id"] value = keyboard[i]["commands"][j]["key"] cmd = self.KEYBOARD_MAPPING_COMMANDS[group_name][key_name] for item in layout: key, command = item[0], item[1] if command == cmd: keyboardMapping[key] = value break g_settingsCore.applySetting("keyboard", keyboardMapping) self.uiHolder.bindCommands() player = BigWorld.player() mouse = settings["controls"]["mouse"] if hasattr(player.inputHandler, "ctrls"): player.inputHandler.ctrls["arcade"].camera.setUserConfigValue("sensitivity", mouse["arcadeSens"]["value"]) player.inputHandler.ctrls["sniper"].camera.setUserConfigValue("sensitivity", mouse["sniperSens"]["value"]) player.inputHandler.ctrls["strategic"].camera.setUserConfigValue("sensitivity", mouse["artSens"]["value"]) else: ds = Settings.g_instance.userPrefs[Settings.KEY_CONTROL_MODE] if ds: ds["arcadeMode/camera"].writeFloat("sensitivity", mouse["arcadeSens"]["value"]) ds["sniperMode/camera"].writeFloat("sensitivity", mouse["sniperSens"]["value"]) ds["strategicMode/camera"].writeFloat("sensitivity", mouse["artSens"]["value"]) g_settingsCore.applySetting("mouseHorzInvert", bool(mouse["horInvert"]["value"])) g_settingsCore.applySetting("mouseVertInvert", bool(mouse["vertInvert"]["value"])) g_settingsCore.applySetting("backDraftInvert", bool(mouse["backDraftInvert"]["value"])) g_settingsCore.applySetting("monitor", settings["monitor"]) isFullScreen = bool(settings["fullScreen"]) if isFullScreen: g_settingsCore.applySetting("refreshRate", settings["refreshRate"]) g_settingsCore.applySetting("resolution", settings["resolution"]) g_settingsCore.applySetting("aspectRatio", settings["aspectRatio"]) g_settingsCore.applySetting("gamma", settings["gamma"]) else: g_settingsCore.applySetting("windowSize", settings["windowSize"]) g_settingsCore.applySetting("fullScreen", isFullScreen) g_settingsCore.applySetting("multisampling", settings["multisampling"]) g_settingsCore.applySetting("customAA", settings["customAA"]) g_settingsCore.applySetting("vertSync", settings["vertSync"]) g_settingsCore.applySetting("tripleBuffered", settings["tripleBuffered"]) if round(SoundGroups.g_instance.getVolume("masterVivox") * 100) != settings["masterVivoxVolume"]: VOIP.getVOIPManager().setMasterVolume(settings["masterVivoxVolume"]) if round(SoundGroups.g_instance.getVolume("micVivox") * 100) != settings["micVivoxVolume"]: VOIP.getVOIPManager().setMicrophoneVolume(settings["micVivoxVolume"]) SoundGroups.g_instance.setMasterVolume(float(settings["masterVolume"]) / 100) SoundGroups.g_instance.setVolume("music", float(settings["musicVolume"]) / 100) SoundGroups.g_instance.setVolume("voice", float(settings["voiceVolume"]) / 100) SoundGroups.g_instance.setVolume("vehicles", float(settings["vehiclesVolume"]) / 100) SoundGroups.g_instance.setVolume("effects", float(settings["effectsVolume"]) / 100) SoundGroups.g_instance.setVolume("gui", float(settings["guiVolume"]) / 100) SoundGroups.g_instance.setVolume("ambient", float(settings["ambientVolume"]) / 100) SoundGroups.g_instance.setVolume("masterVivox", float(settings["masterVivoxVolume"]) / 100) SoundGroups.g_instance.setVolume("micVivox", float(settings["micVivoxVolume"]) / 100) SoundGroups.g_instance.setVolume("masterFadeVivox", float(settings["masterFadeVivoxVolume"]) / 100) g_settingsCore.applySetting("showDateMessage", settings["datetimeIdx"] & 1) g_settingsCore.applySetting("showTimeMessage", settings["datetimeIdx"] & 2) g_settingsCore.applySetting("enableOlFilter", settings["enableOlFilter"]) g_settingsCore.applySetting("enableSpamFilter", settings["enableSpamFilter"]) g_windowsStoredData.start() g_settingsCore.applySetting("receiveFriendshipRequest", settings["receiveFriendshipRequest"]) g_settingsCore.applySetting("receiveInvitesInBattle", settings.get("receiveInvitesInBattle")) g_windowsStoredData.stop() g_settingsCore.applySetting("invitesFromFriendsOnly", settings["invitesFromFriendsOnly"]) g_settingsCore.applySetting("storeReceiverInBattle", settings["storeReceiverInBattle"]) g_settingsCore.applySetting("disableBattleChat", settings["disableBattleChat"]) g_settingsCore.applySetting("chatContactsListOnly", settings["chatContactsListOnly"]) gameplayKeys = filter(lambda item: item.startswith(self.GAMEPLAY_PREFIX), settings.keys()) for key in gameplayKeys: g_settingsCore.applySetting(key, settings[key]) qualitySettings = settings["quality"] applyMethod = g_settingsCore.options.getApplyMethod(qualitySettings) for key in GraphicsPresets.GRAPHICS_QUALITY_SETTINGS: value = qualitySettings.get(key) if value is not None: g_settingsCore.applySetting(key, value) g_settingsCore.applySetting("dynamicRenderer", settings["dynamicRenderer"]) if applyMethod == APPLY_METHOD.RESTART: BigWorld.commitPendingGraphicsSettings() restartClient = True elif applyMethod == APPLY_METHOD.DELAYED: BigWorld.commitPendingGraphicsSettings() confirmators = g_settingsCore.applyStorages(restartClient) for confirmation, revert in confirmators: if confirmation is not None: if confirmation == "graphicsChangeConfirmation": def callback(isConfirmed): if not isConfirmed: g_settingsCore.isChangesConfirmed = False revert() self.graphicsChangeConfirmationRevert = revert self.call("SettingsDialog.ApplySettings", [confirmation]) g_postProcessing.refresh() if restartClient: BigWorld.savePreferences() if restartApproved: from BattleReplay import g_replayCtrl if g_replayCtrl.isPlaying and g_replayCtrl.playbackSpeed == 0: g_replayCtrl.setPlaybackSpeedIdx(5) BigWorld.callback(0.3, self.__restartGame) elif g_settingsCore.isDeviseRecreated: g_settingsCore.isDeviseRecreated = False else: BigWorld.callback(0.0, partial(BigWorld.changeVideoMode, -1, BigWorld.isVideoWindowed())) if interfaceScaled: self.__settingsUI.buildGraphicsData(self.__getVideoSettings()) return
def showLobby(self): if self.__window is None: self.__window = AppEntry() self.__window.active(True) g_windowsStoredData.start() BattleReplay.g_replayCtrl.onCommonSwfLoaded() return
def createLobby(self): LOG_DEBUG('Creating app', _SPACE.SF_LOBBY) lobby = self.__apps[_SPACE.SF_LOBBY] if not lobby: lobby = LobbyEntry(_SPACE.SF_LOBBY) self.__importer.load(lobby.proxy, sf_config.COMMON_PACKAGES + sf_config.LOBBY_PACKAGES) self.__apps[_SPACE.SF_LOBBY] = lobby lobby.active(True) g_windowsStoredData.start() BattleReplay.g_replayCtrl.onCommonSwfLoaded()
def createLobby(self): LOG_DEBUG('Creating app', _SPACE.SF_LOBBY) lobby = self.__apps[_SPACE.SF_LOBBY] if not lobby: lobby = LobbyEntry(_SPACE.SF_LOBBY) self.__importer.load( lobby.proxy, sf_config.COMMON_PACKAGES + sf_config.LOBBY_PACKAGES) self.__apps[_SPACE.SF_LOBBY] = lobby lobby.active(True) g_windowsStoredData.start() BattleReplay.g_replayCtrl.onCommonSwfLoaded()
def createLobby(self): LOG_DEBUG('Creating app', _SPACE.SF_LOBBY) lobby = self.__apps[_SPACE.SF_LOBBY] if lobby is None: lobby = LobbyEntry(_SPACE.SF_LOBBY) self.__packages[_SPACE.SF_LOBBY] = sf_config.LOBBY_PACKAGES self.__importer.load( lobby.proxy, sf_config.COMMON_PACKAGES + self.__packages[_SPACE.SF_LOBBY]) self.__apps[_SPACE.SF_LOBBY] = lobby lobby.active(True) g_windowsStoredData.start() return
def createLobby(self): _logger.info('Creating app: %s', _SPACE.SF_LOBBY) lobby = self.__apps[_SPACE.SF_LOBBY] if lobby is None: lobby = LobbyEntry(_SPACE.SF_LOBBY, self.__ctrlModeFlags[_SPACE.SF_LOBBY]) self.__apps[_SPACE.SF_LOBBY] = lobby self.__packages[_SPACE.SF_LOBBY] = sf_config.LOBBY_PACKAGES self.__importer.load( lobby.proxy, sf_config.COMMON_PACKAGES + self.__packages[_SPACE.SF_LOBBY]) lobby.active(True) g_windowsStoredData.start() return
def createLobby(self): _logger.info('Creating app: %s', _SPACE.SF_LOBBY) lobby = self.__apps[_SPACE.SF_LOBBY] if lobby is None: lobby = LobbyEntry(_SPACE.SF_LOBBY, self.__ctrlModeFlags[_SPACE.SF_LOBBY]) self.__apps[_SPACE.SF_LOBBY] = lobby self.__packages[_SPACE.SF_LOBBY] = sf_config.LOBBY_PACKAGES self.__importer.load( lobby.proxy, sf_config.COMMON_PACKAGES + sf_config.LOBBY_PACKAGES) collectedPackages = collectScaleformLobbyPackages() self.__packages[_SPACE.SF_LOBBY] += tuple(collectedPackages) self.__packages[_SPACE.SF_LOBBY] += tuple( g_overrideScaleFormViewsConfig.lobbyPackages) self.__importer.load(lobby.proxy, g_overrideScaleFormViewsConfig.lobbyPackages, None, True) lobby.active(True) g_windowsStoredData.start() return
def apply(self, restartApproved, callbackId, settings): restartClient = False g_settingsCore.isDeviseRecreated = False import VOIP if (not self.resolutions.isVideoWindowed or settings['fullScreen']) and (settings['monitor'] != self.resolutions.realMonitorIndex or self.resolutions.monitorChanged): restartClient = True g_settingsCore.applySetting('ppShowTypes', settings['ppShowTypes']) g_settingsCore.applySetting('ppShowLevels', settings['ppShowLevels']) g_settingsCore.applySetting('replayEnabled', settings['replayEnabled']) g_settingsCore.applySetting('fpsPerfomancer', settings['fpsPerfomancer']) g_settingsCore.applySetting('dynamicRenderer', settings['dynamicRenderer']) g_settingsCore.applySetting('colorFilterIntensity', settings['colorFilterIntensity']) g_settingsCore.applySetting('fov', settings['fov']) g_settingsCore.applySetting('dynamicFov', settings['dynamicFov']) g_settingsCore.applySetting('enableOpticalSnpEffect', settings['enableOpticalSnpEffect']) g_settingsCore.applySetting('nationalVoices', settings['nationalVoices']) g_settingsCore.applySetting('isColorBlind', settings['isColorBlind']) g_settingsCore.applySetting('useServerAim', settings['useServerAim']) g_settingsCore.applySetting('showVehiclesCounter', settings['showVehiclesCounter']) g_settingsCore.applySetting('showMarksOnGun', settings['showMarksOnGun']) g_settingsCore.applySetting('minimapAlpha', settings['minimapAlpha']) g_settingsCore.applySetting('showVectorOnMap', settings['showVectorOnMap']) g_settingsCore.applySetting('showSectorOnMap', settings['showSectorOnMap']) g_settingsCore.applySetting('showVehModelsOnMap', settings['showVehModelsOnMap']) arcade = g_settingsCore.options.getSetting('arcade').fromAccountSettings(settings['arcade']) sniper = g_settingsCore.options.getSetting('sniper').fromAccountSettings(settings['sniper']) g_settingsCore.applySetting('arcade', arcade) g_settingsCore.applySetting('sniper', sniper) g_settingsCore.applySetting('enemy', settings['markers']['enemy']) g_settingsCore.applySetting('dead', settings['markers']['dead']) g_settingsCore.applySetting('ally', settings['markers']['ally']) g_settingsCore.applySetting('dynamicCamera', settings['dynamicCamera']) g_settingsCore.applySetting('horStabilizationSnp', settings['horStabilizationSnp']) if self.__altVoiceSetting.isOptionEnabled(): altVoices = settings.get('alternativeVoices') if altVoices is not None: self.__altVoiceSetting.apply(altVoices) vManager = VibroManager.g_instance vManager.setGain(settings['vibroGain'] / 100.0) vEffGroups = vManager.getGroupsSettings() for groupName, newValue in [('engine', settings['vibroEngine']), ('acceleration', settings['vibroAcceleration']), ('shots', settings['vibroShots']), ('hits', settings['vibroHits']), ('collisions', settings['vibroCollisions']), ('damage', settings['vibroDamage']), ('gui', settings['vibroGUI'])]: if groupName in vEffGroups: vEffGroups[groupName].gain = newValue / 100.0 vEffGroups[groupName].enabled = newValue > 0 vManager.setGroupsSettings(vEffGroups) self.__voiceChatEnable(settings['enableVoIP']) g_settingsCore.applySetting(SOUND.CAPTURE_DEVICES, settings[Settings.KEY_VOIP_DEVICE]) g_settingsCore.applySetting('enablePostMortemEffect', settings['enablePostMortemEffect']) g_settingsCore.applySetting('enablePostMortemDelay', settings['enablePostMortemDelay']) self.uiHolder.clearCommands() keyboard = settings['controls']['keyboard'] keyboardMapping = {} keysLayout = dict(g_settingsCore.options.getSetting('keyboard').KEYS_LAYOUT) layout = list(itertools.chain(*keysLayout.values())) for i in xrange(len(self.KEYBOARD_MAPPING_BLOCKS)): group_name = keyboard[i]['id'] for j in xrange(len(self.KEYBOARD_MAPPING_BLOCKS[group_name])): key_name = keyboard[i]['commands'][j]['id'] value = keyboard[i]['commands'][j]['key'] cmd = self.KEYBOARD_MAPPING_COMMANDS[group_name][key_name] for item in layout: key, command = item[0], item[1] if command == cmd: keyboardMapping[key] = value break g_settingsCore.applySetting('keyboard', keyboardMapping) self.uiHolder.bindCommands() player = BigWorld.player() mouse = settings['controls']['mouse'] if hasattr(player.inputHandler, 'ctrls'): player.inputHandler.ctrls['arcade'].camera.setUserConfigValue('sensitivity', mouse['arcadeSens']['value']) player.inputHandler.ctrls['sniper'].camera.setUserConfigValue('sensitivity', mouse['sniperSens']['value']) player.inputHandler.ctrls['strategic'].camera.setUserConfigValue('sensitivity', mouse['artSens']['value']) else: ds = Settings.g_instance.userPrefs[Settings.KEY_CONTROL_MODE] if ds: ds['arcadeMode/camera'].writeFloat('sensitivity', mouse['arcadeSens']['value']) ds['sniperMode/camera'].writeFloat('sensitivity', mouse['sniperSens']['value']) ds['strategicMode/camera'].writeFloat('sensitivity', mouse['artSens']['value']) g_settingsCore.applySetting('mouseHorzInvert', bool(mouse['horInvert']['value'])) g_settingsCore.applySetting('mouseVertInvert', bool(mouse['vertInvert']['value'])) g_settingsCore.applySetting('backDraftInvert', bool(mouse['backDraftInvert']['value'])) isFullScreen = bool(settings['fullScreen']) if isFullScreen: g_settingsCore.applySetting('refreshRate', settings['refreshRate']) g_settingsCore.applySetting('resolution', settings['resolution']) g_settingsCore.applySetting('aspectRatio', settings['aspectRatio']) g_settingsCore.applySetting('gamma', settings['gamma']) else: g_settingsCore.applySetting('windowSize', settings['windowSize']) g_settingsCore.applySetting('fullScreen', isFullScreen) g_settingsCore.applySetting('multisampling', settings['multisampling']) g_settingsCore.applySetting('customAA', settings['customAA']) g_settingsCore.applySetting('monitor', settings['monitor']) g_settingsCore.applySetting('vertSync', settings['vertSync']) g_settingsCore.applySetting('tripleBuffered', settings['tripleBuffered']) if round(SoundGroups.g_instance.getVolume('masterVivox') * 100) != settings['masterVivoxVolume']: VOIP.getVOIPManager().setMasterVolume(settings['masterVivoxVolume']) if round(SoundGroups.g_instance.getVolume('micVivox') * 100) != settings['micVivoxVolume']: VOIP.getVOIPManager().setMicrophoneVolume(settings['micVivoxVolume']) SoundGroups.g_instance.setMasterVolume(float(settings['masterVolume']) / 100) SoundGroups.g_instance.setVolume('music', float(settings['musicVolume']) / 100) SoundGroups.g_instance.setVolume('voice', float(settings['voiceVolume']) / 100) SoundGroups.g_instance.setVolume('vehicles', float(settings['vehiclesVolume']) / 100) SoundGroups.g_instance.setVolume('effects', float(settings['effectsVolume']) / 100) SoundGroups.g_instance.setVolume('gui', float(settings['guiVolume']) / 100) SoundGroups.g_instance.setVolume('ambient', float(settings['ambientVolume']) / 100) SoundGroups.g_instance.setVolume('masterVivox', float(settings['masterVivoxVolume']) / 100) SoundGroups.g_instance.setVolume('micVivox', float(settings['micVivoxVolume']) / 100) SoundGroups.g_instance.setVolume('masterFadeVivox', float(settings['masterFadeVivoxVolume']) / 100) from BattleReplay import g_replayCtrl if g_replayCtrl is not None and g_replayCtrl.isPlaying: if g_replayCtrl.playbackSpeed == 0 or g_replayCtrl.playbackSpeed > 4.0: SoundGroups.g_instance.enableReplaySounds(False) g_settingsCore.applySetting('showDateMessage', settings['datetimeIdx'] & 1) g_settingsCore.applySetting('showTimeMessage', settings['datetimeIdx'] & 2) g_settingsCore.applySetting('enableOlFilter', settings['enableOlFilter']) g_settingsCore.applySetting('enableSpamFilter', settings['enableSpamFilter']) g_windowsStoredData.start() g_settingsCore.applySetting('enableStoreMws', settings['enableStoreChatMws']) g_settingsCore.applySetting('enableStoreCws', settings['enableStoreChatCws']) g_windowsStoredData.stop() g_settingsCore.applySetting('invitesFromFriendsOnly', settings['invitesFromFriendsOnly']) g_settingsCore.applySetting('storeReceiverInBattle', settings['storeReceiverInBattle']) g_settingsCore.applySetting('disableBattleChat', settings['disableBattleChat']) gameplayKeys = filter(lambda item: item.startswith(self.GAMEPLAY_PREFIX), settings.keys()) for key in gameplayKeys: g_settingsCore.applySetting(key, settings[key]) qualitySettings = settings['quality'] applyMethod = g_settingsCore.options.getApplyMethod(qualitySettings) for key in GraphicsPresets.GRAPHICS_QUALITY_SETTINGS: value = qualitySettings.get(key) if value is not None: g_settingsCore.applySetting(key, value) if applyMethod == APPLY_METHOD.RESTART: BigWorld.commitPendingGraphicsSettings() restartClient = True elif applyMethod == APPLY_METHOD.DELAYED: BigWorld.commitPendingGraphicsSettings() confirmators = g_settingsCore.applyStorages(restartClient) for confirmation, revert in confirmators: if confirmation is not None: if confirmation == 'graphicsChangeConfirmation': def callback(isConfirmed): if not isConfirmed: g_settingsCore.isChangesConfirmed = False revert() self.graphicsChangeConfirmationRevert = revert self.call('SettingsDialog.ApplySettings', [confirmation]) g_postProcessing.refresh() if restartClient: BigWorld.savePreferences() if restartApproved: if g_replayCtrl.isPlaying and g_replayCtrl.playbackSpeed == 0: g_replayCtrl.setPlaybackSpeedIdx(5) BigWorld.callback(0.3, self.__restartGame) elif g_settingsCore.isDeviseRecreated: g_settingsCore.isDeviseRecreated = False else: BigWorld.callback(0.0, partial(BigWorld.changeVideoMode, -1, BigWorld.isVideoWindowed())) return
def __getSettings(self): settings = [self.graphicsPresets.getGraphicsPresetsData()] import VOIP rh = VOIP.getVOIPManager() g_windowsStoredData.start() vManager = VibroManager.g_instance vEffGroups = vManager.getGroupsSettings() vEffDefGroup = VibroManager.VibroManager.GroupSettings() vEffDefGroup.enabled = False vEffDefGroup.gain = 0 markers = {'enemy': g_settingsCore.getSetting('enemy'), 'dead': g_settingsCore.getSetting('dead'), 'ally': g_settingsCore.getSetting('ally')} datetimeIdx = g_settingsCore.getSetting('showDateMessage') << 0 | g_settingsCore.getSetting('showTimeMessage') << 1 config = {'locale': getClientOverride(), 'aspectRatio': {'current': self.resolutions.aspectRatioIndex, 'options': self.resolutions.aspectRatiosList}, 'vertSync': self.resolutions.isVideoVSync, 'tripleBuffered': self.resolutions.isTripleBuffered, 'multisampling': {'current': self.resolutions.multisamplingTypeIndex, 'options': self.resolutions.multisamplingTypesList}, 'customAA': {'current': self.resolutions.customAAModeIndex, 'options': self.resolutions.customAAModesList}, 'gamma': self.resolutions.gamma, 'masterVolume': round(SoundGroups.g_instance.getMasterVolume() * 100), 'musicVolume': round(SoundGroups.g_instance.getVolume('music') * 100), 'voiceVolume': round(SoundGroups.g_instance.getVolume('voice') * 100), 'vehiclesVolume': round(SoundGroups.g_instance.getVolume('vehicles') * 100), 'effectsVolume': round(SoundGroups.g_instance.getVolume('effects') * 100), 'guiVolume': round(SoundGroups.g_instance.getVolume('gui') * 100), 'ambientVolume': round(SoundGroups.g_instance.getVolume('ambient') * 100), 'masterVivoxVolume': round(SoundGroups.g_instance.getVolume('masterVivox') * 100), 'micVivoxVolume': round(SoundGroups.g_instance.getVolume('micVivox') * 100), 'masterFadeVivoxVolume': round(SoundGroups.g_instance.getVolume('masterFadeVivox') * 100), 'captureDevice': g_settingsCore.options.getSetting(SOUND.CAPTURE_DEVICES).pack(), 'voiceChatNotSupported': not g_settingsCore.getSetting(SOUND.VOIP_SUPPORTED), 'datetimeIdx': datetimeIdx, 'enableOlFilter': g_settingsCore.getSetting('enableOlFilter'), 'enableSpamFilter': g_settingsCore.getSetting('enableSpamFilter'), 'enableStoreChatMws': g_settingsCore.getSetting('enableStoreMws'), 'enableStoreChatCws': g_settingsCore.getSetting('enableStoreCws'), 'invitesFromFriendsOnly': g_settingsCore.getSetting('invitesFromFriendsOnly'), 'storeReceiverInBattle': g_settingsCore.getSetting('storeReceiverInBattle'), 'disableBattleChat': g_settingsCore.getSetting('disableBattleChat'), 'dynamicCamera': g_settingsCore.getSetting('dynamicCamera'), 'horStabilizationSnp': g_settingsCore.getSetting('horStabilizationSnp'), 'enableVoIP': VOIP.getVOIPManager().isEnabled(), 'enablePostMortemEffect': g_settingsCore.getSetting('enablePostMortemEffect'), 'enablePostMortemDelay': g_settingsCore.getSetting('enablePostMortemDelay'), 'nationalVoices': g_settingsCore.getSetting('nationalVoices'), 'isColorBlind': g_settingsCore.getSetting('isColorBlind'), 'useServerAim': g_settingsCore.getSetting('useServerAim'), 'showVehiclesCounter': g_settingsCore.getSetting('showVehiclesCounter'), 'showMarksOnGun': g_settingsCore.getSetting('showMarksOnGun'), 'minimapAlpha': g_settingsCore.getSetting('minimapAlpha'), 'showVectorOnMap': g_settingsCore.getSetting('showVectorOnMap'), 'showSectorOnMap': g_settingsCore.getSetting('showSectorOnMap'), 'showVehModelsOnMap': g_settingsCore.options.getSetting('showVehModelsOnMap').pack(), 'vibroIsConnected': vManager.connect(), 'vibroGain': vManager.getGain() * 100, 'vibroEngine': vEffGroups.get('engine', vEffDefGroup).gain * 100, 'vibroAcceleration': vEffGroups.get('acceleration', vEffDefGroup).gain * 100, 'vibroShots': vEffGroups.get('shots', vEffDefGroup).gain * 100, 'vibroHits': vEffGroups.get('hits', vEffDefGroup).gain * 100, 'vibroCollisions': vEffGroups.get('collisions', vEffDefGroup).gain * 100, 'vibroDamage': vEffGroups.get('damage', vEffDefGroup).gain * 100, 'vibroGUI': vEffGroups.get('gui', vEffDefGroup).gain * 100, 'ppShowLevels': g_settingsCore.getSetting('ppShowLevels'), 'ppShowTypes': g_settingsCore.getSetting('ppShowTypes'), 'replayEnabled': g_settingsCore.options.getSetting('replayEnabled').pack(), 'fpsPerfomancer': g_settingsCore.getSetting('fpsPerfomancer'), 'dynamicRenderer': g_settingsCore.getSetting('dynamicRenderer'), 'colorFilterIntensity': g_settingsCore.getSetting('colorFilterIntensity'), 'colorFilterImages': g_settingsCore.getSetting('colorFilterImages'), 'fov': g_settingsCore.getSetting('fov'), 'dynamicFov': g_settingsCore.getSetting('dynamicFov'), 'enableOpticalSnpEffect': g_settingsCore.getSetting('enableOpticalSnpEffect'), 'arcade': {'values': g_settingsCore.options.getSetting('arcade').toAccountSettings(), 'options': SettingsInterface.CURSOR_VALUES}, 'sniper': {'values': g_settingsCore.options.getSetting('sniper').toAccountSettings(), 'options': SettingsInterface.SNIPER_VALUES}, 'markers': {'values': markers, 'options': SettingsInterface.MARKER_VALUES, 'types': SettingsInterface.MARKER_TYPES}} if self.__altVoiceSetting.isOptionEnabled(): altVoices = [] for idx, desc in enumerate(self.__altVoiceSetting.getOptions()): altVoices.append({'data': idx, 'label': desc}) config['alternativeVoices'] = {'current': self.__altVoiceSetting.get(), 'options': altVoices} for name in ('ctf', 'domination', 'assault', 'nations'): key = self.GAMEPLAY_KEY_FORMAT.format(name) config[key] = g_settingsCore.getSetting(key) settings.append(config) if not LogitechMonitor.isPresentColor(): if self.KEYBOARD_MAPPING_BLOCKS.has_key('logitech_keyboard'): del self.KEYBOARD_MAPPING_BLOCKS['logitech_keyboard'] else: self.KEYBOARD_MAPPING_BLOCKS['logitech_keyboard'] = ('switch_view',) cmdMap = CommandMapping.g_instance defaults = cmdMap.getDefaults() keyboard = [] for group_name in self.KEYBOARD_MAPPING_BLOCKS_ORDER: if group_name in self.KEYBOARD_MAPPING_BLOCKS.keys(): group = {'id': group_name, 'commands': []} keyboard.append(group) for key_setting in self.KEYBOARD_MAPPING_BLOCKS[group_name]: command = cmdMap.getCommand(self.KEYBOARD_MAPPING_COMMANDS[group_name][key_setting]) keyCode = cmdMap.get(self.KEYBOARD_MAPPING_COMMANDS[group_name][key_setting]) defaultCode = defaults[command] if defaults.has_key(command) else 0 key = {'id': key_setting, 'command': command, 'key': getScaleformKey(keyCode), 'keyDefault': getScaleformKey(defaultCode)} group['commands'].append(key) settings.append(keyboard) mouse = {} player = BigWorld.player() if hasattr(player.inputHandler, 'ctrls'): for key, path in SettingsInterface.MOUSE_KEYS['ingame'].items(): if key == 'horInvert': value = g_settingsCore.getSetting('mouseHorzInvert') elif key == 'vertInvert': value = g_settingsCore.getSetting('mouseVertInvert') elif key == 'backDraftInvert': value = g_settingsCore.getSetting('backDraftInvert') else: value = player.inputHandler.ctrls[path[0]].camera.getUserConfigValue(path[1]) mouse[key] = {'defaultValue': SettingsInterface.MOUSE_KEYS['default'][key], 'value': value} else: ds = Settings.g_instance.userPrefs[Settings.KEY_CONTROL_MODE] for key, path in SettingsInterface.MOUSE_KEYS['lobby'].items(): default = SettingsInterface.MOUSE_KEYS['default'][key] value = default if key == 'horInvert': value = g_settingsCore.getSetting('mouseHorzInvert') elif key == 'vertInvert': value = g_settingsCore.getSetting('mouseVertInvert') elif key == 'backDraftInvert': value = g_settingsCore.getSetting('backDraftInvert') elif ds is not None: if path[2] == 'float': value = ds[path[0]].readFloat(path[1], default) elif path[2] == 'bool': value = ds[path[0]].readBool(path[1], default) else: LOG_DEBUG('Unknown mouse settings type %s %s' % (key, path)) mouse[key] = {'defaultValue': default, 'value': value} settings.append(mouse) g_windowsStoredData.stop() return settings
def __getSettings(self): settings = [self.graphicsPresets.getGraphicsPresetsData()] import VOIP rh = VOIP.getVOIPManager() g_windowsStoredData.start() vManager = VibroManager.g_instance vEffGroups = vManager.getGroupsSettings() vEffDefGroup = VibroManager.VibroManager.GroupSettings() vEffDefGroup.enabled = False vEffDefGroup.gain = 0 markers = { "enemy": g_settingsCore.getSetting("enemy"), "dead": g_settingsCore.getSetting("dead"), "ally": g_settingsCore.getSetting("ally"), } datetimeIdx = ( g_settingsCore.getSetting("showDateMessage") << 0 | g_settingsCore.getSetting("showTimeMessage") << 1 ) config = { "locale": getClientOverride(), "aspectRatio": {"current": self.resolutions.aspectRatioIndex, "options": self.resolutions.aspectRatiosList}, "vertSync": self.resolutions.isVideoVSync, "tripleBuffered": self.resolutions.isTripleBuffered, "multisampling": { "current": self.resolutions.multisamplingTypeIndex, "options": self.resolutions.multisamplingTypesList, }, "customAA": {"current": self.resolutions.customAAModeIndex, "options": self.resolutions.customAAModesList}, "gamma": self.resolutions.gamma, "masterVolume": round(SoundGroups.g_instance.getMasterVolume() * 100), "musicVolume": round(SoundGroups.g_instance.getVolume("music") * 100), "voiceVolume": round(SoundGroups.g_instance.getVolume("voice") * 100), "vehiclesVolume": round(SoundGroups.g_instance.getVolume("vehicles") * 100), "effectsVolume": round(SoundGroups.g_instance.getVolume("effects") * 100), "guiVolume": round(SoundGroups.g_instance.getVolume("gui") * 100), "ambientVolume": round(SoundGroups.g_instance.getVolume("ambient") * 100), "masterVivoxVolume": round(SoundGroups.g_instance.getVolume("masterVivox") * 100), "micVivoxVolume": round(SoundGroups.g_instance.getVolume("micVivox") * 100), "masterFadeVivoxVolume": round(SoundGroups.g_instance.getVolume("masterFadeVivox") * 100), "captureDevice": g_settingsCore.options.getSetting(SOUND.CAPTURE_DEVICES).pack(), "voiceChatNotSupported": not g_settingsCore.getSetting(SOUND.VOIP_SUPPORTED), "datetimeIdx": datetimeIdx, "enableOlFilter": g_settingsCore.getSetting("enableOlFilter"), "enableSpamFilter": g_settingsCore.getSetting("enableSpamFilter"), "receiveFriendshipRequest": g_settingsCore.getSetting("receiveFriendshipRequest"), "receiveInvitesInBattle": g_settingsCore.getSetting("receiveInvitesInBattle"), "invitesFromFriendsOnly": g_settingsCore.getSetting("invitesFromFriendsOnly"), "storeReceiverInBattle": g_settingsCore.getSetting("storeReceiverInBattle"), "disableBattleChat": g_settingsCore.getSetting("disableBattleChat"), "chatContactsListOnly": g_settingsCore.getSetting("chatContactsListOnly"), "receiveClanInvitesNotifications": g_settingsCore.getSetting("receiveClanInvitesNotifications"), "dynamicCamera": g_settingsCore.getSetting("dynamicCamera"), "horStabilizationSnp": g_settingsCore.getSetting("horStabilizationSnp"), "enableVoIP": g_settingsCore.getSetting("enableVoIP"), "enablePostMortemEffect": g_settingsCore.getSetting("enablePostMortemEffect"), "enablePostMortemDelay": g_settingsCore.getSetting("enablePostMortemDelay"), "nationalVoices": g_settingsCore.getSetting("nationalVoices"), "isColorBlind": g_settingsCore.getSetting("isColorBlind"), "graphicsQualityHDSD": g_settingsCore.getSetting("graphicsQualityHDSD"), "useServerAim": g_settingsCore.getSetting("useServerAim"), "showVehiclesCounter": g_settingsCore.getSetting("showVehiclesCounter"), "showMarksOnGun": g_settingsCore.getSetting("showMarksOnGun"), "showBattleEfficiencyRibbons": g_settingsCore.getSetting("showBattleEfficiencyRibbons"), "minimapAlpha": g_settingsCore.getSetting("minimapAlpha"), "showVectorOnMap": g_settingsCore.getSetting("showVectorOnMap"), "showSectorOnMap": g_settingsCore.getSetting("showSectorOnMap"), "showVehModelsOnMap": g_settingsCore.options.getSetting("showVehModelsOnMap").pack(), "vibroIsConnected": vManager.connect(), "vibroGain": vManager.getGain() * 100, "vibroEngine": vEffGroups.get("engine", vEffDefGroup).gain * 100, "vibroAcceleration": vEffGroups.get("acceleration", vEffDefGroup).gain * 100, "vibroShots": vEffGroups.get("shots", vEffDefGroup).gain * 100, "vibroHits": vEffGroups.get("hits", vEffDefGroup).gain * 100, "vibroCollisions": vEffGroups.get("collisions", vEffDefGroup).gain * 100, "vibroDamage": vEffGroups.get("damage", vEffDefGroup).gain * 100, "vibroGUI": vEffGroups.get("gui", vEffDefGroup).gain * 100, "ppShowLevels": g_settingsCore.getSetting("ppShowLevels"), "ppShowTypes": g_settingsCore.getSetting("ppShowTypes"), "replayEnabled": g_settingsCore.options.getSetting("replayEnabled").pack(), "fpsPerfomancer": g_settingsCore.getSetting("fpsPerfomancer"), "dynamicRenderer": g_settingsCore.getSetting("dynamicRenderer"), "colorFilterIntensity": g_settingsCore.getSetting("colorFilterIntensity"), "colorFilterImages": g_settingsCore.getSetting("colorFilterImages"), "fov": g_settingsCore.getSetting("fov"), "dynamicFov": g_settingsCore.getSetting("dynamicFov"), "enableOpticalSnpEffect": g_settingsCore.getSetting("enableOpticalSnpEffect"), "arcade": { "values": g_settingsCore.options.getSetting("arcade").toAccountSettings(), "options": SettingsInterface.CURSOR_VALUES, }, "sniper": { "values": g_settingsCore.options.getSetting("sniper").toAccountSettings(), "options": SettingsInterface.SNIPER_VALUES, }, "markers": { "values": markers, "options": SettingsInterface.MARKER_VALUES, "types": SettingsInterface.MARKER_TYPES, }, } if self.__altVoiceSetting.isOptionEnabled(): altVoices = [] for idx, desc in enumerate(self.__altVoiceSetting.getOptions()): altVoices.append({"data": idx, "label": desc}) config["alternativeVoices"] = {"current": self.__altVoiceSetting.get(), "options": altVoices} for name in ("ctf", "domination", "assault", "nations"): key = self.GAMEPLAY_KEY_FORMAT.format(name) config[key] = g_settingsCore.getSetting(key) settings.append(config) if not LogitechMonitor.isPresentColor(): if self.KEYBOARD_MAPPING_BLOCKS.has_key("logitech_keyboard"): del self.KEYBOARD_MAPPING_BLOCKS["logitech_keyboard"] else: self.KEYBOARD_MAPPING_BLOCKS["logitech_keyboard"] = ("switch_view",) cmdMap = CommandMapping.g_instance defaults = cmdMap.getDefaults() keyboard = [] for group_name in self.KEYBOARD_MAPPING_BLOCKS_ORDER: if group_name in self.KEYBOARD_MAPPING_BLOCKS.keys(): group = {"id": group_name, "commands": []} keyboard.append(group) for key_setting in self.KEYBOARD_MAPPING_BLOCKS[group_name]: command = cmdMap.getCommand(self.KEYBOARD_MAPPING_COMMANDS[group_name][key_setting]) keyCode = cmdMap.get(self.KEYBOARD_MAPPING_COMMANDS[group_name][key_setting]) defaultCode = defaults[command] if defaults.has_key(command) else 0 key = { "id": key_setting, "command": command, "key": getScaleformKey(keyCode), "keyDefault": getScaleformKey(defaultCode), } group["commands"].append(key) settings.append(keyboard) mouse = {} player = BigWorld.player() if hasattr(player.inputHandler, "ctrls"): for key, path in SettingsInterface.MOUSE_KEYS["ingame"].items(): if key == "horInvert": value = g_settingsCore.getSetting("mouseHorzInvert") elif key == "vertInvert": value = g_settingsCore.getSetting("mouseVertInvert") elif key == "backDraftInvert": value = g_settingsCore.getSetting("backDraftInvert") else: value = player.inputHandler.ctrls[path[0]].camera.getUserConfigValue(path[1]) mouse[key] = {"defaultValue": SettingsInterface.MOUSE_KEYS["default"][key], "value": value} else: ds = Settings.g_instance.userPrefs[Settings.KEY_CONTROL_MODE] for key, path in SettingsInterface.MOUSE_KEYS["lobby"].items(): default = SettingsInterface.MOUSE_KEYS["default"][key] value = default if key == "horInvert": value = g_settingsCore.getSetting("mouseHorzInvert") elif key == "vertInvert": value = g_settingsCore.getSetting("mouseVertInvert") elif key == "backDraftInvert": value = g_settingsCore.getSetting("backDraftInvert") elif ds is not None: if path[2] == "float": value = ds[path[0]].readFloat(path[1], default) elif path[2] == "bool": value = ds[path[0]].readBool(path[1], default) else: LOG_DEBUG("Unknown mouse settings type %s %s" % (key, path)) mouse[key] = {"defaultValue": default, "value": value} settings.append(mouse) g_windowsStoredData.stop() return settings
def apply(self, restartApproved, callbackId, settings): restartClient = False import VOIP ppSettings = dict(AccountSettings.getSettings('players_panel')) ppSettings['showTypes'] = settings['ppShowTypes'] if (not self.resolutions.isVideoWindowed or settings['fullScreen']) and (settings['monitor'] != self.resolutions.realMonitorIndex or self.resolutions.monitorChanged): restartClient = True AccountSettings.setSettings('players_panel', ppSettings) g_settingsCore.applySetting('ppShowLevels', settings['ppShowLevels']) g_settingsCore.applySetting('replayEnabled', settings['replayEnabled']) g_settingsCore.applySetting('fpsPerfomancer', settings['fpsPerfomancer']) AccountSettings.setSettings('nationalVoices', settings['nationalVoices']) AccountSettings.setSettings('isColorBlind', settings['isColorBlind']) g_settingsCore.applySetting('useServerAim', settings['useServerAim']) g_settingsCore.applySetting('showVehiclesCounter', settings['showVehiclesCounter']) g_settingsCore.applySetting('minimapAlpha', settings['minimapAlpha']) arcade = g_settingsCore.options.getSetting('arcade').fromAccountSettings(settings['arcade']) sniper = g_settingsCore.options.getSetting('sniper').fromAccountSettings(settings['sniper']) g_settingsCore.applySetting('arcade', arcade) g_settingsCore.applySetting('sniper', sniper) g_settingsCore.applySetting('enemy', settings['markers']['enemy']) g_settingsCore.applySetting('dead', settings['markers']['dead']) g_settingsCore.applySetting('ally', settings['markers']['ally']) g_settingsCore.applySetting('dynamicCamera', settings['dynamicCamera']) g_settingsCore.applySetting('horStabilizationSnp', settings['horStabilizationSnp']) if self.__altVoiceSetting.isOptionEnabled(): altVoices = settings.get('alternativeVoices') if altVoices is not None: self.__altVoiceSetting.apply(altVoices) vManager = VibroManager.g_instance vManager.setGain(settings['vibroGain'] / 100.0) vEffGroups = vManager.getGroupsSettings() for groupName, newValue in [('engine', settings['vibroEngine']), ('acceleration', settings['vibroAcceleration']), ('shots', settings['vibroShots']), ('hits', settings['vibroHits']), ('collisions', settings['vibroCollisions']), ('damage', settings['vibroDamage']), ('gui', settings['vibroGUI'])]: if groupName in vEffGroups: vEffGroups[groupName].gain = newValue / 100.0 vEffGroups[groupName].enabled = newValue > 0 vManager.setGroupsSettings(vEffGroups) self.__voiceChatEnable(settings['enableVoIP']) self.__changeCaptureDevice(settings[Settings.KEY_VOIP_DEVICE]) g_settingsCore.applySetting('enablePostMortemEffect', settings['enablePostMortemEffect']) self.uiHolder.clearCommands() keyboard = settings['controls']['keyboard'] keyboardMapping = {} keysLayout = dict(g_settingsCore.options.getSetting('keyboard').KEYS_LAYOUT) layout = list(itertools.chain(*keysLayout.values())) for i in xrange(len(self.KEYBOARD_MAPPING_BLOCKS)): group_name = keyboard[i]['id'] for j in xrange(len(self.KEYBOARD_MAPPING_BLOCKS[group_name])): key_name = keyboard[i]['commands'][j]['id'] value = keyboard[i]['commands'][j]['key'] cmd = self.KEYBOARD_MAPPING_COMMANDS[group_name][key_name] for item in layout: key, command = item[0], item[1] if command == cmd: keyboardMapping[key] = value break g_settingsCore.applySetting('keyboard', keyboardMapping) self.uiHolder.bindCommands() player = BigWorld.player() mouse = settings['controls']['mouse'] if hasattr(player.inputHandler, 'ctrls'): player.inputHandler.ctrls['arcade'].camera.setUserConfigValue('sensitivity', mouse['arcadeSens']['value']) player.inputHandler.ctrls['sniper'].camera.setUserConfigValue('sensitivity', mouse['sniperSens']['value']) player.inputHandler.ctrls['strategic'].camera.setUserConfigValue('sensitivity', mouse['artSens']['value']) else: ds = Settings.g_instance.userPrefs[Settings.KEY_CONTROL_MODE] if ds: ds['arcadeMode/camera'].writeFloat('sensitivity', mouse['arcadeSens']['value']) ds['sniperMode/camera'].writeFloat('sensitivity', mouse['sniperSens']['value']) ds['strategicMode/camera'].writeFloat('sensitivity', mouse['artSens']['value']) g_settingsCore.applySetting('mouseHorzInvert', bool(mouse['horInvert']['value'])) g_settingsCore.applySetting('mouseVertInvert', bool(mouse['vertInvert']['value'])) g_settingsCore.applySetting('backDraftInvert', bool(mouse['backDraftInvert']['value'])) self.resolutions.applyChanges(settings['fullScreen'], settings['vertSync'], settings['tripleBuffered'], settings['windowSize'] if not settings['fullScreen'] else settings['resolution'], settings['aspectRatio'], settings['multisampling'], settings['customAA'], settings['gamma'], settings['monitor']) if round(SoundGroups.g_instance.getVolume('masterVivox') * 100) != settings['masterVivoxVolume']: VOIP.getVOIPManager().setMasterVolume(settings['masterVivoxVolume']) if round(SoundGroups.g_instance.getVolume('micVivox') * 100) != settings['micVivoxVolume']: VOIP.getVOIPManager().setMicrophoneVolume(settings['micVivoxVolume']) SoundGroups.g_instance.setMasterVolume(float(settings['masterVolume']) / 100) SoundGroups.g_instance.setVolume('music', float(settings['musicVolume']) / 100) SoundGroups.g_instance.setVolume('voice', float(settings['voiceVolume']) / 100) SoundGroups.g_instance.setVolume('vehicles', float(settings['vehiclesVolume']) / 100) SoundGroups.g_instance.setVolume('effects', float(settings['effectsVolume']) / 100) SoundGroups.g_instance.setVolume('gui', float(settings['guiVolume']) / 100) SoundGroups.g_instance.setVolume('ambient', float(settings['ambientVolume']) / 100) SoundGroups.g_instance.setVolume('masterVivox', float(settings['masterVivoxVolume']) / 100) SoundGroups.g_instance.setVolume('micVivox', float(settings['micVivoxVolume']) / 100) SoundGroups.g_instance.setVolume('masterFadeVivox', float(settings['masterFadeVivoxVolume']) / 100) if len(VOIP.getVOIPManager().captureDevices): device = VOIP.getVOIPManager().captureDevices[0] if len(VOIP.getVOIPManager().captureDevices) > settings['captureDevice']: device = VOIP.getVOIPManager().captureDevices[settings['captureDevice']] VOIP.getVOIPManager().setCaptureDevice(device) g_settingsCore.applySetting('showDateMessage', settings['datetimeIdx'] & 1) g_settingsCore.applySetting('showTimeMessage', settings['datetimeIdx'] & 2) g_settingsCore.applySetting('enableOlFilter', settings['enableOlFilter']) g_settingsCore.applySetting('enableSpamFilter', settings['enableSpamFilter']) g_windowsStoredData.start() g_settingsCore.applySetting('enableStoreMws', settings['enableStoreChatMws']) g_settingsCore.applySetting('enableStoreCws', settings['enableStoreChatCws']) g_windowsStoredData.stop() g_settingsCore.applySetting('invitesFromFriendsOnly', settings['invitesFromFriendsOnly']) g_settingsCore.applySetting('storeReceiverInBattle', settings['storeReceiverInBattle']) gameplayKeys = filter(lambda item: item.startswith(self.GAMEPLAY_PREFIX) and bool(settings[item]), settings.keys()) prefixLen = len(self.GAMEPLAY_PREFIX) gameplay_ctx.setMaskByNames(map(lambda key: str(key[prefixLen:]), gameplayKeys)) qualitySettings = settings['quality'] applyPresets = self.graphicsPresets.checkApplyGraphicsPreset(int(settings['graphicsQuality']), qualitySettings) if applyPresets: self.graphicsPresets.applyGraphicsPresets(int(settings['graphicsQuality']), qualitySettings) if applyPresets == 'restartNeeded': BigWorld.commitPendingGraphicsSettings() restartClient = True elif applyPresets == 'hasPendingSettings': BigWorld.commitPendingGraphicsSettings() g_settingsCore.applyStorages() g_postProcessing.refresh() if restartClient: BigWorld.savePreferences() if restartApproved: from BattleReplay import g_replayCtrl if g_replayCtrl.isPlaying and g_replayCtrl.playbackSpeed == 0: g_replayCtrl.setPlaybackSpeedIdx(5) BigWorld.callback(0.3, BigWorld.restartGame) else: BigWorld.callback(0.0, partial(BigWorld.changeVideoMode, -1, BigWorld.isVideoWindowed())) return
def apply(self, restartApproved, callbackId, settings): restartClient = False interfaceScaled = False g_settingsCore.isDeviseRecreated = False isSoundChanged = settings[ SOUND.MASTER_TOGGLE] is not g_settingsCore.getSetting( SOUND.MASTER_TOGGLE) or settings[ SOUND.SOUND_QUALITY] is not g_settingsCore.getSetting( SOUND.SOUND_QUALITY) import VOIP if (not self.resolutions.isVideoWindowed or settings['fullScreen'] ) and (settings['monitor'] != self.resolutions.realMonitorIndex or self.resolutions.monitorChanged): restartClient = True if g_settingsCore.getSetting( 'interfaceScale') != settings['interfaceScale']: interfaceScaled = True g_settingsCore.applySetting('ppShowTypes', settings['ppShowTypes']) g_settingsCore.applySetting('ppShowLevels', settings['ppShowLevels']) g_settingsCore.applySetting('replayEnabled', settings['replayEnabled']) g_settingsCore.applySetting('fpsPerfomancer', settings['fpsPerfomancer']) g_settingsCore.applySetting('colorFilterIntensity', settings['colorFilterIntensity']) g_settingsCore.applySetting('fov', settings['fov']) g_settingsCore.applySetting('dynamicFov', settings['dynamicFov']) g_settingsCore.applySetting('enableOpticalSnpEffect', settings['enableOpticalSnpEffect']) g_settingsCore.applySetting('isColorBlind', settings['isColorBlind']) g_settingsCore.applySetting('useServerAim', settings['useServerAim']) g_settingsCore.applySetting('showVehiclesCounter', settings['showVehiclesCounter']) g_settingsCore.applySetting('showMarksOnGun', settings['showMarksOnGun']) g_settingsCore.applySetting('simplifiedTTC', settings['simplifiedTTC']) g_settingsCore.applySetting('minimapAlpha', settings['minimapAlpha']) g_settingsCore.applySetting('showVectorOnMap', settings['showVectorOnMap']) g_settingsCore.applySetting('showSectorOnMap', settings['showSectorOnMap']) g_settingsCore.applySetting('showVehModelsOnMap', settings['showVehModelsOnMap']) g_settingsCore.applySetting('minimapViewRange', settings['minimapViewRange']) g_settingsCore.applySetting('minimapMaxViewRange', settings['minimapMaxViewRange']) g_settingsCore.applySetting('minimapDrawRange', settings['minimapDrawRange']) g_settingsCore.applySetting('battleLoadingInfo', settings['battleLoadingInfo']) arcade = g_settingsCore.options.getSetting( 'arcade').fromAccountSettings(settings['arcade']) sniper = g_settingsCore.options.getSetting( 'sniper').fromAccountSettings(settings['sniper']) g_settingsCore.applySetting('arcade', arcade) g_settingsCore.applySetting('sniper', sniper) g_settingsCore.applySetting('enemy', settings['markers']['enemy']) g_settingsCore.applySetting('dead', settings['markers']['dead']) g_settingsCore.applySetting('ally', settings['markers']['ally']) g_settingsCore.applySetting('interfaceScale', settings['interfaceScale']) if 'showBattleEfficiencyRibbons' in settings: g_settingsCore.applySetting( 'showBattleEfficiencyRibbons', settings['showBattleEfficiencyRibbons']) g_settingsCore.applySetting('dynamicCamera', settings['dynamicCamera']) g_settingsCore.applySetting('horStabilizationSnp', settings['horStabilizationSnp']) g_settingsCore.applySetting('increasedZoom', settings['increasedZoom']) g_settingsCore.applySetting('sniperModeByShift', settings['sniperModeByShift']) if self.__altVoiceSetting.isOptionEnabled(): altVoices = settings.get('alternativeVoices') if altVoices is not None: self.__altVoiceSetting.apply(altVoices) vManager = VibroManager.g_instance vManager.setGain(settings['vibroGain'] / 100.0) vEffGroups = vManager.getGroupsSettings() for groupName, newValue in [ ('engine', settings['vibroEngine']), ('acceleration', settings['vibroAcceleration']), ('shots', settings['vibroShots']), ('hits', settings['vibroHits']), ('collisions', settings['vibroCollisions']), ('damage', settings['vibroDamage']), ('gui', settings['vibroGUI']) ]: if groupName in vEffGroups: vEffGroups[groupName].gain = newValue / 100.0 vEffGroups[groupName].enabled = newValue > 0 vManager.setGroupsSettings(vEffGroups) self.__voiceChatEnable(settings['enableVoIP']) g_settingsCore.applySetting(SOUND.CAPTURE_DEVICES, settings[Settings.KEY_VOIP_DEVICE]) g_settingsCore.applySetting('enablePostMortemEffect', settings['enablePostMortemEffect']) g_settingsCore.applySetting('enablePostMortemDelay', settings['enablePostMortemDelay']) self.uiHolder.clearCommands() keyboard = settings['controls']['keyboard'] keyboardMapping = {} keysLayout = dict( g_settingsCore.options.getSetting('keyboard').KEYS_LAYOUT) layout = list(itertools.chain(*keysLayout.values())) for i in xrange(len(self.KEYBOARD_MAPPING_BLOCKS)): group_name = keyboard[i]['id'] for j in xrange(len(self.KEYBOARD_MAPPING_BLOCKS[group_name])): key_name = keyboard[i]['commands'][j]['id'] value = keyboard[i]['commands'][j]['key'] cmd = self.KEYBOARD_MAPPING_COMMANDS[group_name][key_name] for item in layout: key, command = item[0], item[1] if command == cmd: keyboardMapping[key] = value break g_settingsCore.applySetting('keyboard', keyboardMapping) self.uiHolder.bindCommands() player = BigWorld.player() mouse = settings['controls']['mouse'] if hasattr(player.inputHandler, 'ctrls'): player.inputHandler.ctrls['arcade'].camera.setUserConfigValue( 'sensitivity', mouse['arcadeSens']['value']) player.inputHandler.ctrls['sniper'].camera.setUserConfigValue( 'sensitivity', mouse['sniperSens']['value']) player.inputHandler.ctrls['strategic'].camera.setUserConfigValue( 'sensitivity', mouse['artSens']['value']) else: ds = Settings.g_instance.userPrefs[Settings.KEY_CONTROL_MODE] if ds: ds['arcadeMode/camera'].writeFloat( 'sensitivity', mouse['arcadeSens']['value']) ds['sniperMode/camera'].writeFloat( 'sensitivity', mouse['sniperSens']['value']) ds['strategicMode/camera'].writeFloat( 'sensitivity', mouse['artSens']['value']) g_settingsCore.applySetting('mouseHorzInvert', bool(mouse['horInvert']['value'])) g_settingsCore.applySetting('mouseVertInvert', bool(mouse['vertInvert']['value'])) g_settingsCore.applySetting('backDraftInvert', bool(mouse['backDraftInvert']['value'])) g_settingsCore.applySetting('monitor', settings['monitor']) isFullScreen = bool(settings['fullScreen']) if isFullScreen: g_settingsCore.applySetting('refreshRate', settings['refreshRate']) g_settingsCore.applySetting('resolution', settings['resolution']) g_settingsCore.applySetting('aspectRatio', settings['aspectRatio']) g_settingsCore.applySetting('gamma', settings['gamma']) else: g_settingsCore.applySetting('windowSize', settings['windowSize']) g_settingsCore.applySetting('fullScreen', isFullScreen) g_settingsCore.applySetting('multisampling', settings['multisampling']) g_settingsCore.applySetting('customAA', settings['customAA']) g_settingsCore.applySetting('vertSync', settings['vertSync']) g_settingsCore.applySetting('tripleBuffered', settings['tripleBuffered']) if round(SoundGroups.g_instance.getVolume('masterVivox') * 100) != settings['masterVivoxVolume']: VOIP.getVOIPManager().setMasterVolume( settings['masterVivoxVolume']) if round(SoundGroups.g_instance.getVolume('micVivox') * 100) != settings['micVivoxVolume']: VOIP.getVOIPManager().setMicrophoneVolume( settings['micVivoxVolume']) for s in (SOUND.MASTER_TOGGLE, SOUND.SOUND_QUALITY): g_settingsCore.applySetting(s, settings[s]) SoundGroups.g_instance.setMasterVolume( float(settings['masterVolume']) / 100) SoundGroups.g_instance.setVolume('music', float(settings['musicVolume']) / 100) SoundGroups.g_instance.setVolume( 'vehicles', float(settings['vehiclesVolume']) / 100) SoundGroups.g_instance.setVolume( 'effects', float(settings['effectsVolume']) / 100) SoundGroups.g_instance.setVolume('gui', float(settings['guiVolume']) / 100) SoundGroups.g_instance.setVolume( 'ambient', float(settings['ambientVolume']) / 100) SoundGroups.g_instance.setVolume( 'masterVivox', float(settings['masterVivoxVolume']) / 100) SoundGroups.g_instance.setVolume( 'micVivox', float(settings['micVivoxVolume']) / 100) SoundGroups.g_instance.setVolume( 'masterFadeVivox', float(settings['masterFadeVivoxVolume']) / 100) g_settingsCore.applySetting('dynamicRange', settings['dynamicRange']) g_settingsCore.applySetting('soundDevice', settings['soundDevice']) g_settingsCore.applySetting('showDateMessage', settings['datetimeIdx'] & 1) g_settingsCore.applySetting('showTimeMessage', settings['datetimeIdx'] & 2) g_settingsCore.applySetting('enableOlFilter', settings['enableOlFilter']) g_settingsCore.applySetting('enableSpamFilter', settings['enableSpamFilter']) g_windowsStoredData.start() g_settingsCore.applySetting('receiveFriendshipRequest', settings['receiveFriendshipRequest']) g_settingsCore.applySetting('receiveInvitesInBattle', settings.get('receiveInvitesInBattle')) g_settingsCore.applySetting( 'receiveClanInvitesNotifications', settings.get('receiveClanInvitesNotifications')) g_windowsStoredData.stop() g_settingsCore.applySetting('invitesFromFriendsOnly', settings['invitesFromFriendsOnly']) g_settingsCore.applySetting('disableBattleChat', settings['disableBattleChat']) g_settingsCore.applySetting('chatContactsListOnly', settings['chatContactsListOnly']) gameplayKeys = filter( lambda item: item.startswith(self.GAMEPLAY_PREFIX), settings.keys()) for key in gameplayKeys: g_settingsCore.applySetting(key, settings[key]) qualitySettings = settings['quality'] applyMethod = g_settingsCore.options.getApplyMethod(qualitySettings) for key in GraphicsPresets.GRAPHICS_QUALITY_SETTINGS: value = qualitySettings.get(key) if value is not None: g_settingsCore.applySetting(key, value) g_settingsCore.applySetting('dynamicRenderer', settings['dynamicRenderer']) if applyMethod == APPLY_METHOD.RESTART or isSoundChanged: BigWorld.commitPendingGraphicsSettings() restartClient = True elif applyMethod == APPLY_METHOD.DELAYED: BigWorld.commitPendingGraphicsSettings() confirmators = g_settingsCore.applyStorages(restartClient) for confirmation, revert in confirmators: if confirmation is not None: if confirmation == 'graphicsChangeConfirmation': def callback(isConfirmed): if not isConfirmed: g_settingsCore.isChangesConfirmed = False revert() self.graphicsChangeConfirmationRevert = revert self.call('SettingsDialog.ApplySettings', [confirmation]) g_postProcessing.refresh() if restartClient: BigWorld.savePreferences() if restartApproved: from BattleReplay import g_replayCtrl if g_replayCtrl.isPlaying and g_replayCtrl.playbackSpeed == 0: g_replayCtrl.setPlaybackSpeedIdx(5) BigWorld.callback(0.3, self.__restartGame) elif g_settingsCore.isDeviseRecreated: g_settingsCore.isDeviseRecreated = False else: BigWorld.callback( 0.0, partial(BigWorld.changeVideoMode, -1, BigWorld.isVideoWindowed())) if interfaceScaled: self.__settingsUI.buildGraphicsData(self.__getVideoSettings()) return
def __getSettings(self): settings = [self.graphicsPresets.getGraphicsPresetsData()] import VOIP rh = VOIP.getVOIPManager() g_windowsStoredData.start() vManager = VibroManager.g_instance vEffGroups = vManager.getGroupsSettings() vEffDefGroup = VibroManager.VibroManager.GroupSettings() vEffDefGroup.enabled = False vEffDefGroup.gain = 0 markers = { 'enemy': g_settingsCore.getSetting('enemy'), 'dead': g_settingsCore.getSetting('dead'), 'ally': g_settingsCore.getSetting('ally') } datetimeIdx = g_settingsCore.getSetting( 'showDateMessage') << 0 | g_settingsCore.getSetting( 'showTimeMessage') << 1 zoomOption = g_settingsCore.options.getSetting('increasedZoom') config = { 'locale': getClientOverride(), 'aspectRatio': { 'current': self.resolutions.aspectRatioIndex, 'options': self.resolutions.aspectRatiosList }, 'vertSync': self.resolutions.isVideoVSync, 'tripleBuffered': self.resolutions.isTripleBuffered, 'multisampling': { 'current': self.resolutions.multisamplingTypeIndex, 'options': self.resolutions.multisamplingTypesList }, 'customAA': { 'current': self.resolutions.customAAModeIndex, 'options': self.resolutions.customAAModesList }, 'gamma': self.resolutions.gamma, 'masterVolumeToggle': g_settingsCore.getSetting(SOUND.MASTER_TOGGLE), 'soundQuality': g_settingsCore.getSetting(SOUND.SOUND_QUALITY), 'soundQualityVisible': g_settingsCore.getSetting(SOUND.SOUND_QUALITY_VISIBLE), 'masterVolume': round(SoundGroups.g_instance.getMasterVolume() * 100), 'musicVolume': round(SoundGroups.g_instance.getVolume('music') * 100), 'vehiclesVolume': round(SoundGroups.g_instance.getVolume('vehicles') * 100), 'effectsVolume': round(SoundGroups.g_instance.getVolume('effects') * 100), 'guiVolume': round(SoundGroups.g_instance.getVolume('gui') * 100), 'ambientVolume': round(SoundGroups.g_instance.getVolume('ambient') * 100), 'masterVivoxVolume': round(SoundGroups.g_instance.getVolume('masterVivox') * 100), 'micVivoxVolume': round(SoundGroups.g_instance.getVolume('micVivox') * 100), 'masterFadeVivoxVolume': round(SoundGroups.g_instance.getVolume('masterFadeVivox') * 100), 'dynamicRange': g_settingsCore.options.getSetting('dynamicRange').pack(), 'soundDevice': g_settingsCore.options.getSetting('soundDevice').pack(), 'captureDevice': g_settingsCore.options.getSetting(SOUND.CAPTURE_DEVICES).pack(), 'voiceChatNotSupported': not g_settingsCore.getSetting(SOUND.VOIP_SUPPORTED), 'datetimeIdx': datetimeIdx, 'enableOlFilter': g_settingsCore.getSetting('enableOlFilter'), 'enableSpamFilter': g_settingsCore.getSetting('enableSpamFilter'), 'receiveFriendshipRequest': g_settingsCore.getSetting('receiveFriendshipRequest'), 'receiveInvitesInBattle': g_settingsCore.getSetting('receiveInvitesInBattle'), 'invitesFromFriendsOnly': g_settingsCore.getSetting('invitesFromFriendsOnly'), 'disableBattleChat': g_settingsCore.getSetting('disableBattleChat'), 'chatContactsListOnly': g_settingsCore.getSetting('chatContactsListOnly'), 'receiveClanInvitesNotifications': g_settingsCore.getSetting('receiveClanInvitesNotifications'), 'dynamicCamera': g_settingsCore.getSetting('dynamicCamera'), 'horStabilizationSnp': g_settingsCore.getSetting('horStabilizationSnp'), 'increasedZoom': zoomOption.get(), 'sniperModeByShift': g_settingsCore.getSetting('sniperModeByShift'), 'enableVoIP': g_settingsCore.getSetting('enableVoIP'), 'enablePostMortemEffect': g_settingsCore.getSetting('enablePostMortemEffect'), 'enablePostMortemDelay': g_settingsCore.getSetting('enablePostMortemDelay'), 'isColorBlind': g_settingsCore.getSetting('isColorBlind'), 'graphicsQualityHDSD': g_settingsCore.getSetting('graphicsQualityHDSD'), 'useServerAim': g_settingsCore.getSetting('useServerAim'), 'showVehiclesCounter': g_settingsCore.getSetting('showVehiclesCounter'), 'showMarksOnGun': g_settingsCore.getSetting('showMarksOnGun'), 'simplifiedTTC': g_settingsCore.getSetting('simplifiedTTC'), 'showBattleEfficiencyRibbons': g_settingsCore.getSetting('showBattleEfficiencyRibbons'), 'minimapAlpha': g_settingsCore.getSetting('minimapAlpha'), 'showVectorOnMap': g_settingsCore.getSetting('showVectorOnMap'), 'showSectorOnMap': g_settingsCore.getSetting('showSectorOnMap'), 'showVehModelsOnMap': g_settingsCore.options.getSetting('showVehModelsOnMap').pack(), 'minimapViewRange': g_settingsCore.getSetting('minimapViewRange'), 'minimapMaxViewRange': g_settingsCore.getSetting('minimapMaxViewRange'), 'minimapDrawRange': g_settingsCore.getSetting('minimapDrawRange'), 'battleLoadingInfo': g_settingsCore.options.getSetting('battleLoadingInfo').pack(), 'vibroIsConnected': vManager.connect(), 'vibroGain': vManager.getGain() * 100, 'vibroEngine': vEffGroups.get('engine', vEffDefGroup).gain * 100, 'vibroAcceleration': vEffGroups.get('acceleration', vEffDefGroup).gain * 100, 'vibroShots': vEffGroups.get('shots', vEffDefGroup).gain * 100, 'vibroHits': vEffGroups.get('hits', vEffDefGroup).gain * 100, 'vibroCollisions': vEffGroups.get('collisions', vEffDefGroup).gain * 100, 'vibroDamage': vEffGroups.get('damage', vEffDefGroup).gain * 100, 'vibroGUI': vEffGroups.get('gui', vEffDefGroup).gain * 100, 'ppShowLevels': g_settingsCore.getSetting('ppShowLevels'), 'ppShowTypes': g_settingsCore.getSetting('ppShowTypes'), 'replayEnabled': g_settingsCore.options.getSetting('replayEnabled').pack(), 'fpsPerfomancer': g_settingsCore.getSetting('fpsPerfomancer'), 'dynamicRenderer': g_settingsCore.getSetting('dynamicRenderer'), 'colorFilterIntensity': g_settingsCore.getSetting('colorFilterIntensity'), 'colorFilterImages': g_settingsCore.getSetting('colorFilterImages'), 'fov': g_settingsCore.getSetting('fov'), 'dynamicFov': g_settingsCore.getSetting('dynamicFov'), 'enableOpticalSnpEffect': g_settingsCore.getSetting('enableOpticalSnpEffect'), 'arcade': { 'values': g_settingsCore.options.getSetting( 'arcade').toAccountSettings(), 'options': SettingsInterface.CURSOR_VALUES }, 'sniper': { 'values': g_settingsCore.options.getSetting( 'sniper').toAccountSettings(), 'options': SettingsInterface.SNIPER_VALUES }, 'markers': { 'values': markers, 'options': SettingsInterface.MARKER_VALUES, 'types': SettingsInterface.MARKER_TYPES } } if self.__altVoiceSetting.isOptionEnabled(): altVoices = [] for idx, desc in enumerate(self.__altVoiceSetting.getOptions()): altVoices.append({'data': idx, 'label': desc}) config['alternativeVoices'] = { 'current': self.__altVoiceSetting.get(), 'options': altVoices } for name in ('ctf', 'domination', 'assault', 'nations'): key = self.GAMEPLAY_KEY_FORMAT.format(name) config[key] = g_settingsCore.getSetting(key) settings.append(config) if KeyboardSettings.isGroupHidden('logitech_keyboard'): if self.KEYBOARD_MAPPING_BLOCKS.has_key('logitech_keyboard'): del self.KEYBOARD_MAPPING_BLOCKS['logitech_keyboard'] else: self.KEYBOARD_MAPPING_BLOCKS['logitech_keyboard'] = ( 'switch_view', ) cmdMap = CommandMapping.g_instance defaults = cmdMap.getDefaults() keyboard = [] for group_name in self.KEYBOARD_MAPPING_BLOCKS_ORDER: if group_name in self.KEYBOARD_MAPPING_BLOCKS.keys(): group = {'id': group_name, 'commands': []} keyboard.append(group) for key_setting in self.KEYBOARD_MAPPING_BLOCKS[group_name]: command = cmdMap.getCommand( self.KEYBOARD_MAPPING_COMMANDS[group_name] [key_setting]) keyCode = cmdMap.get( self.KEYBOARD_MAPPING_COMMANDS[group_name] [key_setting]) defaultCode = defaults[command] if defaults.has_key( command) else 0 key = { 'id': key_setting, 'command': command, 'key': getScaleformKey(keyCode), 'keyDefault': getScaleformKey(defaultCode) } group['commands'].append(key) settings.append(keyboard) mouse = {} player = BigWorld.player() if hasattr(player.inputHandler, 'ctrls'): for key, path in SettingsInterface.MOUSE_KEYS['ingame'].items(): if key == 'horInvert': value = g_settingsCore.getSetting('mouseHorzInvert') elif key == 'vertInvert': value = g_settingsCore.getSetting('mouseVertInvert') elif key == 'backDraftInvert': value = g_settingsCore.getSetting('backDraftInvert') else: value = player.inputHandler.ctrls[ path[0]].camera.getUserConfigValue(path[1]) mouse[key] = { 'defaultValue': SettingsInterface.MOUSE_KEYS['default'][key], 'value': value } else: ds = Settings.g_instance.userPrefs[Settings.KEY_CONTROL_MODE] for key, path in SettingsInterface.MOUSE_KEYS['lobby'].items(): default = SettingsInterface.MOUSE_KEYS['default'][key] value = default if key == 'horInvert': value = g_settingsCore.getSetting('mouseHorzInvert') elif key == 'vertInvert': value = g_settingsCore.getSetting('mouseVertInvert') elif key == 'backDraftInvert': value = g_settingsCore.getSetting('backDraftInvert') elif ds is not None: if path[2] == 'float': value = ds[path[0]].readFloat(path[1], default) elif path[2] == 'bool': value = ds[path[0]].readBool(path[1], default) else: LOG_DEBUG('Unknown mouse settings type %s %s' % (key, path)) mouse[key] = {'defaultValue': default, 'value': value} settings.append(mouse) extraData = { 'increasedZoom': zoomOption.getExtraData(), 'keyboardImportantBinds': g_settingsCore.getSetting('keyboardImportantBinds') } settings.append(extraData) g_windowsStoredData.stop() return settings
def apply(self, restartApproved, callbackId, settings): restartClient = False import VOIP ppSettings = dict(AccountSettings.getSettings('players_panel')) ppSettings['showTypes'] = settings['ppShowTypes'] if (not self.resolutions.isVideoWindowed or settings['fullScreen'] ) and (settings['monitor'] != self.resolutions.realMonitorIndex or self.resolutions.monitorChanged): restartClient = True AccountSettings.setSettings('players_panel', ppSettings) g_settingsCore.applySetting('ppShowLevels', settings['ppShowLevels']) g_settingsCore.applySetting('replayEnabled', settings['replayEnabled']) g_settingsCore.applySetting('fpsPerfomancer', settings['fpsPerfomancer']) AccountSettings.setSettings('nationalVoices', settings['nationalVoices']) AccountSettings.setSettings('isColorBlind', settings['isColorBlind']) g_settingsCore.applySetting('useServerAim', settings['useServerAim']) g_settingsCore.applySetting('showVehiclesCounter', settings['showVehiclesCounter']) g_settingsCore.applySetting('minimapAlpha', settings['minimapAlpha']) arcade = g_settingsCore.options.getSetting( 'arcade').fromAccountSettings(settings['arcade']) sniper = g_settingsCore.options.getSetting( 'sniper').fromAccountSettings(settings['sniper']) g_settingsCore.applySetting('arcade', arcade) g_settingsCore.applySetting('sniper', sniper) g_settingsCore.applySetting('enemy', settings['markers']['enemy']) g_settingsCore.applySetting('dead', settings['markers']['dead']) g_settingsCore.applySetting('ally', settings['markers']['ally']) g_settingsCore.applySetting('dynamicCamera', settings['dynamicCamera']) g_settingsCore.applySetting('horStabilizationSnp', settings['horStabilizationSnp']) if self.__altVoiceSetting.isOptionEnabled(): altVoices = settings.get('alternativeVoices') if altVoices is not None: self.__altVoiceSetting.apply(altVoices) vManager = VibroManager.g_instance vManager.setGain(settings['vibroGain'] / 100.0) vEffGroups = vManager.getGroupsSettings() for groupName, newValue in [ ('engine', settings['vibroEngine']), ('acceleration', settings['vibroAcceleration']), ('shots', settings['vibroShots']), ('hits', settings['vibroHits']), ('collisions', settings['vibroCollisions']), ('damage', settings['vibroDamage']), ('gui', settings['vibroGUI']) ]: if groupName in vEffGroups: vEffGroups[groupName].gain = newValue / 100.0 vEffGroups[groupName].enabled = newValue > 0 vManager.setGroupsSettings(vEffGroups) self.__voiceChatEnable(settings['enableVoIP']) self.__changeCaptureDevice(settings[Settings.KEY_VOIP_DEVICE]) g_settingsCore.applySetting('enablePostMortemEffect', settings['enablePostMortemEffect']) self.uiHolder.clearCommands() keyboard = settings['controls']['keyboard'] keyboardMapping = {} keysLayout = dict( g_settingsCore.options.getSetting('keyboard').KEYS_LAYOUT) layout = list(itertools.chain(*keysLayout.values())) for i in xrange(len(self.KEYBOARD_MAPPING_BLOCKS)): group_name = keyboard[i]['id'] for j in xrange(len(self.KEYBOARD_MAPPING_BLOCKS[group_name])): key_name = keyboard[i]['commands'][j]['id'] value = keyboard[i]['commands'][j]['key'] cmd = self.KEYBOARD_MAPPING_COMMANDS[group_name][key_name] for item in layout: key, command = item[0], item[1] if command == cmd: keyboardMapping[key] = value break g_settingsCore.applySetting('keyboard', keyboardMapping) self.uiHolder.bindCommands() player = BigWorld.player() mouse = settings['controls']['mouse'] if hasattr(player.inputHandler, 'ctrls'): player.inputHandler.ctrls['arcade'].camera.setUserConfigValue( 'sensitivity', mouse['arcadeSens']['value']) player.inputHandler.ctrls['sniper'].camera.setUserConfigValue( 'sensitivity', mouse['sniperSens']['value']) player.inputHandler.ctrls['strategic'].camera.setUserConfigValue( 'sensitivity', mouse['artSens']['value']) else: ds = Settings.g_instance.userPrefs[Settings.KEY_CONTROL_MODE] if ds: ds['arcadeMode/camera'].writeFloat( 'sensitivity', mouse['arcadeSens']['value']) ds['sniperMode/camera'].writeFloat( 'sensitivity', mouse['sniperSens']['value']) ds['strategicMode/camera'].writeFloat( 'sensitivity', mouse['artSens']['value']) g_settingsCore.applySetting('mouseHorzInvert', bool(mouse['horInvert']['value'])) g_settingsCore.applySetting('mouseVertInvert', bool(mouse['vertInvert']['value'])) g_settingsCore.applySetting('backDraftInvert', bool(mouse['backDraftInvert']['value'])) self.resolutions.applyChanges( settings['fullScreen'], settings['vertSync'], settings['tripleBuffered'], settings['windowSize'] if not settings['fullScreen'] else settings['resolution'], settings['aspectRatio'], settings['multisampling'], settings['customAA'], settings['gamma'], settings['monitor']) if round(SoundGroups.g_instance.getVolume('masterVivox') * 100) != settings['masterVivoxVolume']: VOIP.getVOIPManager().setMasterVolume( settings['masterVivoxVolume']) if round(SoundGroups.g_instance.getVolume('micVivox') * 100) != settings['micVivoxVolume']: VOIP.getVOIPManager().setMicrophoneVolume( settings['micVivoxVolume']) SoundGroups.g_instance.setMasterVolume( float(settings['masterVolume']) / 100) SoundGroups.g_instance.setVolume('music', float(settings['musicVolume']) / 100) SoundGroups.g_instance.setVolume('voice', float(settings['voiceVolume']) / 100) SoundGroups.g_instance.setVolume( 'vehicles', float(settings['vehiclesVolume']) / 100) SoundGroups.g_instance.setVolume( 'effects', float(settings['effectsVolume']) / 100) SoundGroups.g_instance.setVolume('gui', float(settings['guiVolume']) / 100) SoundGroups.g_instance.setVolume( 'ambient', float(settings['ambientVolume']) / 100) SoundGroups.g_instance.setVolume( 'masterVivox', float(settings['masterVivoxVolume']) / 100) SoundGroups.g_instance.setVolume( 'micVivox', float(settings['micVivoxVolume']) / 100) SoundGroups.g_instance.setVolume( 'masterFadeVivox', float(settings['masterFadeVivoxVolume']) / 100) if len(VOIP.getVOIPManager().captureDevices): device = VOIP.getVOIPManager().captureDevices[0] if len(VOIP.getVOIPManager().captureDevices ) > settings['captureDevice']: device = VOIP.getVOIPManager().captureDevices[ settings['captureDevice']] VOIP.getVOIPManager().setCaptureDevice(device) g_settingsCore.applySetting('showDateMessage', settings['datetimeIdx'] & 1) g_settingsCore.applySetting('showTimeMessage', settings['datetimeIdx'] & 2) g_settingsCore.applySetting('enableOlFilter', settings['enableOlFilter']) g_settingsCore.applySetting('enableSpamFilter', settings['enableSpamFilter']) g_windowsStoredData.start() g_settingsCore.applySetting('enableStoreMws', settings['enableStoreChatMws']) g_settingsCore.applySetting('enableStoreCws', settings['enableStoreChatCws']) g_windowsStoredData.stop() g_settingsCore.applySetting('invitesFromFriendsOnly', settings['invitesFromFriendsOnly']) g_settingsCore.applySetting('storeReceiverInBattle', settings['storeReceiverInBattle']) gameplayKeys = filter( lambda item: item.startswith(self.GAMEPLAY_PREFIX) and bool( settings[item]), settings.keys()) prefixLen = len(self.GAMEPLAY_PREFIX) gameplay_ctx.setMaskByNames( map(lambda key: str(key[prefixLen:]), gameplayKeys)) qualitySettings = settings['quality'] applyPresets = self.graphicsPresets.checkApplyGraphicsPreset( int(settings['graphicsQuality']), qualitySettings) if applyPresets: self.graphicsPresets.applyGraphicsPresets( int(settings['graphicsQuality']), qualitySettings) if applyPresets == 'restartNeeded': BigWorld.commitPendingGraphicsSettings() restartClient = True elif applyPresets == 'hasPendingSettings': BigWorld.commitPendingGraphicsSettings() g_settingsCore.applyStorages() g_postProcessing.refresh() if restartClient: BigWorld.savePreferences() if restartApproved: from BattleReplay import g_replayCtrl if g_replayCtrl.isPlaying and g_replayCtrl.playbackSpeed == 0: g_replayCtrl.setPlaybackSpeedIdx(5) BigWorld.callback(0.3, BigWorld.restartGame) else: BigWorld.callback( 0.0, partial(BigWorld.changeVideoMode, -1, BigWorld.isVideoWindowed())) return
def __getSettings(self): settings = [self.graphicsPresets.getGraphicsPresetsData()] import VOIP rh = VOIP.getVOIPManager() g_windowsStoredData.start() vManager = VibroManager.g_instance vEffGroups = vManager.getGroupsSettings() vEffDefGroup = VibroManager.VibroManager.GroupSettings() vEffDefGroup.enabled = False vEffDefGroup.gain = 0 markers = { 'enemy': g_settingsCore.getSetting('enemy'), 'dead': g_settingsCore.getSetting('dead'), 'ally': g_settingsCore.getSetting('ally') } config = { 'locale': getClientOverride(), 'aspectRatio': { 'current': self.resolutions.aspectRatioIndex, 'options': self.resolutions.aspectRatiosList }, 'vertSync': self.resolutions.isVideoVSync, 'tripleBuffered': self.resolutions.isTripleBuffered, 'multisampling': { 'current': self.resolutions.multisamplingTypeIndex, 'options': self.resolutions.multisamplingTypesList }, 'customAA': { 'current': self.resolutions.customAAModeIndex, 'options': self.resolutions.customAAModesList }, 'gamma': self.resolutions.gamma, 'masterVolume': round(SoundGroups.g_instance.getMasterVolume() * 100), 'musicVolume': round(SoundGroups.g_instance.getVolume('music') * 100), 'voiceVolume': round(SoundGroups.g_instance.getVolume('voice') * 100), 'vehiclesVolume': round(SoundGroups.g_instance.getVolume('vehicles') * 100), 'effectsVolume': round(SoundGroups.g_instance.getVolume('effects') * 100), 'guiVolume': round(SoundGroups.g_instance.getVolume('gui') * 100), 'ambientVolume': round(SoundGroups.g_instance.getVolume('ambient') * 100), 'masterVivoxVolume': round(SoundGroups.g_instance.getVolume('masterVivox') * 100), 'micVivoxVolume': round(SoundGroups.g_instance.getVolume('micVivox') * 100), 'masterFadeVivoxVolume': round(SoundGroups.g_instance.getVolume('masterFadeVivox') * 100), 'captureDevice': self.__getCaptureDeviceSettings(), 'voiceChatNotSupported': rh.vivoxDomain == '' or not VoiceChatInterface.g_instance.ready, 'datetimeIdx': g_settingsCore.serverSettings.getGameSetting('datetimeIdx', 2), 'enableOlFilter': g_settingsCore.getSetting('enableOlFilter'), 'enableSpamFilter': g_settingsCore.getSetting('enableSpamFilter'), 'enableStoreChatMws': g_settingsCore.getSetting('enableStoreMws'), 'enableStoreChatCws': g_settingsCore.getSetting('enableStoreCws'), 'invitesFromFriendsOnly': g_settingsCore.getSetting('invitesFromFriendsOnly'), 'storeReceiverInBattle': g_settingsCore.getSetting('storeReceiverInBattle'), 'dynamicCamera': g_settingsCore.getSetting('dynamicCamera'), 'horStabilizationSnp': g_settingsCore.getSetting('horStabilizationSnp'), 'enableVoIP': VOIP.getVOIPManager().channelsMgr.enabled, 'enablePostMortemEffect': g_settingsCore.getSetting('enablePostMortemEffect'), 'nationalVoices': AccountSettings.getSettings('nationalVoices'), 'isColorBlind': AccountSettings.getSettings('isColorBlind'), 'useServerAim': g_settingsCore.getSetting('useServerAim'), 'showVehiclesCounter': g_settingsCore.getSetting('showVehiclesCounter'), 'minimapAlpha': g_settingsCore.getSetting('minimapAlpha'), 'vibroIsConnected': vManager.connect(), 'vibroGain': vManager.getGain() * 100, 'vibroEngine': vEffGroups.get('engine', vEffDefGroup).gain * 100, 'vibroAcceleration': vEffGroups.get('acceleration', vEffDefGroup).gain * 100, 'vibroShots': vEffGroups.get('shots', vEffDefGroup).gain * 100, 'vibroHits': vEffGroups.get('hits', vEffDefGroup).gain * 100, 'vibroCollisions': vEffGroups.get('collisions', vEffDefGroup).gain * 100, 'vibroDamage': vEffGroups.get('damage', vEffDefGroup).gain * 100, 'vibroGUI': vEffGroups.get('gui', vEffDefGroup).gain * 100, 'ppShowLevels': g_settingsCore.getSetting('ppShowLevels'), 'ppShowTypes': AccountSettings.getSettings('players_panel')['showTypes'], 'replayEnabled': g_settingsCore.getSetting('replayEnabled'), 'fpsPerfomancer': g_settingsCore.getSetting('fpsPerfomancer'), 'arcade': { 'values': g_settingsCore.options.getSetting( 'arcade').toAccountSettings(), 'options': SettingsInterface.CURSOR_VALUES }, 'sniper': { 'values': g_settingsCore.options.getSetting( 'sniper').toAccountSettings(), 'options': SettingsInterface.SNIPER_VALUES }, 'markers': { 'values': markers, 'options': SettingsInterface.MARKER_VALUES, 'types': SettingsInterface.MARKER_TYPES } } if self.__altVoiceSetting.isOptionEnabled(): altVoices = [] for idx, desc in enumerate(self.__altVoiceSetting.getOptions()): altVoices.append({'data': idx, 'label': desc}) config['alternativeVoices'] = { 'current': self.__altVoiceSetting.get(), 'options': altVoices } gameplayMask = gameplay_ctx.getMask() for name in ArenaType.g_gameplayNames: key = self.GAMEPLAY_KEY_FORMAT.format(name) bit = ArenaType.getVisibilityMask( ArenaType.getGameplayIDForName(name)) config[key] = gameplayMask & bit > 0 settings.append(config) if not LogitechMonitor.isPresentColor(): if self.KEYBOARD_MAPPING_BLOCKS.has_key('logitech_keyboard'): del self.KEYBOARD_MAPPING_BLOCKS['logitech_keyboard'] else: self.KEYBOARD_MAPPING_BLOCKS['logitech_keyboard'] = ( 'switch_view', ) cmdMap = CommandMapping.g_instance defaults = cmdMap.getDefaults() keyboard = [] for group_name in self.KEYBOARD_MAPPING_BLOCKS_ORDER: if group_name in self.KEYBOARD_MAPPING_BLOCKS.keys(): group = {'id': group_name, 'commands': []} keyboard.append(group) for key_setting in self.KEYBOARD_MAPPING_BLOCKS[group_name]: command = cmdMap.getCommand( self.KEYBOARD_MAPPING_COMMANDS[group_name] [key_setting]) keyCode = cmdMap.get( self.KEYBOARD_MAPPING_COMMANDS[group_name] [key_setting]) defaultCode = defaults[command] if defaults.has_key( command) else 0 key = { 'id': key_setting, 'command': command, 'key': getScaleformKey(keyCode), 'keyDefault': getScaleformKey(defaultCode) } group['commands'].append(key) settings.append(keyboard) mouse = {} player = BigWorld.player() if hasattr(player.inputHandler, 'ctrls'): for key, path in SettingsInterface.MOUSE_KEYS['ingame'].items(): if key == 'horInvert': value = g_settingsCore.getSetting('mouseHorzInvert') elif key == 'vertInvert': value = g_settingsCore.getSetting('mouseVertInvert') elif key == 'backDraftInvert': value = g_settingsCore.getSetting('backDraftInvert') else: value = player.inputHandler.ctrls[ path[0]].camera.getUserConfigValue(path[1]) mouse[key] = { 'defaultValue': SettingsInterface.MOUSE_KEYS['default'][key], 'value': value } else: ds = Settings.g_instance.userPrefs[Settings.KEY_CONTROL_MODE] for key, path in SettingsInterface.MOUSE_KEYS['lobby'].items(): default = SettingsInterface.MOUSE_KEYS['default'][key] value = default if key == 'horInvert': value = g_settingsCore.getSetting('mouseHorzInvert') elif key == 'vertInvert': value = g_settingsCore.getSetting('mouseVertInvert') elif key == 'backDraftInvert': value = g_settingsCore.getSetting('backDraftInvert') elif ds is not None: if path[2] == 'float': value = ds[path[0]].readFloat(path[1], default) elif path[2] == 'bool': value = ds[path[0]].readBool(path[1], default) else: LOG_DEBUG('Unknown mouse settings type %s %s' % (key, path)) mouse[key] = {'defaultValue': default, 'value': value} settings.append(mouse) g_windowsStoredData.stop() return settings