Handles mouse input (prototype)

This commit is contained in:
nejdetckenobi committed 2026-10-11 18:21:07 +03:00
1 parent fe9fc14849
commit 0e3f07938c
5 files changed
+76 -6

No files matched your search

+18 -3
View File
@@ -1,8 +1,9 @@
from random import randint
import pyglet
from pyglet.window.mouse import LEFT
from pyglet.shapes import Circle, Line
from components import PlanetMarker, SpaceShipMarker
from components import PlanetMarker, Position, Radius, SpaceShipMarker, Vector2D
from helpers import generate_random_planet, generate_random_spaceship
from libs.ecs.world import World
from libs.ecs.event import EventBus
@@ -42,11 +43,25 @@ def on_draw():
for _, component_storage in world.query(SpaceShipMarker):
component_storage[Line].draw()
for _, component_storage in world.query(SpaceShipMarker):
component_storage[Circle].draw()
for _, component_storage in world.query(PlanetMarker):
component_storage[Circle].draw()
for _, component_storage in world.query(SpaceShipMarker):
component_storage[Circle].draw()
@window.event
def on_mouse_release(x, y, button, modifiers):
if button == LEFT:
closest_entity, component_storage = min(
world.query(PlanetMarker),
key=lambda p: abs(p[1][Position] - Vector2D(x, y)),
)
pos = component_storage[Position]
if component_storage[Radius].value < abs(pos - Vector2D(x, y)):
print("NO PLANET")
else:
print("PLANET")
def on_update(dt):