Ajout du menu du jeu

This commit is contained in:
Tipragot 2023-11-02 16:46:44 +01:00
parent 873020f490
commit 75dfa7968b
13 changed files with 68 additions and 40 deletions

View file

Before

Width:  |  Height:  |  Size: 682 KiB

After

Width:  |  Height:  |  Size: 682 KiB

View file

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View file

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View file

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View file

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View file

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View file

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View file

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View file

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View file

@ -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"),
)

View file

@ -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:

3
src/scenes/__init__.py Normal file
View file

@ -0,0 +1,3 @@
"""
Module contenant toutes les scènes du jeu.
"""

58
src/scenes/menu.py Normal file
View file

@ -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],
[],
[],
)