geom-demo/geom/screen.py

46 lines
1.3 KiB
Python
Raw Normal View History

2020-11-13 07:46:31 -07:00
import pygame
2020-11-16 02:06:11 -07:00
from .demos import aabb, vec_proj, sat, reflection
from . import HEIGHT
2020-11-13 07:46:31 -07:00
from .colors import *
from .draw import text_screen
2020-11-13 07:46:31 -07:00
class Screen:
def __init__(self):
self.demos = [
vec_proj.VecProj(),
2020-11-16 02:06:11 -07:00
reflection.Reflection(),
2020-11-13 07:46:31 -07:00
aabb.AABBDistance(),
aabb.PointAABBDistance(),
2020-11-14 11:12:00 -07:00
sat.SeparatingAxisTheorem(),
2020-11-13 07:46:31 -07:00
]
self.demo = 0
def handle_input(self):
for event in pygame.event.get(pygame.KEYDOWN):
self.demos[self.demo].handle_key_down(event.key)
2020-11-13 07:46:31 -07:00
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,
2020-11-13 07:46:31 -07:00
CYAN if self.demo == i else WHITE,
(10, y_offset + i * 20),
2020-11-13 07:46:31 -07:00
self.demos[i].title)
def render(self, surface):
self.handle_input()
self.demos[self.demo].render(surface)
self.draw_demo_list(surface)