Mercurial > mamba
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()] |