From e9e1e9b7bf1da0945b253c07a9848d2de3a2a495 Mon Sep 17 00:00:00 2001 From: raylu Date: Sun, 13 Oct 2013 23:29:24 -0700 Subject: pre-render level --- tileset.py | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) (limited to 'tileset.py') diff --git a/tileset.py b/tileset.py index c13d863..539b72f 100644 --- a/tileset.py +++ b/tileset.py @@ -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: -- cgit v1.2.3