Skip to content

Commit

Permalink
Fix missing draw at start
Browse files Browse the repository at this point in the history
  • Loading branch information
lordmauve committed Oct 31, 2021
1 parent 92d561c commit 126f7cf
Showing 1 changed file with 28 additions and 9 deletions.
37 changes: 28 additions & 9 deletions pgzero/game.py
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,33 @@ def run(self):
pygame.display.quit()
pygame.mixer.quit()

def inject_global_handlers(self):
"""Inject handlers provide by the Pygame Zero system.
Some of these wrap user handlers so must be injected later.
"""
self.handlers[pygame.QUIT] = lambda e: sys.exit(0)
self.handlers[pygame.VIDEOEXPOSE] = lambda e: None

user_key_down = self.handlers.get(pygame.KEYDOWN)
user_key_up = self.handlers.get(pygame.KEYUP)

def key_down(event):
if event.key == pygame.K_q and \
event.mod & (pygame.KMOD_CTRL | pygame.KMOD_META):
sys.exit(0)
self.keyboard._press(event.key)
if user_key_down:
return user_key_down(event)

def key_up(event):
self.keyboard._release(event.key)
if user_key_up:
return user_key_up(event)

self.handlers[pygame.KEYDOWN] = key_down
self.handlers[pygame.KEYUP] = key_up

def handle_events(self, dt, update) -> bool:
"""Handle all events for the current frame.
Expand All @@ -246,15 +273,6 @@ def handle_events(self, dt, update) -> bool:
updated = False

for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit(0)
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q and \
event.mod & (pygame.KMOD_CTRL | pygame.KMOD_META):
sys.exit(0)
self.keyboard._press(event.key)
elif event.type == pygame.KEYUP:
self.keyboard._release(event.key)
handler = self.handlers.get(event.type)
if handler:
handler(event)
Expand All @@ -278,6 +296,7 @@ def mainloop(self):
update = self.get_update_func()
draw = self.get_draw_func()
self.load_handlers()
self.inject_global_handlers()

logic_timer = Timer('logic', print=self.fps)
draw_timer = Timer('draw', print=self.fps)
Expand Down

0 comments on commit 126f7cf

Please sign in to comment.