diff --git a/examples/06_full_blown_app_structure.py b/examples/06_full_blown_app_structure.py index 8564420..402b6de 100644 --- a/examples/06_full_blown_app_structure.py +++ b/examples/06_full_blown_app_structure.py @@ -42,7 +42,7 @@ async def confirm_before_quitting(*, priority, **kwargs: Unpack[apg.CommonParams apg.quit() -async def title_scene(*, scene_switcher, userdata, **kwargs: Unpack[apg.CommonParams]): +async def title_scene(*, switcher, userdata, **kwargs: Unpack[apg.CommonParams]): draw_target = kwargs["draw_target"] target_rect = draw_target.get_rect() font = userdata['font'] @@ -61,11 +61,11 @@ async def title_scene(*, scene_switcher, userdata, **kwargs: Unpack[apg.CommonPa priority=0x100, **kwargs)) await e_start.wait() - scene_switcher.switch_to(menu_scene, FadeTransition()) + switcher.switch_to(menu_scene, FadeTransition()) await apg.sleep_forever() -async def menu_scene(*, scene_switcher, userdata, **kwargs: Unpack[apg.CommonParams]): +async def menu_scene(*, switcher, userdata, **kwargs: Unpack[apg.CommonParams]): draw_target = kwargs["draw_target"] target_rect = draw_target.get_rect() font = userdata['font'] @@ -85,11 +85,11 @@ async def menu_scene(*, scene_switcher, userdata, **kwargs: Unpack[apg.CommonPar priority=0x100, **kwargs)) tasks = await apg.wait_any(e_play.wait(), e_back.wait()) next_scene = title_scene if tasks[1].finished else game_scene - scene_switcher.switch_to(next_scene, FadeTransition()) + switcher.switch_to(next_scene, FadeTransition()) await apg.sleep_forever() -async def game_scene(*, scene_switcher, userdata, **kwargs: Unpack[apg.CommonParams]): +async def game_scene(*, switcher, userdata, **kwargs: Unpack[apg.CommonParams]): draw_target = kwargs["draw_target"] target_rect = draw_target.get_rect() font = userdata['font'] @@ -103,7 +103,7 @@ async def game_scene(*, scene_switcher, userdata, **kwargs: Unpack[apg.CommonPar while True: await clock.anim_attrs(dest, y=dest.y + 160, duration=800) await clock.anim_attrs(dest, y=dest.y - 160, duration=800) - scene_switcher.switch_to(title_scene, FadeTransition()) + switcher.switch_to(title_scene, FadeTransition()) await apg.sleep_forever() diff --git a/examples/scene_transition_showcase.py b/examples/scene_transition_showcase.py index 97278c8..02a5ad5 100644 --- a/examples/scene_transition_showcase.py +++ b/examples/scene_transition_showcase.py @@ -31,13 +31,13 @@ async def main(**kwargs: Unpack[apg.CommonParams]): await SceneSwitcher().run(show_transition, priority=0xFFFFFD00, userdata=userdata, **kwargs) -async def show_transition(*, scene_switcher, userdata, executor, sdlevent, draw_target, **__): +async def show_transition(*, switcher, userdata, executor, sdlevent, draw_target, **__): font = userdata['font'] text, transition = next(userdata['transitions']) img = font.render(text, True, "white").convert_alpha() with executor.register(partial(draw_target.blit, img, img.get_rect(center=draw_target.get_rect().center)), priority=0x100): await sdlevent.wait(pygame.MOUSEBUTTONDOWN, priority=0) - scene_switcher.switch_to(show_transition, transition) + switcher.switch_to(show_transition, transition) await apg.sleep_forever() diff --git a/examples/whack_a_human.py b/examples/whack_a_human.py index 04a937c..2321b89 100644 --- a/examples/whack_a_human.py +++ b/examples/whack_a_human.py @@ -182,7 +182,7 @@ async def confirm_and_quit(*, priority, font, **kwargs: Unpack[apg.CommonParams] apg.quit() -async def title_scene(*, scene_switcher, userdata: UserData, **kwargs: Unpack[apg.CommonParams]): +async def title_scene(*, switcher, userdata: UserData, **kwargs: Unpack[apg.CommonParams]): draw_target = kwargs["draw_target"] target_rect = draw_target.get_rect() font = userdata.font @@ -215,7 +215,7 @@ async def title_scene(*, scene_switcher, userdata: UserData, **kwargs: Unpack[ap images.update(load_images(cur)) userdata.sounds = load_sounds(cur) images["gift"] = pygame.transform.scale(images["gift"], (200, 200)) - scene_switcher.switch_to(game_scene, FadeTransition()) + switcher.switch_to(game_scene, FadeTransition()) await apg.sleep_forever() @@ -436,7 +436,7 @@ async def game_timer(dest: Rect, *, duration, color=THECOLORS["ivory"], priority await kwargs["clock"].anim_attrs(ctx, stop_angle=start_angle, duration=duration) -async def game_scene(*, scene_switcher, userdata: UserData, **kwargs: Unpack[apg.CommonParams]): +async def game_scene(*, switcher, userdata: UserData, **kwargs: Unpack[apg.CommonParams]): from random import randint, random clock = kwargs["clock"] draw_target = kwargs["draw_target"] @@ -468,11 +468,11 @@ async def game_scene(*, scene_switcher, userdata: UserData, **kwargs: Unpack[apg hole = inactive_holes.pop(randint(0, len(inactive_holes) - 1)) nursery.start(actions[random() > 0.8](score, speed, inactive_holes, hole_size=hole_size, pos=hole, userdata=userdata, **kwargs)) userdata.last_game_score = score.value - scene_switcher.switch_to(result_scene, FadeTransition(overlay_color=THECOLORS["white"], out_duration=1000, interval=1000, in_duration=500)) + switcher.switch_to(result_scene, FadeTransition(overlay_color=THECOLORS["white"], out_duration=1000, interval=1000, in_duration=500)) await apg.sleep_forever() -async def result_scene(*, scene_switcher, userdata: UserData, **kwargs: Unpack[apg.CommonParams]): +async def result_scene(*, switcher, userdata: UserData, **kwargs: Unpack[apg.CommonParams]): render = userdata.font.render draw_target = kwargs["draw_target"] target_rect = draw_target.get_rect() @@ -503,7 +503,7 @@ async def result_scene(*, scene_switcher, userdata: UserData, **kwargs: Unpack[a priority=0x100, **kwargs)) await kwargs["sdlevent"].wait(C.MOUSEBUTTONDOWN, priority=0x100) - scene_switcher.switch_to(title_scene, FadeTransition()) + switcher.switch_to(title_scene, FadeTransition()) await apg.sleep_forever() diff --git a/pyproject.toml b/pyproject.toml index 75f6746..0735315 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "asyncpygame" -version = "0.1.3" +version = "0.2.0.dev0" description = "Async/await-based framework for PyGame" authors = ["Nattōsai Mitō "] license = "MIT" diff --git a/src/asyncpygame/_utils.py b/src/asyncpygame/_utils.py index fbc03e4..5963a84 100644 --- a/src/asyncpygame/_utils.py +++ b/src/asyncpygame/_utils.py @@ -29,6 +29,8 @@ async def some_func(**kwargs: Unpack[CommonParams]): clock: Clock pygame_clock: pygame.time.Clock draw_target: Surface + switcher: None + userdata: None async def capture_current_frame(executor: PriorityExecutor, priority, source: Surface) -> Awaitable[Surface]: diff --git a/src/asyncpygame/scene_switcher.py b/src/asyncpygame/scene_switcher.py index 32bf7ac..4d4f2c1 100644 --- a/src/asyncpygame/scene_switcher.py +++ b/src/asyncpygame/scene_switcher.py @@ -27,7 +27,7 @@ async def my_transition(**common_params): yield # 3rd part - scene_switcher.switch_to(next_scene, my_transition) + switcher.switch_to(next_scene, my_transition) When your app switches from one scene to another, the transition between them will proceed as follows: @@ -55,7 +55,7 @@ async def no_transition(**common_params): ''' .. code-block:: - scene_switcher.switch_to(next_scene, no_transition) + switcher.switch_to(next_scene, no_transition) ''' yield yield @@ -77,7 +77,7 @@ async def run(self, first_scene, *, userdata: Any=None, priority, sdlevent, **kw :param userdata: Use this to share data between scenes without relying on global variables. ''' common_params = { - 'scene_switcher': self, + 'switcher': self, 'sdlevent': sdlevent, 'userdata': userdata, **kwargs} @@ -106,7 +106,7 @@ class FadeTransition: ''' .. code-block:: - scene_switcher.switch_to(next_scene, FadeTransition()) + switcher.switch_to(next_scene, FadeTransition()) ''' def __init__(self, *, overlay_color='black', out_duration=300, in_duration=300, interval=100): ''' @@ -147,7 +147,7 @@ class SlideTransition: ''' .. code-block:: - scene_switcher.switch_to(next_scene, SlideTransition()) + switcher.switch_to(next_scene, SlideTransition()) ''' _valid_directions = ('right', 'left', 'up', 'down', )