diff --git a/assets save/textures/menu/background.png b/assets/menu/background.png similarity index 100% rename from assets save/textures/menu/background.png rename to assets/menu/background.png diff --git a/assets save/textures/menu/button_classique.png b/assets/menu/button_classique.png similarity index 100% rename from assets save/textures/menu/button_classique.png rename to assets/menu/button_classique.png diff --git a/assets save/textures/menu/button_classique_hover.png b/assets/menu/button_classique_hover.png similarity index 100% rename from assets save/textures/menu/button_classique_hover.png rename to assets/menu/button_classique_hover.png diff --git a/assets save/textures/menu/button_histoire.png b/assets/menu/button_histoire.png similarity index 100% rename from assets save/textures/menu/button_histoire.png rename to assets/menu/button_histoire.png diff --git a/assets save/textures/menu/button_histoire_hover.png b/assets/menu/button_histoire_hover.png similarity index 100% rename from assets save/textures/menu/button_histoire_hover.png rename to assets/menu/button_histoire_hover.png diff --git a/assets save/textures/menu/button_menteur.png b/assets/menu/button_menteur.png similarity index 100% rename from assets save/textures/menu/button_menteur.png rename to assets/menu/button_menteur.png diff --git a/assets save/textures/menu/button_menteur_hover.png b/assets/menu/button_menteur_hover.png similarity index 100% rename from assets save/textures/menu/button_menteur_hover.png rename to assets/menu/button_menteur_hover.png diff --git a/assets save/textures/menu/button_tricheur.png b/assets/menu/button_tricheur.png similarity index 100% rename from assets save/textures/menu/button_tricheur.png rename to assets/menu/button_tricheur.png diff --git a/assets save/textures/menu/button_tricheur_hover.png b/assets/menu/button_tricheur_hover.png similarity index 100% rename from assets save/textures/menu/button_tricheur_hover.png rename to assets/menu/button_tricheur_hover.png diff --git a/src/main.py b/src/main.py index 0c44023..9022c1c 100644 --- a/src/main.py +++ b/src/main.py @@ -2,49 +2,12 @@ Module d'exemple de l'utilisation du moteur de jeu. """ -from engine import Scene, start_game -from engine.ecs import World +from engine import start_game from plugins import assets, defaults -from plugins.animation import Animation -from plugins.coroutine import Coroutine, condition, wait -from plugins.hover import HoveredTexture -from plugins.inputs import MousePosition - - -def super_fonction_du_turfu(world: World): - """ - Fonction du turfu qui s'execute sur plusieurs frames. - """ - print("LOL") - yield wait(10.0) - print("LOL 10 secondes après") - - animation = Animation("animations/intro") - world.new_entity().set(animation) - print("Started animation") - yield animation.wait() - print("Animation ended") - - yield condition(lambda world: world.get(MousePosition).x > 500) - print("La souris est a droite !") +from scenes import menu start_game( defaults.PLUGIN, - assets.loading_scene( - Scene( - [ - lambda world: world.new_entity().set( - Coroutine(super_fonction_du_turfu(world)), - HoveredTexture( - world[assets.Assets].get_texture("directory"), - world[assets.Assets].get_texture("attack_point"), - ), - ) - ], - [], - [], - ), - "textures", - ), + assets.loading_scene(menu.SCENE, "menu"), ) diff --git a/src/plugins/inputs.py b/src/plugins/inputs.py index 0d6251e..7c7f59b 100644 --- a/src/plugins/inputs.py +++ b/src/plugins/inputs.py @@ -52,6 +52,10 @@ def __update_input(world: World): held = world[Held] released = world[Released] + # On clear les touches pressées et relachées + pressed.clear() + released.clear() + # On récupère les évenements de pygame for event in pygame.event.get(): if event.type == pygame.QUIT: diff --git a/src/scenes/__init__.py b/src/scenes/__init__.py new file mode 100644 index 0000000..44fb452 --- /dev/null +++ b/src/scenes/__init__.py @@ -0,0 +1,3 @@ +""" +Module contenant toutes les scènes du jeu. +""" diff --git a/src/scenes/menu.py b/src/scenes/menu.py new file mode 100644 index 0000000..5ad7f36 --- /dev/null +++ b/src/scenes/menu.py @@ -0,0 +1,58 @@ +""" +La scène du menu principal du jeu. + +Dans cette scène nous pouvons choisir le mode de jeu. +""" + +from engine import CurrentScene, Scene +from engine.ecs import Entity, World +from engine.math import Vec2 +from plugins import render +from plugins.assets import Assets +from plugins.click import Clickable +from plugins.hover import HoveredTexture +from plugins.render import Sprite +from plugins.sound import Sound + + +def __create_button(world: World, assets: Assets, i: int, name: str): + """ + Ajoute un bouton au monde. + """ + world.new_entity().set( + Sprite( + assets.error_texture, + Vec2(render.WIDTH / 2, 450 + 150 * i), + origin=Vec2(0.5), + ), + HoveredTexture( + assets.get_texture(f"button_{name}"), + assets.get_texture(f"button_{name}_hover"), + ), + Clickable(lambda world, entity: __on_click_butons(world, entity, name)), + ) + + +def __on_click_butons(world: World, entity: Entity, name: str): + """ + Fonction qui s'execute quand on clique sur un bouton. + """ + entity[Sound] = Sound(world[Assets].get_sound("click")) + + +def __spawn_elements(world: World): + """ + Ajoute les éléments du menu dans le monde. + """ + assets = world[Assets] + world.new_entity().set(Sprite(assets.get_texture("background"))) + scenes_name = ["classique", "menteur", "tricheur", "histoire"] + for i, name in enumerate(scenes_name): + __create_button(world, assets, i, name) + + +SCENE = Scene( + [__spawn_elements], + [], + [], +)