raylu преди 12 години
родител
ревизия
e9e1e9b7bf
променени са 1 файла, в които са добавени 13 реда и са изтрити 14 реда
  1. 13 14
      tileset.py

+ 13 - 14
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: