Skip to content

Commit 9afb94d

Browse files
committed
Updated pause functionality, in accordance with PR comments
Moving the logic for need_redraw to more relevant places
1 parent 3467b47 commit 9afb94d

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

examples/asteroids/main.py

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import operator
44

55
from pygame.math import Vector2
6-
from pgzero.builtins import pause, is_paused
76

87
from space import create_star_scape
98
from actors import Player, Asteroid

pgzero/game.py

+15-8
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ def reinit_screen(self):
7777
w = getattr(mod, 'WIDTH', 800)
7878
h = getattr(mod, 'HEIGHT', 600)
7979
if w != self.width or h != self.height:
80+
self.need_redraw = True
8081
self.screen = pygame.display.set_mode((w, h), DISPLAY_FLAGS)
8182
if hasattr(self.mod, 'screen'):
8283
self.mod.screen.surface = self.screen
@@ -199,9 +200,13 @@ def get_update_func(self):
199200
except AttributeError:
200201
return None
201202
else:
202-
if update.__code__.co_argcount == 0:
203-
return lambda dt: update()
204-
return update
203+
def update_wrapper(dt):
204+
if update.__code__.co_argcount == 0:
205+
update()
206+
else:
207+
update(dt)
208+
self.need_redraw = True
209+
return update_wrapper
205210

206211
def get_draw_func(self):
207212
"""Get a draw function.
@@ -250,7 +255,7 @@ def mainloop(self):
250255

251256
pgzclock = pgzero.clock.clock
252257

253-
self.need_redraw = not paused
258+
self.need_redraw = True
254259
while True:
255260
# TODO: Use asyncio.sleep() for frame delay if accurate enough
256261
yield from asyncio.sleep(0)
@@ -268,13 +273,15 @@ def mainloop(self):
268273
self.keyboard._release(event.key)
269274
self.dispatch_event(event)
270275

271-
272-
if update and not paused:
276+
if not paused:
273277
pgzclock.tick(dt)
274-
update(dt)
278+
279+
if update:
280+
update(dt)
281+
275282

276283
screen_change = self.reinit_screen()
277-
if screen_change or update or pgzclock.fired or self.need_redraw:
284+
if pgzclock.fired or self.need_redraw:
278285
draw()
279286
pygame.display.flip()
280287
self.need_redraw = False

0 commit comments

Comments
 (0)