comparison gamelib/cursor.py @ 172:3b5cfb3f794e

Ensure cursor loaded when calling set_highlight
author Stefano Rivera <stefano@rivera.za.net>
date Wed, 25 Aug 2010 13:12:14 +0200
parents a1162ea4ad67
children fbfd8e748ac0
comparison
equal deleted inserted replaced
171:a1162ea4ad67 172:3b5cfb3f794e
16 def __init__(self, filename, x, y): 16 def __init__(self, filename, x, y):
17 Sprite.__init__(self) 17 Sprite.__init__(self)
18 self.filename = filename 18 self.filename = filename
19 self.pointer_x = x 19 self.pointer_x = x
20 self.pointer_y = y 20 self.pointer_y = y
21 self.highlighted = False
21 22
22 def load(self): 23 def load(self):
23 if not hasattr(self, 'plain_image'): 24 if not hasattr(self, 'plain_image'):
24 self.plain_image = get_image('items', self.filename) 25 self.plain_image = get_image('items', self.filename)
25 self.image = self.plain_image 26 self.image = self.plain_image
26 self.rect = self.image.get_rect() 27 self.rect = self.image.get_rect()
27 self.highlight = pygame.Surface(self.rect.size) 28 self.highlight = pygame.Surface(self.rect.size)
28 color = pygame.color.Color(255, 100, 100, 0) 29 color = pygame.color.Color(255, 100, 100, 0)
29 self.highlight.fill(color) 30 self.highlight.fill(color)
30 self.highlighted = False
31 31
32 def update(self): 32 def update(self):
33 pos = pygame.mouse.get_pos() 33 pos = pygame.mouse.get_pos()
34 self.rect.left = pos[0] - self.pointer_x 34 self.rect.left = pos[0] - self.pointer_x
35 self.rect.top = pos[1] - self.pointer_y 35 self.rect.top = pos[1] - self.pointer_y
36 36
37 def set_highlight(self, enable): 37 def set_highlight(self, enable):
38 if not hasattr(self, 'plain_image'):
39 # do nothing if we're not loaded yet
40 return
41 if enable != self.highlighted: 38 if enable != self.highlighted:
39 self.load()
42 self.highlighted = enable 40 self.highlighted = enable
43 self.image = self.plain_image.copy() 41 self.image = self.plain_image.copy()
44 if enable: 42 if enable:
45 self.image.blit(self.highlight, self.highlight.get_rect(), 43 self.image.blit(self.highlight, self.highlight.get_rect(),
46 None, pygame.BLEND_MULT) 44 None, pygame.BLEND_MULT)