Package pyzzle :: Module Item
[hide private]
[frames] | no frames]

Source Code for Module pyzzle.Item

  1  """A collection of slides and hotspots that together 
  2  represent an item within the game world."""  
  3  import pyzzle 
  4  from pyzzle.Slide import Slide 
  5  from pyzzle.Hotspot import Hotspot 
  6  from pyzzle.Panel import Panel 
  7  from pygame.sprite import Group 
  8  from pygame.rect import Rect 
  9  from RelativeRect import RelativeRect 
 10  from DB import Table,Row 
 11  import standard 
12 13 -class Item:
14 """A collection of slides and hotspots that together 15 represent an item within the game world. 16 17 @warning: The Item class is still very early in design, 18 and I reserve the right to radically change as I see fit. 19 You have been warned. 20 """ 21 __metaclass__=Table 22 23 inventory=Group() 24 25 @staticmethod
26 - def _load(cells):
27 row=Row(cells) 28 gameSlide=Slide[row.gameslide] if row.gameslide else None 29 gameHotspot=Hotspot[row.gamehotspot] if row.gamehotspot else None 30 menuSlide=Slide[row.menuslide] if row.menuslide else None 31 closeupSlide=Slide[row.closeupslide] if row.closeupslide else None 32 33 item=Item(gameSlide, gameHotspot, row.takenfile, 34 menuSlide, closeupSlide, id=row.id, taken=row.taken) 35 36 return item
37 - def __init__(self, 38 gameSlide, gameHotspot, takenfile, 39 menuSlide, closeupSlide=None, 40 id=None, taken=False, 41 onTake=lambda item:None, onUse=lambda item:None):
42 if id: Item.rows[id]=self 43 44 self.menuSlide=menuSlide 45 if menuSlide: 46 self.menuHotspot=Hotspot(self.menuSlide, None, onClick=self.use, 47 cursor='grab.png', rectRel=RelativeRect((0,0,1,1))) 48 self.menuSlide.add(self.menuHotspot) 49 50 51 self.closeupSlide=closeupSlide 52 if self.closeupSlide: 53 self.closeupPanel=Panel() 54 self.closeupPanel._layer=11 55 self.closeupPanel.rect=pyzzle.screen.get_rect() 56 self.closeupHotspot=Hotspot(self.closeupSlide, None, onClick=self.exit, 57 cursor='fwd.png', layer=-1) 58 self.closeupHotspot.rect=pyzzle.screen.get_rect() 59 self.closeupSlide.parent=self.closeupPanel 60 self.closeupSlide._getRect() 61 62 63 self.gameSlide=gameSlide 64 if type(gameHotspot) == Hotspot: 65 self.gameHotspot=gameHotspot 66 else: 67 self.gameHotspot=Hotspot(self.gameSlide, None, rectRel=gameHotspot) 68 self.gameHotspot.cursor='grab.png' 69 self.gameHotspot.onClick=self.take 70 self.gameHotspot.parent=self.gameSlide 71 self.takenfile=takenfile 72 73 self.taken=taken 74 if taken and self.menuSlide: 75 self.inventory.add(self.menuSlide) 76 elif gameSlide: 77 gameSlide.add(self.gameHotspot) 78 79 self.onUse=onUse 80 self.onTake=onTake
81 - def add(self):
82 if self.gameSlide and self.takenfile: 83 self.gameSlide.remove(self.gameHotspot) 84 self.gameSlide.file = self.takenfile 85 if self.menuSlide: 86 self.inventory.add(self.menuSlide) 87 self.taken=True 88 self.onTake(self)
89 - def take(self, *param):
90 self.add() 91 if self.closeupSlide: 92 self.use()
93 - def exit(self, *param):
94 if self.menuSlide: 95 self.inventory.add(self.menuSlide) 96 self.closeupPanel.empty() 97 pyzzle.scrollUp(oldslide=self.closeupPanel, newslide=None, delay=.1)
98 - def use(self, *param):
99 self.onUse(self) 100 if self.closeupSlide: 101 self.drop() 102 self.closeupPanel.add(self.closeupSlide) 103 self.closeupPanel.add(self.closeupHotspot) 104 pyzzle.scrollDown(oldslide=None, newslide=self.closeupPanel, delay=.1)
105 - def drop(self):
106 if self.menuSlide: 107 self.inventory.remove(self.menuSlide)
108