Adaptation au nouvel ecs #3
224
src/save_main.py
224
src/save_main.py
|
@ -1,224 +0,0 @@
|
||||||
"""
|
|
||||||
Module d'exemple de l'utilisation du moteur de jeu.
|
|
||||||
"""
|
|
||||||
|
|
||||||
from engine import Scene, start_game
|
|
||||||
from engine.ecs import Entity, World
|
|
||||||
from engine.math import Vec2
|
|
||||||
from plugins import defaults, physics
|
|
||||||
from plugins import render
|
|
||||||
from plugins.inputs import Held
|
|
||||||
from plugins.render import (
|
|
||||||
Origin,
|
|
||||||
Position,
|
|
||||||
Scale,
|
|
||||||
SpriteBundle,
|
|
||||||
)
|
|
||||||
from plugins.timing import Delta
|
|
||||||
|
|
||||||
|
|
||||||
def lol(a: Entity, b: Entity, simul: bool = False):
|
|
||||||
if Bounce in b:
|
|
||||||
speed = a[physics.Velocity].length
|
|
||||||
a[physics.Velocity] = a[physics.Velocity].normalized
|
|
||||||
a[physics.Velocity].y = (a[Position].y - b[Position].y) * 0.005
|
|
||||||
a[physics.Velocity] = a[physics.Velocity].normalized * min(
|
|
||||||
(speed * 1.1), 1000.0
|
|
||||||
)
|
|
||||||
return True
|
|
||||||
|
|
||||||
|
|
||||||
class Bounce:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def lol_simul(a: Entity, b: Entity):
|
|
||||||
lol(a, b, True)
|
|
||||||
return RightWall not in b
|
|
||||||
|
|
||||||
|
|
||||||
class Simulated:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class Bar:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class RightWall:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class BallFollow(int):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class Mine:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def __initialize(world: World):
|
|
||||||
"""
|
|
||||||
Initialise les ressources pour le moteur de jeu.
|
|
||||||
"""
|
|
||||||
world.new_entity().set(
|
|
||||||
SpriteBundle(
|
|
||||||
"background.png",
|
|
||||||
-1,
|
|
||||||
scale=Vec2(render.WIDTH, render.HEIGHT),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
# world.new_entity().set(
|
|
||||||
# SpriteBundle(
|
|
||||||
# "dodo.png",
|
|
||||||
# 0,
|
|
||||||
# position=Vec2(800, 500),
|
|
||||||
# origin=Vec2(0.5, 0.5),
|
|
||||||
# scale=Vec2(400, 300),
|
|
||||||
# ),
|
|
||||||
# physics.Solid(),
|
|
||||||
# )
|
|
||||||
|
|
||||||
world.new_entity().set(
|
|
||||||
SpriteBundle(
|
|
||||||
"dodo.png",
|
|
||||||
0,
|
|
||||||
position=Vec2(100, 100),
|
|
||||||
origin=Vec2(0, 0),
|
|
||||||
scale=Vec2(render.WIDTH - 200, 10),
|
|
||||||
),
|
|
||||||
physics.Solid(),
|
|
||||||
)
|
|
||||||
|
|
||||||
world.new_entity().set(
|
|
||||||
SpriteBundle(
|
|
||||||
"dodo.png",
|
|
||||||
0,
|
|
||||||
position=Vec2(100, render.HEIGHT - 100),
|
|
||||||
origin=Vec2(0, 1),
|
|
||||||
scale=Vec2(render.WIDTH - 200, 10),
|
|
||||||
),
|
|
||||||
physics.Solid(),
|
|
||||||
)
|
|
||||||
|
|
||||||
world.new_entity().set(
|
|
||||||
SpriteBundle(
|
|
||||||
"dodo.png",
|
|
||||||
0,
|
|
||||||
position=Vec2(render.WIDTH - 100, 100),
|
|
||||||
origin=Vec2(1, 0),
|
|
||||||
scale=Vec2(10, render.HEIGHT - 200),
|
|
||||||
),
|
|
||||||
physics.Solid(),
|
|
||||||
RightWall(),
|
|
||||||
)
|
|
||||||
world.new_entity().set(
|
|
||||||
SpriteBundle(
|
|
||||||
"dodo.png",
|
|
||||||
0,
|
|
||||||
position=Vec2(100, 100),
|
|
||||||
origin=Vec2(0, 0),
|
|
||||||
scale=Vec2(10, render.HEIGHT - 200),
|
|
||||||
),
|
|
||||||
physics.Solid(),
|
|
||||||
)
|
|
||||||
|
|
||||||
world.new_entity().set(
|
|
||||||
SpriteBundle(
|
|
||||||
"dodo.png",
|
|
||||||
0,
|
|
||||||
position=Vec2(render.WIDTH - 130, render.HEIGHT / 2),
|
|
||||||
origin=Vec2(0.5, 0.5),
|
|
||||||
scale=Vec2(10, 200),
|
|
||||||
),
|
|
||||||
physics.Solid(),
|
|
||||||
Bar(),
|
|
||||||
Bounce(),
|
|
||||||
)
|
|
||||||
|
|
||||||
world.new_entity().set(
|
|
||||||
SpriteBundle(
|
|
||||||
"dodo.png",
|
|
||||||
0,
|
|
||||||
position=Vec2(130, render.HEIGHT / 2),
|
|
||||||
origin=Vec2(0.5, 0.5),
|
|
||||||
scale=Vec2(10, 200),
|
|
||||||
),
|
|
||||||
physics.Solid(),
|
|
||||||
Mine(),
|
|
||||||
Bounce(),
|
|
||||||
)
|
|
||||||
|
|
||||||
world.new_entity().set(
|
|
||||||
SpriteBundle(
|
|
||||||
"dada.png",
|
|
||||||
1,
|
|
||||||
scale=Vec2(10),
|
|
||||||
position=Vec2(500, 500),
|
|
||||||
origin=Vec2(0.5, 0.5),
|
|
||||||
),
|
|
||||||
physics.Velocity(Vec2(200, 100)),
|
|
||||||
physics.CollisionHandler(lol),
|
|
||||||
)
|
|
||||||
|
|
||||||
for i in range(20):
|
|
||||||
world.new_entity().set(
|
|
||||||
SpriteBundle(
|
|
||||||
"dodo.png",
|
|
||||||
10,
|
|
||||||
scale=Vec2(10),
|
|
||||||
),
|
|
||||||
physics.CollisionHandler(lol),
|
|
||||||
BallFollow(i + 1),
|
|
||||||
# physics.CollisionHandler(lol_simul),
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def __update(world: World):
|
|
||||||
"""
|
|
||||||
Test.
|
|
||||||
"""
|
|
||||||
for entity in world.query(Mine, Position):
|
|
||||||
if "z" in world[Held]:
|
|
||||||
entity[Position].y -= 300 * world[Delta]
|
|
||||||
if "s" in world[Held]:
|
|
||||||
entity[Position].y += 300 * world[Delta]
|
|
||||||
|
|
||||||
ball = max(
|
|
||||||
world.query(Position, physics.Velocity, physics.CollisionHandler),
|
|
||||||
key=lambda e: e[Position].x,
|
|
||||||
)
|
|
||||||
for bar in world.query(Bar):
|
|
||||||
bar.remove(physics.Solid)
|
|
||||||
entity = world.new_entity()
|
|
||||||
entity.set(
|
|
||||||
Position(ball[Position]),
|
|
||||||
Scale(ball[Scale]),
|
|
||||||
physics.Velocity(ball[physics.Velocity]),
|
|
||||||
Origin(ball[Origin]),
|
|
||||||
physics.CollisionHandler(lol_simul),
|
|
||||||
)
|
|
||||||
physics.move_entity(entity, entity[physics.Velocity] * 500)
|
|
||||||
target = entity[Position].y
|
|
||||||
for bar in world.query(Bar):
|
|
||||||
diff = target - bar[Position].y
|
|
||||||
# bar[Position].y += (diff / abs(diff)) * 300 * world[Delta]
|
|
||||||
bar[Position].y += diff
|
|
||||||
bar.set(physics.Solid())
|
|
||||||
entity.destroy()
|
|
||||||
|
|
||||||
for entity in world.query(BallFollow):
|
|
||||||
entity[Position] = Vec2(ball[Position])
|
|
||||||
entity[physics.Velocity] = Vec2(ball[physics.Velocity])
|
|
||||||
physics.move_entity(entity, entity[physics.Velocity] * entity[BallFollow] * 0.5)
|
|
||||||
del entity[physics.Velocity]
|
|
||||||
|
|
||||||
|
|
||||||
MENU = Scene(
|
|
||||||
[__initialize],
|
|
||||||
[__update],
|
|
||||||
[],
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
start_game(defaults.PLUGIN, MENU)
|
|
Loading…
Reference in a new issue