Ignore:
Timestamp:
12/03/09 10:02:10 (10 years ago)
Author:
b0rland_parpg
Message:

Ticket #107: patch by b0rland

  • Reworked inventory gui to use new inventory model
  • Made various additions and fixes to inventory model and base classes
  • Improved drag-and-drop support
  • Possibly broke dialog gui :(
Location:
trunk/game
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/game

    • Property svn:ignore
      •  

        old new  
        11*.dll 
        22Thumbs.db 
         3.project 
        34update_dlls_mingw.bat 
        45update_dlls_msvc2005.bat 
  • trunk/game/scripts/inventory.py

    r346 r424  
    2121    """The class to represent inventory 'model': allow operations with 
    2222    inventory contents, perform weight/bulk calculations, etc""" 
    23     def __init__(self, ID, **kwargs): 
     23    def __init__(self, **kwargs): 
    2424        """Initialise instance""" 
    25         CarryableContainer.__init__(self, ID=ID, **kwargs) 
    26         self.items = {"head": Slot(ID), "neck": Slot(ID), "shoulders": Slot(ID), 
    27                       "chest": Slot(ID), "abdomen": Slot(ID), "left_arm": Slot(ID), 
    28                       "right_arm": Slot(ID),"groin": Slot(ID), "hips": Slot(ID), 
    29                       "left_leg": Slot(ID), "right_leg": Slot(ID), 
    30                       "backpack": CarryableContainer(ID)} 
     25        CarryableContainer.__init__(self, **kwargs) 
     26        self.items = {"head": Slot(name="head"), "neck": Slot(name="neck"), "shoulders": Slot(name="shoulders"), 
     27                      "chest": Slot(), "abdomen": Slot(), "left_arm": Slot(), 
     28                      "right_arm": Slot(),"groin": Slot(), "hips": Slot(), 
     29                      "left_leg": Slot(), "right_leg": Slot(), 
     30                      "left_hand": Slot(), "right_hand": Slot(), 
     31                      "ready": CarryableContainer(), 
     32                      "backpack": CarryableContainer()} 
    3133        for key,item in self.items.iteritems(): 
    3234            item.name = key 
    3335        self.item_lookup = {} 
    3436 
    35     def placeItem(self,item): 
    36         self.items["backpack"].placeItem(item) 
     37    def placeItem(self,item, index=None): 
     38        self.items["backpack"].placeItem(item, index) 
    3739        self.item_lookup[item.ID] = "backpack" 
     40 
     41 
    3842         
    3943    def takeItem(self,item): 
     
    5963        return self.moveItemToSlot(item, "backpack") 
    6064 
    61     def moveItemToSlot(self,item,slot): 
     65    def moveItemToSlot(self,item,slot,index=None): 
    6266        if not slot in self.items: 
    6367            raise(ValueError,"%s: No such slot" % slot) 
     
    6670            self.items[self.item_lookup[item.ID]].takeItem(item) 
    6771        try: 
    68             self.items[slot].placeItem(item) 
     72            self.items[slot].placeItem(item, index) 
    6973        except ValueError: 
    70             self.takeOff(self.items[slot].items[0]) 
    71             self.items[slot].placeItem(item) 
     74            if index == None : 
     75                self.takeOff(self.items[slot].items[0]) 
     76            else : 
     77                self.takeOff(self.items[slot].items[index]) 
     78            self.items[slot].placeItem(item, index) 
    7279        self.item_lookup[item.ID] = slot 
    7380      
    74     def getItemsInSlot(self, slot): 
     81    def getItemsInSlot(self, slot, index=None): 
    7582        if not slot in self.items: 
    7683            raise(ValueError,"%s: No such slot" % slot) 
     84        if index != None: 
     85            if index < len(self.items[slot].items) : 
     86                return self.items[slot].items[index] 
     87            else : 
     88                return None 
    7789        return copy.copy(self.items[slot].items) 
    7890 
     
    8294        return self.items[slot].count() == 0 
    8395 
     96    def has(self, item): 
     97        return item.ID in self.item_lookup; 
     98 
    8499    def __repr__(self): 
    85100        return "[%s:%s "%(self.name, self.ID)+reduce((lambda a,b: str(a) +', '+str(b)), self.items.values())+" ]" 
Note: See TracChangeset for help on using the changeset viewer.