diff options
author | raylu <ray.lu@getclever.com> | 2013-10-13 23:29:24 -0700 |
---|---|---|
committer | raylu <ray.lu@getclever.com> | 2013-10-14 00:08:18 -0700 |
commit | e9e1e9b7bf1da0945b253c07a9848d2de3a2a495 (patch) | |
tree | fdee6848995da6de24056bef6078e76184ce2154 /tileset.py | |
parent | eb4b658fb12df468b0281bf599d94f5327f2b835 (diff) | |
download | troll-e9e1e9b7bf1da0945b253c07a9848d2de3a2a495.tar.xz |
pre-render level
Diffstat (limited to 'tileset.py')
-rw-r--r-- | tileset.py | 27 |
1 files changed, 13 insertions, 14 deletions
@@ -41,21 +41,11 @@ class Tileset(object): y *= self.TILESIZE self.screen.blit(tileset, pos, (x, y, self.TILESIZE, self.TILESIZE)) - def _render_layer(self, layer): - for i, tile in enumerate(layer): - y, x = divmod(i, self.MAPSIZE) - x *= self.TILESIZE - y *= self.TILESIZE - if tile != 0: - tile_y, tile_x = divmod(tile - 1, self.TILESIZE) # those 1-indexing fuckers - self._render(tile_x, tile_y, (x, y)) - def render_person(self, pos, direction): self._render(0, 13, pos, direction) def render_level(self): - self._render_layer(self.floor) - self._render_layer(self.walls) + self.screen.blit(self.surface, (0, 0)) def load_level(self): # https://bitbucket.org/r1chardj0n3s/pygame-tutorial/src/a383dd24790d/tmx.py#cl-241 level_data = ElementTree.parse('level1.tmx').getroot() @@ -71,11 +61,20 @@ class Tileset(object): array = list(struct.unpack('<{}i'.format(len(data)/4), data)) loaded[name] = array - # load floor - self.floor = loaded['floor'] + # render level + surface = pygame.Surface((800, 800)) + tileset = self.tileset[self.RIGHT] + for layer in [loaded['floor'], loaded['wall']]: + for i, tile in enumerate(layer): + if tile != 0: + y, x = divmod(i, self.MAPSIZE) + pos = (x * self.TILESIZE, y * self.TILESIZE) + tile_y, tile_x = divmod(tile - 1, self.TILESIZE) # those 1-indexing fuckers + area = (tile_x * self.TILESIZE, tile_y * self.TILESIZE, self.TILESIZE, self.TILESIZE) + surface.blit(tileset, pos, area) + self.surface = surface # load wall - self.walls = loaded['wall'] collisions = set() for i, tile in enumerate(loaded['wall']): if tile != 0: |