コード例 #1
0
ファイル: render.py プロジェクト: osm3000/dungeons
    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)