summaryrefslogtreecommitdiffstats
path: root/tileset.py
diff options
context:
space:
mode:
authorraylu <ray.lu@getclever.com>2013-10-13 23:29:24 -0700
committerraylu <ray.lu@getclever.com>2013-10-14 00:08:18 -0700
commite9e1e9b7bf1da0945b253c07a9848d2de3a2a495 (patch)
treefdee6848995da6de24056bef6078e76184ce2154 /tileset.py
parenteb4b658fb12df468b0281bf599d94f5327f2b835 (diff)
downloadtroll-e9e1e9b7bf1da0945b253c07a9848d2de3a2a495.tar.xz
pre-render level
Diffstat (limited to 'tileset.py')
-rw-r--r--tileset.py27
1 files changed, 13 insertions, 14 deletions
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: