Mercurial > boomslang
annotate gamelib/cursor.py @ 128:a2f6e975af67
Nuke obsolete testing hook.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Tue, 24 Aug 2010 18:23:24 +0200 |
parents | 97322b78d1c1 |
children | 4223d66d88b4 |
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 | |
124 | 12 |
66 | 13 class CursorSprite(Sprite): |
14 "A Sprite that follows the Cursor" | |
15 | |
16 def __init__(self, filename): | |
17 Sprite.__init__(self) | |
18 self.image = get_image('items', filename + '.png') | |
19 self.rect = self.image.get_rect() | |
20 | |
21 def update(self): | |
22 self.rect.midtop = mouse.get_pos() | |
23 | |
124 | 24 |
70 | 25 class CursorWidget(Widget): |
26 """Mix-in widget to ensure that mouse_move is propogated to parents""" | |
27 | |
84
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
28 def __init__(self, *args, **kwargs): |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
29 Widget.__init__(self, *args, **kwargs) |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
30 self._cursor_group = RenderUpdates() |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
31 self._cursor_name = '' |
66 | 32 |
114
13d8cb1d5962
Better cursor handling using draw_all() and mouse_delta().
Jeremy Thurgood <firxen@gmail.com>
parents:
108
diff
changeset
|
33 def draw_all(self, _surface): |
13d8cb1d5962
Better cursor handling using draw_all() and mouse_delta().
Jeremy Thurgood <firxen@gmail.com>
parents:
108
diff
changeset
|
34 Widget.draw_all(self, _surface) |
106
da547e148532
Some (slightly) better cursor handling.
Jeremy Thurgood <firxen@gmail.com>
parents:
84
diff
changeset
|
35 surface = self.get_root().surface |
115
5e704ee7b84b
Remove "in-widget" check and always draw cursor.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
36 cursor = self.get_sprite_cursor() |
5e704ee7b84b
Remove "in-widget" check and always draw cursor.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
37 if cursor != self._cursor_name: |
5e704ee7b84b
Remove "in-widget" check and always draw cursor.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
38 if self.get_sprite_cursor() is None: |
5e704ee7b84b
Remove "in-widget" check and always draw cursor.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
39 pygame.mouse.set_visible(1) |
5e704ee7b84b
Remove "in-widget" check and always draw cursor.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
40 self._cursor_group.empty() |
5e704ee7b84b
Remove "in-widget" check and always draw cursor.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
41 else: |
5e704ee7b84b
Remove "in-widget" check and always draw cursor.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
42 pygame.mouse.set_visible(0) |
5e704ee7b84b
Remove "in-widget" check and always draw cursor.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
43 self._cursor_group.empty() |
5e704ee7b84b
Remove "in-widget" check and always draw cursor.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
44 self._cursor_group.add(CursorSprite(cursor)) |
5e704ee7b84b
Remove "in-widget" check and always draw cursor.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
45 if cursor is not None: |
5e704ee7b84b
Remove "in-widget" check and always draw cursor.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
46 self._cursor_group.update() |
5e704ee7b84b
Remove "in-widget" check and always draw cursor.
Jeremy Thurgood <firxen@gmail.com>
parents:
114
diff
changeset
|
47 self._cursor_group.draw(surface) |
66 | 48 |
114
13d8cb1d5962
Better cursor handling using draw_all() and mouse_delta().
Jeremy Thurgood <firxen@gmail.com>
parents:
108
diff
changeset
|
49 def mouse_delta(self, event): |
66 | 50 self.invalidate() |
70 | 51 |
84
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
52 def get_sprite_cursor(self): |
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
70
diff
changeset
|
53 return 'hand' |