changeset 8:66ae99f6903e

First stab at tile/level stuff.
author Jeremy Thurgood <firxen@gmail.com>
date Sun, 11 Sep 2011 12:50:55 +0200
parents 621a04bf1feb
children be8412c77e7b
files data/levels/dev.txt data/tiles/dev/randomtile.png mamba/data.py mamba/level.py
diffstat 4 files changed, 73 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data/levels/dev.txt	Sun Sep 11 12:50:55 2011 +0200
@@ -0,0 +1,11 @@
+dev
+aaaaaaaaaa
+a........a
+a........a
+a........a
+a........a
+a........a
+a........a
+a........a
+a........a
+aaaaaaaaaa
Binary file data/tiles/dev/randomtile.png has changed
--- a/mamba/data.py	Sun Sep 11 12:33:59 2011 +0200
+++ b/mamba/data.py	Sun Sep 11 12:50:55 2011 +0200
@@ -10,6 +10,9 @@
 
 import os
 
+import pygame
+
+
 data_py = os.path.abspath(os.path.dirname(__file__))
 data_dir = os.path.normpath(os.path.join(data_py, '..', 'data'))
 
@@ -17,12 +20,25 @@
 def filepath(filename):
     '''Determine the path to a file in the data directory.
     '''
+    filename = os.path.join(filename.split('/'))
     return os.path.join(data_dir, filename)
 
 
-def load(filename, mode='rb'):
+def load_file(filename, mode='rb'):
     '''Open a file in the data directory.
 
     "mode" is passed as the second arg to open().
     '''
     return open(os.path.join(data_dir, filename), mode)
+
+
+IMAGES = {}
+
+
+def load_image(filename):
+    if filename not in IMAGES:
+        IMAGES[filename] = pygame.image.load(filepath(filename))
+        if pygame.display.get_init():
+            IMAGES[filename] = IMAGES[filename].convert_alpha(
+                pygame.display.get_surface())
+    return IMAGES[filename]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mamba/level.py	Sun Sep 11 12:50:55 2011 +0200
@@ -0,0 +1,45 @@
+"""
+Level for our shiny game.
+"""
+
+from mamba.data import load_file, load_image
+
+
+TILE_MAP = {
+    '.': 'empty',
+    'a': 'randomtile',
+    }
+
+
+class Tileset(object):
+    def __init__(self, tileset_name):
+        self.name = tileset_name
+        self.tiles = {}
+
+    def load_tiles(self):
+        for k, v in TILE_MAP.items():
+            if v == 'empty':
+                img = None
+            else:
+                img = load_image('tiles/%s/%s.png' % (self.name, v))
+            self.tiles[k] = img
+
+    def __getitem__(self, key):
+        return self.tiles[key]
+
+
+class Level(object):
+    def __init__(self, level_name):
+        self.level_name = level_name
+        self.load_level_data()
+
+    def load_level_data(self):
+        """
+        This file format it potentially yucky.
+        """
+        level_data = load_file('levels/%s.txt' % (self.level_name,))
+        self.tileset_name = level_data.readline()
+        self.tiles = Tileset(self.tileset_name)
+        tiles_ascii = level_data.readlines()
+        print "Tileset:", self.tileset_name
+        print "Tiles:", tiles_ascii