Mercurial > rinkhals
annotate gamelib/sprite_cursor.py @ 422:ab4fc3fe0f96
chickens scatter; chop wood
author | Adrianna Pińska <adrianna.pinska@gmail.com> |
---|---|
date | Sat, 21 Nov 2009 15:35:23 +0000 |
parents | 9cc7bc5cd10c |
children |
rev | line source |
---|---|
186
f06010d34cd3
Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
1 """In-game sprite cursors for the gameboard. |
f06010d34cd3
Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
2 |
f06010d34cd3
Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
3 Currently mostly used when placing buildings. |
f06010d34cd3
Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
4 """ |
f06010d34cd3
Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
5 |
232
0bd214cf9018
Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents:
186
diff
changeset
|
6 import pygame |
0bd214cf9018
Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents:
186
diff
changeset
|
7 from pygame.locals import SRCALPHA |
0bd214cf9018
Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents:
186
diff
changeset
|
8 |
186
f06010d34cd3
Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
9 import imagecache |
232
0bd214cf9018
Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents:
186
diff
changeset
|
10 import constants |
186
f06010d34cd3
Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
11 from pgu.vid import Sprite |
f06010d34cd3
Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
12 |
232
0bd214cf9018
Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents:
186
diff
changeset
|
13 # ignore os.popen3 warning generated by pygame.font.SysFont |
0bd214cf9018
Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents:
186
diff
changeset
|
14 import warnings |
0bd214cf9018
Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents:
186
diff
changeset
|
15 warnings.filterwarnings("ignore", "os.popen3 is deprecated.") |
0bd214cf9018
Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents:
186
diff
changeset
|
16 |
186
f06010d34cd3
Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
17 class SpriteCursor(Sprite): |
267
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
18 """A Sprite used as an on-board cursor. |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
19 """ |
186
f06010d34cd3
Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
20 |
232
0bd214cf9018
Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents:
186
diff
changeset
|
21 def __init__(self, image_name, tv, cost=None): |
0bd214cf9018
Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents:
186
diff
changeset
|
22 self._font = pygame.font.SysFont('Vera', 20, bold=True) |
186
f06010d34cd3
Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
23 image = imagecache.load_image(image_name, ["sprite_cursor"]) |
232
0bd214cf9018
Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents:
186
diff
changeset
|
24 |
0bd214cf9018
Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents:
186
diff
changeset
|
25 if cost is not None: |
267
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
26 image = self._apply_text(image, str(cost)) |
232
0bd214cf9018
Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents:
186
diff
changeset
|
27 |
186
f06010d34cd3
Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
28 # Create the sprite somewhere far off screen |
f06010d34cd3
Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
29 Sprite.__init__(self, image, (-1000, -1000)) |
f06010d34cd3
Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
30 self._tv = tv |
f06010d34cd3
Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
31 |
267
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
32 def _apply_text(self, image, stext): |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
33 """Apply the text to the image.""" |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
34 image = image.copy() |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
35 text = self._font.render(stext, True, constants.FG_COLOR) |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
36 w, h = image.get_size() |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
37 x, y = text.get_size() |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
38 image.blit(text, (w - x, h - y)) |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
39 return image |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
40 |
186
f06010d34cd3
Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
41 def set_pos(self, tile_pos): |
f06010d34cd3
Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
42 """Set the cursor position on the gameboard.""" |
f06010d34cd3
Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
43 self.rect.x, self.rect.y = self._tv.tile_to_view(tile_pos) |
267
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
44 |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
45 class SmallSpriteCursor(SpriteCursor): |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
46 """A sprite cursor for use with images too small for the associated text.""" |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
47 |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
48 def _apply_text(self, image, stext): |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
49 text = self._font.render(stext, True, constants.FG_COLOR) |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
50 w, h = image.get_size() |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
51 x, y = text.get_size() |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
52 |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
53 new_w, new_h = w + x, max(h, y) |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
54 |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
55 new_image = pygame.Surface((new_w, new_h), SRCALPHA) |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
56 new_image.blit(image, (0, 0)) |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
57 new_image.blit(text, (w, new_h - y)) |
9cc7bc5cd10c
Refactor sprite cursor a bit to make sub-classing easier. Add (unused) SmallSpriteCursor sub-class. Remove unnecessary pygame.font import.
Simon Cross <hodgestar@gmail.com>
parents:
232
diff
changeset
|
58 return new_image |