view skaapsteker/levelscene.py @ 40:fa1bb94cfa76

Re-factor drawing to blit to a clip rect in the One True Level Surface before blitting that to the screen.
author Simon Cross <hodgestar@gmail.com>
date Sun, 03 Apr 2011 20:24:47 +0200
parents e2837dd40607
children 4a9e26f1f35a
line wrap: on
line source

"""Scene wrapping a level object."""

import engine
import level
import physics
import pygame

class LevelScene(engine.Scene):

    def __init__(self, leveldef):
        self._level = level.Level(leveldef)
        self._level_surface = self._level.get_surface()
        self._pos = (0, 0)
        self._world = physics.World()

    def draw(self, screen_surface):
        self._world.update()

        clip_rect = pygame.Rect(self._pos, screen_surface.get_size())
        self._level_surface.set_clip(clip_rect)

        self._level.draw(self._level_surface)
        self._world.draw(self._level_surface)

        screen_surface.blit(self._level_surface, (0, 0), area=clip_rect)

    def dispatch(self, ev):
        # handle events here!
        pass