annotate gamelib/tiles.py @ 30:2eec29085060

Color night and day.
author Simon Cross <hodgestar@gmail.com>
date Sun, 30 Aug 2009 18:51:28 +0000
parents 7584453f4944
children dd9d2a4dd494
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
24
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
1 """Extension to pgu's tilevid."""
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
2
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
3 from pgu import tilevid, vid
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
4 import pygame
30
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
5 from pygame.locals import BLEND_RGBA_MULT
24
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
6 import os
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
7
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
8 TILE_MAP = {
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
9 0: "woodland",
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
10 1: "grassland",
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
11 2: "fence",
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
12 3: "henhouse",
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
13 4: "chicken",
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
14 }
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
15
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
16 REVERSE_TILE_MAP = dict((v, k) for k, v in TILE_MAP.iteritems())
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
17
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
18 class FarmVid(tilevid.Tilevid):
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
19 """Extension of pgu's TileVid class to handle the complications
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
20 of raising chickens.
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
21 """
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
22 def __init__(self):
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
23 tilevid.Tilevid.__init__(self)
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
24
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
25 def png_folder_load_tiles(self, path):
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
26 """Load tiles from a folder of PNG files."""
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
27 for dirpath, dirnames, filenames in os.walk(path):
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
28 for filename in filenames:
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
29 basename, ext = os.path.splitext(filename)
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
30 if ext != ".png":
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
31 continue
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
32 if basename in REVERSE_TILE_MAP:
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
33 n = REVERSE_TILE_MAP[basename]
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
34 img = pygame.image.load(os.path.join(dirpath, filename)).convert_alpha()
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
35 self.tiles[n] = FarmTile(img)
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
36
30
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
37 def sun(self, sun_on):
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
38 """Make it night."""
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
39 for tile in self.tiles:
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
40 if hasattr(tile, "sun"):
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
41 tile.sun(sun_on)
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
42 for sprite in self.sprites:
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
43 if hasattr(sprite, "sun"):
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
44 sprite.sun(sun_on)
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
45
24
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
46 class FarmTile(vid.Tile):
30
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
47
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
48 NIGHT_COLOUR = (100.0, 100.0, 200.0, 255.0)
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
49
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
50 def __init__(self, image):
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
51 self.day_image = image
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
52 self.night_image = image.copy()
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
53 self.night_image.fill(self.NIGHT_COLOUR, None, BLEND_RGBA_MULT)
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
54 self.image = self.day_image
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
55
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
56 def sun(self, sun_on):
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
57 if sun_on:
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
58 self.image = self.day_image
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
59 else:
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
60 self.image = self.night_image