comparison mamba/level.py @ 331:0c25bca380de

Support for loading level from string.
author Simon Cross <hodgestar@gmail.com>
date Fri, 16 Sep 2011 21:04:42 +0200
parents e89702425a73
children 868a53b96c29
comparison
equal deleted inserted replaced
330:a2724d0078d8 331:0c25bca380de
7 from pygame.sprite import RenderUpdates 7 from pygame.sprite import RenderUpdates
8 8
9 from mamba.constants import UP, DOWN, LEFT, RIGHT 9 from mamba.constants import UP, DOWN, LEFT, RIGHT
10 from mamba.data import load_file 10 from mamba.data import load_file
11 from mamba import sprites 11 from mamba import sprites
12
13 from StringIO import StringIO
12 14
13 15
14 class InvalidMapError(Exception): 16 class InvalidMapError(Exception):
15 pass 17 pass
16 18
85 tile.set_tile_pos(tile_pos) 87 tile.set_tile_pos(tile_pos)
86 return tile 88 return tile
87 89
88 90
89 class Level(object): 91 class Level(object):
90 def __init__(self, level_name): 92 def __init__(self, level_name, source=None):
91 self.level_name = level_name 93 self.level_name = level_name
94 self.source = source
92 self.load_level_data() 95 self.load_level_data()
93 96
94 def load_level_data(self): 97 def load_level_data(self):
95 """ 98 """
96 This file format is potentially yucky. 99 This file format is potentially yucky.
97 """ 100 """
98 level_data = load_file('levels/%s.txt' % (self.level_name,)) 101 if self.source is not None:
102 level_data = StringIO(self.source)
103 else:
104 level_data = load_file('levels/%s.txt' % (self.level_name,))
99 self.name = level_data.readline().strip() 105 self.name = level_data.readline().strip()
100 tileset_name = level_data.readline().strip() 106 tileset_name = level_data.readline().strip()
101 self.tileset = Tileset(tileset_name) 107 self.tileset = Tileset(tileset_name)
102 self.background_track = level_data.readline().strip() 108 self.background_track = level_data.readline().strip()
103 tiles_ascii = [line.strip() for line in level_data.readlines()] 109 tiles_ascii = [line.strip() for line in level_data.readlines()]