from random import randint import pyglet from pyglet.shapes import Circle, Line from components import PlanetMarker, SpaceShipMarker from helpers import generate_random_planet, generate_random_spaceship from libs.ecs.world import World from libs.ecs.event import EventBus from systems import ( PlanetRenderSyncSystem, SpaceShipKillSystem, SpaceShipRenderSyncSystem, SpaceShipTravelSystem, ) from settings import FPS, FULLSCREEN, SCREEN_WIDTH, SCREEN_HEIGHT world = World() world.systems.extend( ( SpaceShipKillSystem, PlanetRenderSyncSystem, SpaceShipRenderSyncSystem, SpaceShipTravelSystem, ) ) window = pyglet.window.Window( caption="SpaceTrader", width=SCREEN_WIDTH, height=SCREEN_HEIGHT, fullscreen=FULLSCREEN, ) for _ in range(12): generate_random_planet(world) @window.event def on_draw(): window.clear() for _, component_storage in world.query(SpaceShipMarker): component_storage[Line].draw() for _, component_storage in world.query(PlanetMarker): component_storage[Circle].draw() for _, component_storage in world.query(SpaceShipMarker): component_storage[Circle].draw() def on_update(dt): world.tick(dt=dt) def periodic_random_spaceship_generation(*args, **kwargs): for i in range(randint(0, 5)): generate_random_spaceship(world=world) pyglet.clock.schedule_interval(on_update, 1 / FPS) pyglet.clock.schedule_interval(periodic_random_spaceship_generation, 0.5) pyglet.app.run()