Ignore:
Timestamp:
09/03/09 02:03:40 (10 years ago)
Author:
orlandov
Message:

Fix Issue #78

  • Fully move the inventory display logic from World to Hud.
  • World will pass Hud an inventory model which will be passed to the Hud's Inventory object at creation time.
File:
1 edited

Legend:

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

    r268 r270  
    2020from scripts.parpgfilebrowser import PARPGFileBrowser 
    2121from scripts.context_menu import ContextMenu 
    22 import weakref 
     22from scripts import inventory 
    2323 
    2424class Hud(object): 
    2525    """Main Hud class""" 
    26     def __init__(self, engine, world, settings): 
     26    def __init__(self, engine, settings, inv_model, callbacks): 
    2727        """Initialise the instance. 
    2828           @type engine: fife.Engine 
     
    3030           @type settings: settings.Setting 
    3131           @param settings: The settings data 
     32           @type inv_model: dict 
     33           @type callbacks: dict 
     34           @param callbacks: a dict of callbacks 
     35               saveGame: called when the user clicks on Save 
     36               loadGame: called when the user clicks on Load 
     37               quitGame: called when the user clicks on Quit 
    3238           @return: None""" 
    3339        pychan.init(engine, debug = True) 
     
    3743        self.engine = engine 
    3844        self.settings = settings 
    39         self.world = weakref.proxy(world) 
     45 
     46        inv_callbacks = { 
     47            'refreshReadyImages': self.refreshReadyImages, 
     48            'toggleInventoryButton': self.toggleInventoryButton, 
     49        } 
     50 
     51        self.inventory = inventory.Inventory(self.engine, inv_model, inv_callbacks) 
     52        self.refreshReadyImages() 
     53 
     54        self.saveGameCallback = callbacks['saveGame'] 
     55        self.loadGameCallback = callbacks['loadGame'] 
     56        self.quitCallback     = callbacks['quitGame'] 
     57 
    4058        self.actionsBox = self.hud.findChild(name="actionsBox") 
    4159        self.actionsText = [] 
     
    121139        self.context_menu = ContextMenu(self.engine, data, pos) 
    122140 
     141    def hideContextMenu(self): 
     142        """Hides the context menu 
     143           @return: None""" 
     144        self.context_menu.hide() 
     145 
    123146    def initializeMainMenu(self): 
    124147        """Initalize the main menu. 
     
    236259            @return: None""" 
    237260        save_browser = PARPGFileBrowser(self.engine, 
    238                                    self.world.saveFunction, 
     261                                   self.saveGameCallback, 
    239262                                   savefile=True, 
    240263                                   guixmlpath="gui/savebrowser.xml", 
     
    251274            @return: None""" 
    252275        load_browser = PARPGFileBrowser(self.engine, 
    253                                    self.world.loadFunction, 
     276                                   self.loadGameCallback, 
    254277                                   savefile=False, 
    255278                                   guixmlpath='gui/loadbrowser.xml', 
     
    276299        window.addChild(hbox) 
    277300 
    278         events_to_map = {"yes_button":self.world.quitFunction, 
    279                          "no_button":window.hide} 
     301        events_to_map = { "yes_button": self.quitCallback, 
     302                          "no_button":  window.hide } 
    280303         
    281304        window.mapEvents(events_to_map) 
     
    286309           @return: None""" 
    287310        button = self.hud.findChild(name="inventoryButton") 
    288         if(button.toggled == 0): 
     311        if button.toggled == 0: 
    289312            button.toggled = 1 
    290313        else: 
    291314            button.toggled = 0 
    292315 
    293     def displayInventory(self, *args, **kwargs): 
     316    def toggleInventory(self, toggleImage=True): 
    294317        """Display's the inventory screen 
    295318           @return: None""" 
    296         self.world.inventory.displayInventory(*args, **kwargs) 
     319 
     320        self.inventory.toggleInventory(toggleImage) 
    297321 
    298322    def refreshReadyImages(self): 
     
    301325           @return: None""" 
    302326        self.setImages(self.hud.findChild(name="hudReady1"), 
    303                        self.world.inventory.inventory.findChild(name="Ready1").up_image) 
     327                       self.inventory.getImage("Ready1").up_image) 
     328 
    304329        self.setImages(self.hud.findChild(name="hudReady2"), 
    305                        self.world.inventory.inventory.findChild(name="Ready2").up_image) 
     330                       self.inventory.getImage("Ready2").up_image) 
     331 
    306332        self.setImages(self.hud.findChild(name="hudReady3"), 
    307                        self.world.inventory.inventory.findChild(name="Ready3").up_image) 
     333                       self.inventory.getImage("Ready3").up_image) 
     334 
    308335        self.setImages(self.hud.findChild(name="hudReady4"), 
    309                        self.world.inventory.inventory.findChild(name="Ready4").up_image) 
     336                       self.inventory.getImage("Ready4").up_image) 
    310337 
    311338    def setImages(self, widget, image): 
     
    324351           @return: None""" 
    325352        events_to_map = {} 
    326         events_to_map["inventoryButton"] = cbwa(self.displayInventory, True) 
     353 
     354        # when we click the toggle button don't change the image 
     355        events_to_map["inventoryButton"] = cbwa(self.toggleInventory, False) 
    327356        events_to_map["saveButton"] = self.saveGame 
    328357        events_to_map["loadButton"] = self.loadGame 
Note: See TracChangeset for help on using the changeset viewer.