annotate gamelib/sprite_cursor.py @ 232:0bd214cf9018

Overlay cost on building sprite cursors.
author Simon Cross <hodgestar@gmail.com>
date Fri, 04 Sep 2009 23:59:52 +0000
parents f06010d34cd3
children 9cc7bc5cd10c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 import pygame.font
0bd214cf9018 Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents: 186
diff changeset
8 from pygame.locals import SRCALPHA
0bd214cf9018 Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents: 186
diff changeset
9
186
f06010d34cd3 Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
10 import imagecache
232
0bd214cf9018 Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents: 186
diff changeset
11 import constants
186
f06010d34cd3 Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
12 from pgu.vid import Sprite
f06010d34cd3 Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
13
232
0bd214cf9018 Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents: 186
diff changeset
14 # 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
15 import warnings
0bd214cf9018 Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents: 186
diff changeset
16 warnings.filterwarnings("ignore", "os.popen3 is deprecated.")
0bd214cf9018 Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents: 186
diff changeset
17
186
f06010d34cd3 Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
18 class SpriteCursor(Sprite):
f06010d34cd3 Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
19 """A Sprite used as an on-board cursor."""
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:
0bd214cf9018 Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents: 186
diff changeset
26 image = image.copy()
0bd214cf9018 Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents: 186
diff changeset
27 text = self._font.render(str(cost), True, constants.FG_COLOR)
0bd214cf9018 Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents: 186
diff changeset
28 w, h = image.get_size()
0bd214cf9018 Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents: 186
diff changeset
29 x, y = text.get_size()
0bd214cf9018 Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents: 186
diff changeset
30 image.blit(text, (w - x, h - y))
0bd214cf9018 Overlay cost on building sprite cursors.
Simon Cross <hodgestar@gmail.com>
parents: 186
diff changeset
31
186
f06010d34cd3 Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
32 # Create the sprite somewhere far off screen
f06010d34cd3 Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
33 Sprite.__init__(self, image, (-1000, -1000))
f06010d34cd3 Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
34 self._tv = tv
f06010d34cd3 Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
35
f06010d34cd3 Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
36 def set_pos(self, tile_pos):
f06010d34cd3 Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
37 """Set the cursor position on the gameboard."""
f06010d34cd3 Add sprite cursors for building placement.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
38 self.rect.x, self.rect.y = self._tv.tile_to_view(tile_pos)