Planet and spaceship creation, travel and destruction

This commit is contained in:
nejdetckenobi committed 2026-10-10 19:27:52 +03:00
1 parent ca9e8a2f19
commit 90e421909a
7 files changed
+307

No files matched your search

+67
View File
@@ -0,0 +1,67 @@
from functools import partial
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 import World
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)
for i in range(10):
generate_random_spaceship(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(1, 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()