Source code for ppb.scenes

from typing import Callable
from typing import Iterator
from typing import Sequence

from ppb.camera import Camera
from ppb.gomlib import GameObject


[docs] class Scene(GameObject): # Background color, in RGB, each channel is 0-255 background_color: Sequence[int] = (0, 0, 100) camera_class = Camera show_cursor = True def __init__(self, *, set_up: Callable = None, **props): super().__init__(**props) if set_up is not None: set_up(self) @property def main_camera(self) -> Camera: try: camera = next(self.children.get(tag="main_camera")) except StopIteration: camera = None return camera @main_camera.setter def main_camera(self, value: Camera): for camera in self.children.get(tag="main_camera"): self.children.remove(camera) self.children.add(value, tags=["main_camera"])
[docs] def sprite_layers(self) -> Iterator: """ Return an iterator of the contained Sprites in ascending layer order. Sprites are part of a layer if they have a layer attribute equal to that layer value. Sprites without a layer attribute are considered layer 0. This function exists primarily to assist the Renderer subsystem, but will be left public for other creative uses. """ return sorted(self, key=lambda s: getattr(s, "layer", 0))