def exit(self): self.ignore('confirmDone') self.hide() if self.settingsChanged != 0: Settings.writeSettings() self.speedChatStyleText.exit() if self.displaySettingsChanged: taskMgr.doMethodLater(self.DisplaySettingsDelay, self.writeDisplaySettings, self.DisplaySettingsTaskName)
def __doToggleAcceptWhispers(self): messenger.send('wakeup') if base.localAvatar.acceptingNonFriendWhispers: base.localAvatar.acceptingNonFriendWhispers = 0 Settings.setAcceptingNonFriendWhispers(0) else: base.localAvatar.acceptingNonFriendWhispers = 1 Settings.setAcceptingNonFriendWhispers(1) self.settingsChanged = 1 self.__setAcceptWhispersButton()
def __doToggleToonChatSounds(self): messenger.send('wakeup') if base.toonChatSounds: base.toonChatSounds = 0 Settings.setToonChatSounds(0) else: base.toonChatSounds = 1 Settings.setToonChatSounds(1) self.settingsChanged = 1 self.__setToonChatSoundsButton()
def __doToggleSfx(self): messenger.send('wakeup') if base.sfxActive: base.enableSoundEffects(0) Settings.setSfx(0) else: base.enableSoundEffects(1) Settings.setSfx(1) self.settingsChanged = 1 self.__setSoundFXButton()
def __doToggleMusic(self): messenger.send('wakeup') if base.musicActive: base.enableMusic(0) Settings.setMusic(0) else: base.enableMusic(1) Settings.setMusic(1) self.settingsChanged = 1 self.__setMusicButton()
def writeDisplaySettings(self, task = None): if not self.displaySettingsChanged: return taskMgr.remove(self.DisplaySettingsTaskName) self.notify.info('writing new display settings %s, fullscreen %s, embedded %s, %s to SettingsFile.' % (self.displaySettingsSize, self.displaySettingsFullscreen, self.displaySettingsEmbedded, self.displaySettingsApi)) Settings.setResolutionDimensions(self.displaySettingsSize[0], self.displaySettingsSize[1]) Settings.setWindowedMode(not self.displaySettingsFullscreen) Settings.setEmbeddedMode(self.displaySettingsEmbedded) if self.displaySettingsApiChanged: api = self.DisplaySettingsApiMap.get(self.displaySettingsApi) if api == None: self.notify.warning('Cannot save unknown display API: %s' % self.displaySettingsApi) else: Settings.setDisplayDriver(api) Settings.writeSettings() self.displaySettingsChanged = 0 return Task.done
def __init__(self): self.restore_failed = False self.settings = Settings() self.loadFromSettings()
class DisplayOptions: notify = DirectNotifyGlobal.directNotify.newCategory('DisplayOptions') def __init__(self): self.restore_failed = False self.settings = Settings() self.loadFromSettings() def loadFromSettings(self): mode = self.settings.getBool('game', 'fullscreen-mode') music = self.settings.getBool('game', 'music', True) sfx = self.settings.getBool('game', 'sfx', True) toonChatSounds = self.settings.getBool('game', 'toon-chat-sounds', True) musicVol = self.settings.getInt('game', 'music-vol', 100) / 100.0 sfxVol = self.settings.getInt('game', 'sfx-vol', 100) / 100.0 res = self.settings.getList('game', 'resolution', default=[800, 600], expectedLength=2) embed = self.settings.getBool('game', 'embed', False) antialias = self.settings.getInt('game', 'antialiasing', 0) if antialias: loadPrcFileData('toonBase Settings Framebuffer MSAA', 'framebuffer-multisample 1') loadPrcFileData('toonBase Settings MSAA Level', 'multisamples %i' % antialias) else: self.settings.updateSetting('game', 'antialiasing', antialias) loadPrcFileData('toonBase Settings Framebuffer MSAA', 'framebuffer-multisample 0') self.notify.debug('before prc settings embedded mode=%s' % str(embed)) self.notify.debug('before prc settings full screen mode=%s' % str(mode)) loadPrcFileData('toonBase Settings Window Res', 'win-size %s %s' % (res[0], res[1])) self.notify.debug('settings resolution = %s' % str(res)) loadPrcFileData('toonBase Settings Window FullScreen', 'fullscreen %s' % mode) self.notify.debug('settings full screen mode=%s' % str(mode)) loadPrcFileData('toonBase Settings Music Active', 'audio-music-active %s' % music) loadPrcFileData('toonBase Settings Sound Active', 'audio-sfx-active %s' % sfx) loadPrcFileData('toonBase Settings Music Volume', 'audio-master-music-volume %s' % musicVol) loadPrcFileData('toonBase Settings Sfx Volume', 'audio-master-sfx-volume %s' % sfxVol) loadPrcFileData('toonBase Settings Toon Chat Sounds', 'toon-chat-sounds %s' % toonChatSounds) self.settingsFullScreen = mode self.settingsWidth = res[0] self.settingsHeight = res[1] self.settingsEmbedded = embed self.antialias = antialias self.notify.debug('settings embedded mode=%s' % str(self.settingsEmbedded)) self.notify.info('settingsFullScreen = %s, embedded = %s width=%d height=%d' % (self.settingsFullScreen, self.settingsEmbedded, self.settingsWidth, self.settingsHeight)) return def restrictToEmbedded(self, restrict, change_display = True): if base.appRunner is None or base.appRunner.windowProperties is None: restrict = 0 self.restrict_to_embedded = choice(restrict, 1, 0) self.notify.debug('restrict_to_embedded: %s' % self.restrict_to_embedded) if change_display: self.set(base.pipe, self.settingsWidth, self.settingsHeight, self.settingsFullScreen, self.settingsEmbedded) return def set(self, pipe, width, height, fullscreen, embedded): self.notify.debugStateCall(self) state = False self.notify.info('SET') if self.restrict_to_embedded: fullscreen = 0 embedded = 1 if embedded: if base.appRunner.windowProperties: width = base.appRunner.windowProperties.getXSize() height = base.appRunner.windowProperties.getYSize() self.current_pipe = base.pipe self.current_properties = WindowProperties(base.win.getProperties()) properties = self.current_properties self.notify.debug('DISPLAY PREVIOUS:') self.notify.debug(' EMBEDDED: %s' % bool(properties.getParentWindow())) self.notify.debug(' FULLSCREEN: %s' % bool(properties.getFullscreen())) self.notify.debug(' X SIZE: %s' % properties.getXSize()) self.notify.debug(' Y SIZE: %s' % properties.getYSize()) self.notify.debug('DISPLAY REQUESTED:') self.notify.debug(' EMBEDDED: %s' % bool(embedded)) self.notify.debug(' FULLSCREEN: %s' % bool(fullscreen)) self.notify.debug(' X SIZE: %s' % width) self.notify.debug(' Y SIZE: %s' % height) if self.current_pipe == pipe and bool(self.current_properties.getParentWindow()) == bool(embedded) and self.current_properties.getFullscreen() == fullscreen and self.current_properties.getXSize() == width and self.current_properties.getYSize() == height: self.notify.info('DISPLAY NO CHANGE REQUIRED') state = True else: properties = WindowProperties() properties.setSize(width, height) properties.setFullscreen(fullscreen) properties.setParentWindow(0) if embedded: if base.appRunner.windowProperties: properties = base.appRunner.windowProperties original_sort = base.win.getSort() if self.resetWindowProperties(pipe, properties): self.notify.debug('DISPLAY CHANGE SET') properties = base.win.getProperties() self.notify.debug('DISPLAY ACHIEVED:') self.notify.debug(' EMBEDDED: %s' % bool(properties.getParentWindow())) self.notify.debug(' FULLSCREEN: %s' % bool(properties.getFullscreen())) self.notify.debug(' X SIZE: %s' % properties.getXSize()) self.notify.debug(' Y SIZE: %s' % properties.getYSize()) if bool(properties.getParentWindow()) == bool(embedded) and properties.getFullscreen() == fullscreen and properties.getXSize() == width and properties.getYSize() == height: self.notify.info('DISPLAY CHANGE VERIFIED') state = True else: self.notify.warning('DISPLAY CHANGE FAILED, RESTORING PREVIOUS DISPLAY') self.restoreWindowProperties() else: self.notify.warning('DISPLAY CHANGE FAILED') self.notify.warning('DISPLAY SET - BEFORE RESTORE') self.restoreWindowProperties() self.notify.warning('DISPLAY SET - AFTER RESTORE') base.win.setSort(original_sort) base.graphicsEngine.renderFrame() base.graphicsEngine.renderFrame() return state def resetWindowProperties(self, pipe, properties): if base.win: currentProperties = WindowProperties(base.win.getProperties()) gsg = base.win.getGsg() else: currentProperties = WindowProperties.getDefault() gsg = None newProperties = WindowProperties(currentProperties) newProperties.addProperties(properties) if base.pipe != pipe: gsg = None if gsg == None or currentProperties.getFullscreen() != newProperties.getFullscreen() or currentProperties.getParentWindow() != newProperties.getParentWindow(): self.notify.debug('window properties: %s' % properties) self.notify.debug('gsg: %s' % gsg) base.pipe = pipe if not base.openMainWindow(props=properties, gsg=gsg, keepCamera=True): self.notify.warning('OPEN MAIN WINDOW FAILED') return 0 self.notify.info('OPEN MAIN WINDOW PASSED') base.graphicsEngine.openWindows() if base.win.isClosed(): self.notify.warning('Window did not open, removing.') base.closeWindow(base.win) return 0 base.disableShowbaseMouse() if 'libotp' in sys.modules: from libotp import NametagGlobals NametagGlobals.setCamera(base.cam) NametagGlobals.setMouseWatcher(base.mouseWatcherNode) else: self.notify.debug('Adjusting properties') base.win.requestProperties(properties) base.graphicsEngine.renderFrame() return 1 def restoreWindowProperties(self): if self.resetWindowProperties(self.current_pipe, self.current_properties): self.restore_failed = False else: self.notify.warning("Couldn't restore original display settings!") if base.appRunner and base.appRunner.windowProperties: fullscreen = 0 embedded = 1 tryProps = base.appRunner.windowProperties if self.resetWindowProperties(self.current_pipe, tryProps): self.current_properties = copy.copy(tryProps) self.restore_failed = False return if self.current_properties.getFullscreen(): fullscreen = 0 embedded = 0 tryProps = self.current_properties tryProps.setFullscreen(0) if self.resetWindowProperties(self.current_pipe, tryProps): self.current_properties = copy.copy(tryProps) self.restore_failed = False return self.notify.error('Failed opening regular window!') base.panda3dRenderError() self.restore_failed = True @staticmethod def isDefaultEmbedded(): result = False try: embedOption = int(base.launcher.getValue('GAME_DEFAULT_TO_EMBEDDED', None)) if embedOption != None: result = bool(int(embedOption)) except: pass return result @staticmethod def isEmbeddedPossible(): result = False try: showOption = base.launcher.getValue('GAME_SHOW_EMBEDDED_OPTION', None) if showOption != None: result = bool(int(showOption)) except: pass return result @staticmethod def isWindowedPossible(): result = True try: showOption = base.launcher.getValue('GAME_SHOW_WINDOWED_OPTION', None) if showOption != None: result = bool(int(showOption)) except: pass return result
mf.removeSubfile(name) vfs.mount(mf, Filename('/'), 0) from direct.directnotify.DirectNotifyGlobal import directNotify from otp.otpbase.Settings import Settings from otp.otpbase import OTPGlobals notify = directNotify.newCategory('ToontownStart') notify.setInfo(True) settingsFilename = ConfigVariableString('preferences-filename', 'preferences.json').getValue() notify.info('Reading %s...' % settingsFilename) __builtin__.settings = Settings(settingsFilename) __builtin__.NO_FADE_SORT_INDEX = 2000 __builtin__.FADE_SORT_INDEX = 1000 if 'res' not in settings: settings['res'] = (1280, 720) if 'fullscreen' not in settings: settings['fullscreen'] = False if 'musicVol' not in settings: settings['musicVol'] = 1.0 if 'sfxVol' not in settings: settings['sfxVol'] = 1.0 if 'loadDisplay' not in settings: settings['loadDisplay'] = 'pandagl' if 'toonChatSounds' not in settings: settings['toonChatSounds'] = True if 'newGui' not in settings:
def loadFromSettings(self): Settings.readSettings() mode = not Settings.getWindowedMode() music = Settings.getMusic() sfx = Settings.getSfx() toonChatSounds = Settings.getToonChatSounds() musicVol = Settings.getMusicVolume() sfxVol = Settings.getSfxVolume() resList = [(640, 480), (800, 600), (1024, 768), (1280, 1024), (1600, 1200)] res = resList[Settings.getResolution()] embed = Settings.getEmbeddedMode() self.notify.debug('before prc settings embedded mode=%s' % str(embed)) self.notify.debug('before prc settings full screen mode=%s' % str(mode)) if mode == None: mode = 1 if res == None: res = (800, 600) if not Settings.doSavedSettingsExist(): self.notify.info( 'loadFromSettings: No settings; isDefaultEmbedded=%s' % self.isDefaultEmbedded()) embed = self.isDefaultEmbedded() if embed and not self.isEmbeddedPossible(): self.notify.warning('Embedded mode is not possible.') embed = False if not mode and not self.isWindowedPossible(): self.notify.warning('Windowed mode is not possible.') mode = True loadPrcFileData('toonBase Settings Window Res', 'win-size %s %s' % (res[0], res[1])) self.notify.debug('settings resolution = %s' % str(res)) loadPrcFileData('toonBase Settings Window FullScreen', 'fullscreen %s' % mode) self.notify.debug('settings full screen mode=%s' % str(mode)) loadPrcFileData('toonBase Settings Music Active', 'audio-music-active %s' % music) loadPrcFileData('toonBase Settings Sound Active', 'audio-sfx-active %s' % sfx) loadPrcFileData('toonBase Settings Music Volume', 'audio-master-music-volume %s' % musicVol) loadPrcFileData('toonBase Settings Sfx Volume', 'audio-master-sfx-volume %s' % sfxVol) loadPrcFileData('toonBase Settings Toon Chat Sounds', 'toon-chat-sounds %s' % toonChatSounds) self.settingsFullScreen = mode self.settingsWidth = res[0] self.settingsHeight = res[1] self.settingsEmbedded = embed self.notify.debug('settings embedded mode=%s' % str(self.settingsEmbedded)) self.notify.info( 'settingsFullScreen = %s, embedded = %s width=%d height=%d' % (self.settingsFullScreen, self.settingsEmbedded, self.settingsWidth, self.settingsHeight)) return
def __init__(self): self.settings = Settings()
class GameSettings: notify = DirectNotifyGlobal.directNotify.newCategory('GameSettings') notify.setInfo(True) def __init__(self): self.settings = Settings() def loadFromSettings(self): self.notify.info('Loading settings...') electionEvent = self.settings.getBool('game', 'elections', False) loadPrcFileData('toonBase Settings Election Active', 'want-doomsday %s' % electionEvent) loadPrcFileData('toonBase Elections Event Manager', 'want-event-manager %s' % electionEvent) self.settings.updateSetting('game', 'elections', electionEvent) self.electionEvent = electionEvent retroMode = self.settings.getBool('game', 'retro', False) loadPrcFileData('toonBase Settings Retro Mode', 'want-retro-mode %s' % retroMode) loadPrcFileData('toonBase Settings TTO Map Hover', 'want-map-hover %s' % retroMode) loadPrcFileData('toonBase Settings Retro Make-A-Toon', 'want-retro-makeatoon %s' % retroMode) loadPrcFileData('toonBase Settings TTO Cog Question', 'want-old-question %s' % retroMode) self.settings.updateSetting('game', 'retro', retroMode) self.retroMode = retroMode miniServer = self.settings.getBool('game', 'mini-server', False) loadPrcFileData('toonBase Settings Mini-Servers', 'want-mini-server %s' % miniServer) self.settings.updateSetting('game', 'mini-server', miniServer) self.miniServer = miniServer aspect = self.settings.getBool('game', 'stretched-screen', False) loadPrcFileData('toonBase Settings Aspect Ratio', 'aspect-ratio 1.33' if aspect else '0') self.settings.updateSetting('game', 'stretched-screen', aspect) self.aspect = aspect randomInvasions = self.settings.getBool('game', 'random-invasions', True) loadPrcFileData('toonBase Settings Random Invasions', 'want-random-invasions %s' % randomInvasions) self.settings.updateSetting('game', 'random-invasions', randomInvasions) self.randomInvasions = randomInvasions software = self.settings.getBool('game', 'software-render', False) loadPrcFileData('toonBase Settings Software Rendering', 'framebuffer-hardware %s' % (not software)) loadPrcFileData('toonBase Settings Software Rendering', 'framebuffer-software %s' % software) self.settings.updateSetting('game', 'software-render', software) self.software = software lerp = self.settings.getBool('game', 'interpolate-animations', True) loadPrcFileData('toonBase Settings Interpolated Animations', 'interpolate-animations %s' % lerp) self.settings.updateSetting('game', 'interpolate-animations', lerp) self.lerp = lerp classicCharacters = self.settings.getBool('game', 'classic-characters', True) loadPrcFileData('toonBase Settings Classic Characters', 'want-classic-chars %s' % classicCharacters) self.settings.updateSetting('game', 'classic-characters', classicCharacters) self.classicCharacters = classicCharacters stickyScroll = self.settings.getBool( 'game', 'camera-scroll-select-always-active', False) loadPrcFileData('toonBase Settings Sticky Scroll Camera Selection', 'want-sticky-scroll %s' % stickyScroll) self.settings.updateSetting('game', 'camera-scroll-select-always-active', stickyScroll) self.stickyScroll = stickyScroll spawnProps = self.settings.getBool('game', 'view-props', False) loadPrcFileData('toonBase Settings View Props', 'want-spawn-prop %s' % spawnProps) self.settings.updateSetting('game', 'view-props', spawnProps) self.spawnProps = spawnProps maxLOD = self.settings.getBool('game', 'always-max-lod', False) loadPrcFileData('toonBase Always Max LOD', 'always-max-lod %s' % maxLOD) self.settings.updateSetting('game', 'always-max-lod', maxLOD) self.maxLOD = maxLOD randPic = self.settings.getBool('game', 'random-loading-images', True) loadPrcFileData('toonBase Random Loader Images', 'want-random-pics %s' % randPic) self.settings.updateSetting('game', 'random-loading-images', randPic) self.randPic = randPic localServerAutoStartDefaultValue = True localServerAutoStart = self.settings.getBool( 'game', 'auto-start-local-server', localServerAutoStartDefaultValue) loadPrcFileData('toonBase Auto Start Local Server', 'auto-start-local-server %s' % localServerAutoStart) self.settings.updateSetting('game', 'auto-start-local-server', localServerAutoStart) self.localServerAutoStart = localServerAutoStart trueFriends = self.settings.getBool('game', 'true-friends', True) loadPrcFileData('toonBase True Friends', 'parent-password-set %s' % trueFriends) loadPrcFileData('toonBase True Friends', 'allow-secret-chat %s' % trueFriends) self.settings.updateSetting('game', 'true-friends', trueFriends) self.trueFriends = trueFriends whitelist = self.settings.getBool('game', 'whitelist', False) loadPrcFileData('toonBase Whitelist', 'want-whitelist %s' % whitelist) self.settings.updateSetting('game', 'whitelist', whitelist) self.whitelist = whitelist blacklist = self.settings.getBool('game', 'blacklist', False) loadPrcFileData('toonBase Blacklist', 'want-blacklist %s' % blacklist) self.settings.updateSetting('game', 'blacklist', blacklist) self.blacklist = blacklist sequenceBlacklist = self.settings.getBool('game', 'sequence-blacklist', False) loadPrcFileData('toonBase Sequence Blacklist', 'want-blacklist-sequence %s' % sequenceBlacklist) self.settings.updateSetting('game', 'sequence-blacklist', sequenceBlacklist) self.sequenceBlacklist = sequenceBlacklist toonfest = self.settings.getBool('game', 'toonfest-day-night', False) loadPrcFileData('toonBase ToonFest Day Night Cycle', 'toonfest-day-night %s' % toonfest) self.settings.updateSetting('game', 'toonfest-day-night', toonfest) self.toonfest = toonfest customMusic = self.settings.getBool('game', 'custom-battle-music', False) loadPrcFileData('toonBase Sequence Blacklist', 'custom-battle-music %s' % customMusic) self.settings.updateSetting('game', 'custom-battle-music', customMusic) self.customMusic = customMusic cogFoot = self.settings.getBool('game', 'cog-footsteps', True) loadPrcFileData('toonBase Cog Foot', 'cog-footsteps %s' % cogFoot) self.settings.updateSetting('game', 'cog-footsteps', cogFoot) self.cogFoot = cogFoot self.notify.info('Loaded.')
def __init__(self): self.settings = Settings('config/server.json')
class ServerSettings: notify = DirectNotifyGlobal.directNotify.newCategory('ServerSettings') notify.setInfo(True) def __init__(self): self.settings = Settings('config/server.json') def loadFromSettings(self): self.notify.info('Loading settings...') uberDogMaxChannels = self.settings.getInt('uberdog', 'max-channels', 999999) self.settings.updateSetting('uberdog', 'max-channels', uberDogMaxChannels) self.uberDogMaxChannels = uberDogMaxChannels uberDogStateServer = self.settings.getInt('uberdog', 'stateserver', 4002) self.settings.updateSetting('uberdog', 'stateserver', uberDogStateServer) self.uberDogStateServer = uberDogStateServer uberDogAstronIP = self.settings.getString('uberdog', 'astron-ip', '127.0.0.1:7199') self.settings.updateSetting('uberdog', 'astron-ip', uberDogAstronIP) self.uberDogAstronIP = uberDogAstronIP uberDogEventLoggerIP = self.settings.getString('uberdog', 'eventlogger-ip', '127.0.0.1:7197') self.settings.updateSetting('uberdog', 'eventlogger-ip', uberDogEventLoggerIP) self.uberDogEventLoggerIP = uberDogEventLoggerIP uberDogServerPassword = self.settings.getString( 'uberdog', 'server-password', '') self.settings.updateSetting('uberdog', 'server-password', uberDogServerPassword) self.uberDogServerPassword = uberDogServerPassword uberDogDefaultAccessLevel = self.settings.getInt( 'uberdog', 'default-access-level', 307) self.settings.updateSetting('uberdog', 'default-access-level', uberDogDefaultAccessLevel) self.uberDogDefaultAccessLevel = uberDogDefaultAccessLevel aiMaxChannels = self.settings.getInt('ai', 'max-channels', 999999) self.settings.updateSetting('ai', 'max-channels', aiMaxChannels) self.aiMaxChannels = aiMaxChannels aiStateServer = self.settings.getInt('ai', 'stateserver', 4002) self.settings.updateSetting('ai', 'stateserver', aiStateServer) self.aiStateServer = aiStateServer aiDistrictName = self.settings.getString('ai', 'district-name', 'Toontown') self.settings.updateSetting('ai', 'district-name', aiDistrictName) self.aiDistrictName = aiDistrictName aiAstronIP = self.settings.getString('ai', 'astron-ip', '127.0.0.1:7199') self.settings.updateSetting('ai', 'astron-ip', aiAstronIP) self.aiAstronIP = aiAstronIP aiEventLoggerIP = self.settings.getString('ai', 'eventlogger-ip', '127.0.0.1:7197') self.settings.updateSetting('ai', 'eventlogger-ip', aiEventLoggerIP) self.aiEventLoggerIP = aiEventLoggerIP aiHolidayPasscode = self.settings.getString('ai', 'holiday-passcode', '') self.settings.updateSetting('ai', 'holiday-passcode', aiHolidayPasscode) self.aiHolidayPasscode = aiHolidayPasscode aiServerDescription = self.settings.getString( 'ai', 'server-description', 'A Toontown Offline Mini-Server.') self.settings.updateSetting('ai', 'server-description', aiServerDescription) self.aiServerDescription = aiServerDescription aiServerId = self.settings.getString('ai', 'server-id', '') self.settings.updateSetting('ai', 'server-id', aiServerId) self.aiServerId = aiServerId self.notify.info('Loaded.')