Beispiel #1
0
 def render(self,
            screen: pygame.Surface,
            screen_rect: Rect,
            *,
            debug=False):
     screen.fill(self.background.rgb_255)
     for obj in self.game_objects:
         for renderer in obj.renderers:
             if renderer.image is not None and renderer.rect is not None:
                 rel = renderer.rect.relative_rect(screen_rect)
                 if not rel.collide_rect(Rect0011):
                     if debug:
                         print(
                             f"Did not render '{renderer}' of object '{obj}' (Not on screen)"
                         )
                     continue
                 rect_on_screen = rel.scale_wh(screen.get_size())
                 img = pygame.transform.scale(renderer.image,
                                              rect_on_screen.wh.rounded)
                 screen.blit(img, rect_on_screen.xy.rounded)
             else:
                 if debug:
                     print(
                         f"Did not render '{renderer}' of object '{obj}' (No Image or Rect)"
                     )
         if debug and not obj.renderers:
             print(f"Did not render  object '{obj}' (No Renderer)")
         if obj.transform and debug:
             t = obj.transform
             p1 = (screen_rect.relative_point(t.pos)
                   @ screen.get_size()).rounded
             p2 = (screen_rect.relative_point(t.pos + Vector.from_polar(
                 math.radians(-t.rotation), 1)) @ screen.get_size()).rounded
             pygame.draw.circle(screen, (255, 0, 0), p1, 5)
             pygame.draw.line(screen, (0, 255, 0), p1, p2, 3)
         elif debug:
             print(f"Did not debug object '{obj}' (No Transform)")