annotate gamelib/tiles.py @ 49:dd9d2a4dd494

Update tile loading to use imagecache and new data.py auto-converting of paths.
author Simon Cross <hodgestar@gmail.com>
date Mon, 31 Aug 2009 17:01:59 +0000
parents 2eec29085060
children 32fb395cf71c
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 os
49
dd9d2a4dd494 Update tile loading to use imagecache and new data.py auto-converting of paths.
Simon Cross <hodgestar@gmail.com>
parents: 30
diff changeset
5 import imagecache
24
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
6
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
7 TILE_MAP = {
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
8 0: "woodland",
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
9 1: "grassland",
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
10 2: "fence",
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
11 3: "henhouse",
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
12 4: "chicken",
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
13 }
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 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
16
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
17 class FarmVid(tilevid.Tilevid):
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
18 """Extension of pgu's TileVid class to handle the complications
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
19 of raising chickens.
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
20 """
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
21 def __init__(self):
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
22 tilevid.Tilevid.__init__(self)
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
23
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
24 def png_folder_load_tiles(self, path):
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
25 """Load tiles from a folder of PNG files."""
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
26 for dirpath, dirnames, filenames in os.walk(path):
49
dd9d2a4dd494 Update tile loading to use imagecache and new data.py auto-converting of paths.
Simon Cross <hodgestar@gmail.com>
parents: 30
diff changeset
27 abstract_dirpath = "/".join(dirpath.split(os.path.sep))
24
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]
49
dd9d2a4dd494 Update tile loading to use imagecache and new data.py auto-converting of paths.
Simon Cross <hodgestar@gmail.com>
parents: 30
diff changeset
34 self.tiles[n] = FarmTile(abstract_dirpath + "/" + filename)
24
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
35
30
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
36 def sun(self, sun_on):
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
37 """Make it night."""
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
38 for tile in self.tiles:
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
39 if hasattr(tile, "sun"):
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
40 tile.sun(sun_on)
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
41 for sprite in self.sprites:
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
42 if hasattr(sprite, "sun"):
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
43 sprite.sun(sun_on)
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
44
24
7584453f4944 Add support for PNG tiles.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
45 class FarmTile(vid.Tile):
30
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
46
49
dd9d2a4dd494 Update tile loading to use imagecache and new data.py auto-converting of paths.
Simon Cross <hodgestar@gmail.com>
parents: 30
diff changeset
47 def __init__(self, image_name):
dd9d2a4dd494 Update tile loading to use imagecache and new data.py auto-converting of paths.
Simon Cross <hodgestar@gmail.com>
parents: 30
diff changeset
48 self.day_image = imagecache.load_image(image_name)
dd9d2a4dd494 Update tile loading to use imagecache and new data.py auto-converting of paths.
Simon Cross <hodgestar@gmail.com>
parents: 30
diff changeset
49 self.night_image = imagecache.load_image(image_name, ("night",))
30
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
50 self.image = self.day_image
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
51
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
52 def sun(self, sun_on):
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
53 if sun_on:
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 else:
2eec29085060 Color night and day.
Simon Cross <hodgestar@gmail.com>
parents: 24
diff changeset
56 self.image = self.night_image