41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
|
import pygame
|
||
|
from .demos import aabb, vec_proj
|
||
|
from . import text, HEIGHT
|
||
|
from .colors import *
|
||
|
|
||
|
class Screen:
|
||
|
|
||
|
def __init__(self):
|
||
|
self.demos = [
|
||
|
vec_proj.VecProj(),
|
||
|
aabb.AABBDistance(),
|
||
|
aabb.PointAABBDistance(),
|
||
|
]
|
||
|
self.demo = 0
|
||
|
|
||
|
def handle_input(self):
|
||
|
for event in pygame.event.get(pygame.KEYDOWN):
|
||
|
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.draw(surface,
|
||
|
(10, y_offset + i * 20),
|
||
|
CYAN if self.demo == i else WHITE,
|
||
|
self.demos[i].title)
|
||
|
|
||
|
def render(self, surface):
|
||
|
self.handle_input()
|
||
|
|
||
|
self.demos[self.demo].render(surface)
|
||
|
|
||
|
self.draw_demo_list(surface)
|