Plugin pour le click de souris

This commit is contained in:
Tipragot 2023-11-01 22:53:36 +01:00
parent 82e1222118
commit ac64907a25
2 changed files with 38 additions and 0 deletions

36
src/plugins/click.py Normal file
View file

@ -0,0 +1,36 @@
"""
Un plugin permettant de savoir si l'on a cliqué sur une entité.
"""
from engine import GlobalPlugin
from engine.ecs import World
from plugins.hover import Hovered
from plugins.inputs import Pressed
from plugins.render import Sprite
class Clicked:
"""
Component ajouté a toutes les entitées qui viennent d'être cliqué.
"""
def __update_clicked(world: World):
"""
Met à jour les composants `Clicked`.
"""
mouse_click = "button_1" in world[Pressed]
sprite_entities = world.query(Sprite)
for entity in sprite_entities:
if Hovered in entity and mouse_click:
entity[Clicked] = Clicked()
else:
del entity[Clicked]
PLUGIN = GlobalPlugin(
[],
[__update_clicked],
[],
[],
)

View file

@ -5,6 +5,7 @@ Plugin qui rassemple tous les plugins globaux.
from plugins import ( from plugins import (
animation, animation,
assets, assets,
click,
coroutine, coroutine,
display, display,
hover, hover,
@ -22,6 +23,7 @@ PLUGIN = (
+ assets.PLUGIN + assets.PLUGIN
+ inputs.PLUGIN + inputs.PLUGIN
+ hover.PLUGIN + hover.PLUGIN
+ click.PLUGIN
+ coroutine.PLUGIN + coroutine.PLUGIN
+ sound.PLUGIN + sound.PLUGIN
+ text.PLUGIN + text.PLUGIN