Ajout d'un callback pour les clicks

This commit is contained in:
Tipragot 2023-11-01 22:56:59 +01:00
parent ac64907a25
commit 562d3a74ff

View file

@ -2,8 +2,9 @@
Un plugin permettant de savoir si l'on a cliqué sur une entité. Un plugin permettant de savoir si l'on a cliqué sur une entité.
""" """
from typing import Callable
from engine import GlobalPlugin from engine import GlobalPlugin
from engine.ecs import World from engine.ecs import Entity, World
from plugins.hover import Hovered from plugins.hover import Hovered
from plugins.inputs import Pressed from plugins.inputs import Pressed
from plugins.render import Sprite 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): def __update_clicked(world: World):
""" """
Met à jour les composants `Clicked`. Met à jour les composants `Clicked`.
@ -24,6 +34,8 @@ def __update_clicked(world: World):
for entity in sprite_entities: for entity in sprite_entities:
if Hovered in entity and mouse_click: if Hovered in entity and mouse_click:
entity[Clicked] = Clicked() entity[Clicked] = Clicked()
if Clickable in entity:
entity[Clickable].callback(world, entity)
else: else:
del entity[Clicked] del entity[Clicked]