From 562d3a74ff6c9d4e7b4418cb2dbdb16be91ec6ba Mon Sep 17 00:00:00 2001 From: Tipragot Date: Wed, 1 Nov 2023 22:56:59 +0100 Subject: [PATCH] Ajout d'un callback pour les clicks --- src/plugins/click.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/plugins/click.py b/src/plugins/click.py index 36a79a7..d4548fa 100644 --- a/src/plugins/click.py +++ b/src/plugins/click.py @@ -2,8 +2,9 @@ Un plugin permettant de savoir si l'on a cliqué sur une entité. """ +from typing import Callable from engine import GlobalPlugin -from engine.ecs import World +from engine.ecs import Entity, World from plugins.hover import Hovered from plugins.inputs import Pressed from plugins.render import Sprite @@ -15,6 +16,15 @@ class Clicked: """ +class Clickable: + """ + Composant qui permet d'executer une fonction lorsqu'une entité est cliquee. + """ + + def __init__(self, callback: Callable[[World, Entity], object]): + self.callback = callback + + def __update_clicked(world: World): """ Met à jour les composants `Clicked`. @@ -24,6 +34,8 @@ def __update_clicked(world: World): for entity in sprite_entities: if Hovered in entity and mouse_click: entity[Clicked] = Clicked() + if Clickable in entity: + entity[Clickable].callback(world, entity) else: del entity[Clicked]