Пример #1
0
 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)
Пример #2
0
 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()
Пример #3
0
 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()
Пример #4
0
 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()
Пример #5
0
 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()
Пример #6
0
 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:
Пример #10
0
 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.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
Пример #13
0
 def __init__(self):
     self.settings = Settings()
Пример #14
0
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.')
Пример #15
0
 def __init__(self):
     self.settings = Settings('config/server.json')
Пример #16
0
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.')