import pygame from .demos import aabb, vec_proj, sat from . import HEIGHT from .colors import * from .draw import text_screen class Screen: def __init__(self): self.demos = [ vec_proj.VecProj(), aabb.AABBDistance(), aabb.PointAABBDistance(), sat.SeparatingAxisTheorem(), ] self.demo = 0 def handle_input(self): for event in pygame.event.get(pygame.KEYDOWN): self.demos[self.demo].handle_key_down(event.key) if event.key == pygame.K_DOWN: self.demo += 1 if self.demo >= len(self.demos): self.demo = 0 elif event.key == pygame.K_UP: self.demo -= 1 if self.demo < 0: self.demo = len(self.demos) - 1 def draw_demo_list(self, surface): y_offset = 10 for i in range(len(self.demos)): text_screen(surface, CYAN if self.demo == i else WHITE, (10, y_offset + i * 20), self.demos[i].title) def render(self, surface): self.handle_input() self.demos[self.demo].render(surface) self.draw_demo_list(surface)