def render_level(self): vertices = [] tex_coords = [] for x in xrange(self._level.size_x): for y in xrange(self._level.size_y): x1 = x * 8 x2 = x1 + 8 y1 = y * 8 y2 = y1 + 8 for entity in self._level.position_system.get_entities_at( x, y): renderable = entity.get(LayoutRenderable) if renderable: tile = renderable.tile break else: continue # always add floor, because we wanna draw walls above floor vertices.extend((x1, y1, x2, y1, x2, y2, x1, y2)) tex_coords.extend(floor_tex.tex_coords) if tile == LayoutGenerator.TILE_WALL: # if we got wall, draw it above floor tex = get_wall_tex(self._level.get_wall_transition(x, y)) vertices.extend((x1, y1, x2, y1, x2, y2, x1, y2)) tex_coords.extend(tex.tex_coords) group = TextureGroup( dungeon_tex, pyglet.graphics.OrderedGroup(Position.ORDER_FLOOR, self._level_group)) self._level_vlist = self._batch.add( len(vertices) / 2, pyglet.gl.GL_QUADS, group, ('v2i/static', vertices), ('t3f/statc', tex_coords), ) group = pyglet.graphics.OrderedGroup(Position.ORDER_PLAYER + 1, self._level_group) self._light_overlay = LightOverlay(self._level.size_x, self._level.size_y, self._batch, group)