Planet and spaceship creation, travel and destruction
This commit is contained in:
1 parent
ca9e8a2f19
commit
90e421909a
7 files changed
+307
No files matched your search
@@ -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()
|
||||
Reference in new issue
Block a user