Ignore:
Timestamp:
10/24/09 06:17:27 (10 years ago)
Author:
b0rland_parpg
Message:

Ticket #107: patch by b0rland

  • Wrote initial version of the inventory storage class
  • Added some useful utility functions into container class and its derivatives
  • Created several combined classes for carryable containers
  • Extended tests and of course made new ones
  • Renamed old Inventory class to be InventoryGUI

Note: InventoryGUI still works the old way and doesn't use Inventory

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/game/scripts/objects/composed.py

    r310 r346  
    1818"""Composite game object classes are kept here""" 
    1919 
     20from hgext.inotify.linux.watcher import getter 
    2021from base import * 
    2122 
     
    3233        self.blocking = True 
    3334 
     35class CarryableContainer(GameObject, Container, Carryable): 
     36    """Composite class that will be used for backpack, pouches, etc.""" 
     37    def __init__ (self, ID, **kwargs): 
     38        GameObject.__init__(self, ID, **kwargs) 
     39        Container.__init__(self, **kwargs) 
     40        Carryable.__init__(self,**kwargs) 
     41        self.own_weight = 0 
     42 
     43    def getWeight(self): 
     44        """Total weight of all items in container + container's own weight""" 
     45        return sum((item.weight for item in self.items), self.own_weight) 
     46 
     47 
     48    def setWeight(self, weight): 
     49        self.own_weight = weight 
     50 
     51    weight = property(getWeight, setWeight, "Total weight of container") 
     52 
     53    def __repr__(self): 
     54        return "[%s:%s "%(self.name, self.ID) +str(reduce((lambda a,b: a +', '+str(b)), self.items,""))+" ]" 
     55 
     56 
     57class SingleItemContainer (CarryableContainer) : 
     58    """Container that can only store a single item. This class can represent single-item inventory slots""" 
     59    def __init__ (self, ID, **kwargs): 
     60        CarryableContainer.__init__(self, ID,**kwargs) 
     61 
     62    def placeItem(self,item): 
     63        if len(self.items) > 0 : 
     64            raise ValueError ('%s is already busy' % self) 
     65        CarryableContainer.placeItem(self, item) 
     66 
    3467class Door(GameObject, Lockable, Scriptable, Trappable): 
    3568    """Composite class that can be used to create doors on a map.""" 
Note: See TracChangeset for help on using the changeset viewer.