From ac64907a25d9e06c6519512cfb1118f60f10b27e Mon Sep 17 00:00:00 2001 From: Tipragot Date: Wed, 1 Nov 2023 22:53:36 +0100 Subject: [PATCH] Plugin pour le click de souris --- src/plugins/click.py | 36 ++++++++++++++++++++++++++++++++++++ src/plugins/defaults.py | 2 ++ 2 files changed, 38 insertions(+) create mode 100644 src/plugins/click.py diff --git a/src/plugins/click.py b/src/plugins/click.py new file mode 100644 index 0000000..36a79a7 --- /dev/null +++ b/src/plugins/click.py @@ -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], + [], + [], +) diff --git a/src/plugins/defaults.py b/src/plugins/defaults.py index 8e2913d..6865776 100644 --- a/src/plugins/defaults.py +++ b/src/plugins/defaults.py @@ -5,6 +5,7 @@ Plugin qui rassemple tous les plugins globaux. from plugins import ( animation, assets, + click, coroutine, display, hover, @@ -22,6 +23,7 @@ PLUGIN = ( + assets.PLUGIN + inputs.PLUGIN + hover.PLUGIN + + click.PLUGIN + coroutine.PLUGIN + sound.PLUGIN + text.PLUGIN