Mercurial > boomslang
annotate gamelib/cursor.py @ 93:350ce4ebe122
Detail view without any functionality.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Tue, 24 Aug 2010 00:43:32 +0200 |
parents | c76f2fad2af5 |
children | da547e148532 |
rev | line source |
---|---|
66 | 1 # cursor.py |
2 # Copyright Boomslang team, 2010 (see COPYING File) | |
3 # Sprite Cursor | |
4 | |
70 | 5 from albow.widget import Widget |
66 | 6 from albow.resource import get_image |
7 import pygame.mouse as mouse | |
8 from pygame.sprite import Sprite, RenderUpdates | |
70 | 9 import pygame.cursors |
10 import pygame.mouse | |
11 | |
66 | 12 class CursorSprite(Sprite): |
13 "A Sprite that follows the Cursor" | |
14 | |
15 def __init__(self, filename): | |
16 Sprite.__init__(self) | |
17 self.image = get_image('items', filename + '.png') | |
18 self.rect = self.image.get_rect() | |
19 | |
20 def update(self): | |
21 self.rect.midtop = mouse.get_pos() | |
22 | |
70 | 23 class CursorWidget(Widget): |
24 """Mix-in widget to ensure that mouse_move is propogated to parents""" | |
25 | |
84
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
26 def __init__(self, *args, **kwargs): |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
27 Widget.__init__(self, *args, **kwargs) |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
28 self._cursor_group = RenderUpdates() |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
29 self._cursor_name = '' |
66 | 30 |
31 def draw(self, surface): | |
84
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
32 if self.rect.collidepoint(mouse.get_pos()): |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
33 cursor = self.get_sprite_cursor() |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
34 if cursor != self._cursor_name: |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
35 if self.get_sprite_cursor() is None: |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
36 pygame.mouse.set_visible(1) |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
37 self._cursor_group.empty() |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
38 else: |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
39 pygame.mouse.set_visible(0) |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
40 self._cursor_group.empty() |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
41 self._cursor_group.add(CursorSprite(cursor)) |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
42 if cursor is not None: |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
43 self._cursor_group.update() |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
44 self._cursor_group.draw(surface) |
66 | 45 |
46 def mouse_move(self, event): | |
47 self.invalidate() | |
70 | 48 |
84
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
49 def get_sprite_cursor(self): |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
50 return 'hand' |