Changeset 76 for trunk/PARPG/scripts


Ignore:
Timestamp:
05/31/09 16:17:24 (11 years ago)
Author:
bretzel_parpg
Message:

Added a functional options menu to the game. Right now it has options for fullscreen and sounds.

Location:
trunk/PARPG/scripts
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/PARPG/scripts/hud.py

    r74 r76  
    11#!/usr/bin/python 
     2 
     3# Make the actions append at the top instead of the bottom 
    24 
    35"""Import all necessary modules""" 
     
    1113    Arguments: 
    1214        engine : an instance of the fife engine 
     15        settings : an instance of the class Setting from settings.py 
    1316    """ 
    14     def __init__(self, engine): 
     17    def __init__(self, engine, settings): 
    1518        pychan.init(engine, debug = True) 
    1619         
    1720        self.hud = pychan.loadXML("gui/hud.xml") 
    1821 
     22        self.settings = settings 
    1923        self.hp = self.hud.findChild(name="HealthPoints") 
    2024        self.ap = self.hud.findChild(name="ActionPoints") 
     
    2327        self.menu_displayed = False 
    2428 
     29        """Initialize and show the main HUD""" 
    2530        self.events_to_map = {"menuButton":self.displayMenu, "saveButton":self.saveGame, 
    2631                              "loadButton":self.loadGame} 
    2732        self.hud.mapEvents(self.events_to_map)  
    2833        self.hud.show() 
    29  
     34         
     35        """Initalize the main menu""" 
    3036        self.main_menu = pychan.loadXML("gui/hud_main_menu.xml") 
    3137        self.menu_events = {"resumeButton":self.hideMenu, "saveButton":self.saveGame, 
     
    3339                            "optionsButton":self.displayOptions} 
    3440        self.main_menu.mapEvents(self.menu_events) 
     41 
     42        """Initalize the options menu""" 
     43        self.options_menu = pychan.loadXML("gui/hud_options.xml") 
     44        self.options_events = {"applyButton":self.applyOptions, "closeButton":self.options_menu.hide} 
     45 
     46        self.options_menu.distributeData({'FullscreenBox':int(self.settings.readSetting(name="FullScreen")), 
     47                                          'SoundsBox':int(self.settings.readSetting(name="PlaySounds"))}) 
     48         
     49        self.options_menu.mapEvents(self.options_events) 
     50 
    3551 
    3652    def refreshActionsBox(self): 
     
    4763        call refreshActionsBox 
    4864        """ 
    49         self.actionsText.append(action) 
     65        self.actionsText.insert(0, action) 
    5066        self.refreshActionsBox() 
    5167 
     68    def requireRestartDialog(self): 
     69        """ 
     70        Show a dialog asking the user to restart PARPG for their changes to take effect 
     71        """ 
     72        require_restart_dialog = pychan.loadXML('gui/hud_require_restart.xml') 
     73        require_restart_dialog.mapEvents({'okButton':require_restart_dialog.hide}) 
     74        require_restart_dialog.show() 
     75 
     76    def applyOptions(self): 
     77        """ 
     78        Apply the current options 
     79        """ 
     80        self.requireRestart = False 
     81        enable_fullscreen, enable_sound = self.options_menu.collectData('FullscreenBox', 'SoundsBox') 
     82 
     83        if (int(enable_fullscreen) != int(self.settings.readSetting('FullScreen'))): 
     84            self.setOption('FullScreen', int(enable_fullscreen)) 
     85            self.requireRestart = True 
     86             
     87        if (int(enable_sound) != int(self.settings.readSetting('PlaySounds'))): 
     88            self.setOption('PlaySounds', int(enable_sound)) 
     89            self.requireRestart = True 
     90 
     91        self.settings.tree.write('settings.xml') 
     92        if (self.requireRestart): 
     93            self.requireRestartDialog() 
     94        self.options_menu.hide() 
     95 
     96    def setOption(self, name, value): 
     97        """ 
     98        Set an option within the xml 
     99        """ 
     100        element = self.settings.root_element.find(name) 
     101        if (element != None): 
     102            if (value != element.text): 
     103                element.text = str(value) 
     104        else: 
     105            print 'Setting,', name, 'does not exist!' 
     106 
    52107    def displayOptions(self): 
    53         print "options" 
     108        """ 
     109        Display the options menu 
     110        """ 
     111        self.options_menu.show() 
    54112 
    55113    def displayMenu(self): 
  • trunk/PARPG/scripts/world.py

    r74 r76  
    7373        self.mouseCallback = None 
    7474 
    75         self.hud = hud.Hud(self.engine) 
     75        self.hud = hud.Hud(self.engine, TDS) 
    7676        self.hud.events_to_map["inventoryButton"] = cbwa(self.displayInventory, True) 
    7777        self.hud.hud.mapEvents(self.hud.events_to_map) 
Note: See TracChangeset for help on using the changeset viewer.