changeset 24:7584453f4944

Add support for PNG tiles.
author Simon Cross <hodgestar@gmail.com>
date Sun, 30 Aug 2009 18:11:30 +0000
parents df537fecf844
children 6d6ab0c1479d
files gamelib/gameboard.py gamelib/tiles.py
diffstat 2 files changed, 42 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/gamelib/gameboard.py	Sun Aug 30 18:00:44 2009 +0000
+++ b/gamelib/gameboard.py	Sun Aug 30 18:11:30 2009 +0000
@@ -1,9 +1,9 @@
 import random
 
-from pgu import gui, tilevid
 from pygame.locals import MOUSEBUTTONDOWN
 
 import data
+import tiles
 
 
 class GameBoard(object):
@@ -11,12 +11,14 @@
     TOOLBAR_WIDTH = 22
 
     def __init__(self):
-        self.tv = tilevid.Tilevid()
+        self.tv = tiles.FarmVid()
         self.tv.tga_load_tiles(data.filepath('tiles.tga'), self.TILE_DIMENSIONS)
+        self.tv.png_folder_load_tiles(data.filepath('tiles'))
         self.tv.tga_load_level(data.filepath('level1.tga'))
 
-        self.tools = tilevid.Tilevid()
+        self.tools = tiles.FarmVid()
         self.tools.tga_load_tiles(data.filepath('tiles.tga'), self.TILE_DIMENSIONS)
+        self.tools.png_folder_load_tiles(data.filepath('tiles'))
         self.populate_toolbar()
 
         self.selected_tool = None
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gamelib/tiles.py	Sun Aug 30 18:11:30 2009 +0000
@@ -0,0 +1,37 @@
+"""Extension to pgu's tilevid."""
+
+from pgu import tilevid, vid
+import pygame
+import os
+
+TILE_MAP = {
+    0: "woodland",
+    1: "grassland",
+    2: "fence",
+    3: "henhouse",
+    4: "chicken",
+}
+
+REVERSE_TILE_MAP = dict((v, k) for k, v in TILE_MAP.iteritems())
+
+class FarmVid(tilevid.Tilevid):
+    """Extension of pgu's TileVid class to handle the complications
+       of raising chickens.
+       """
+    def __init__(self):
+        tilevid.Tilevid.__init__(self)
+
+    def png_folder_load_tiles(self, path):
+        """Load tiles from a folder of PNG files."""
+        for dirpath, dirnames, filenames in os.walk(path):
+            for filename in filenames:
+                basename, ext = os.path.splitext(filename)
+                if ext != ".png":
+                    continue
+                if basename in REVERSE_TILE_MAP:
+                    n = REVERSE_TILE_MAP[basename]
+                    img = pygame.image.load(os.path.join(dirpath, filename)).convert_alpha()
+                    self.tiles[n] = FarmTile(img)
+
+class FarmTile(vid.Tile):
+    pass