ecs #58
|
@ -5,6 +5,7 @@ Module d'exemple de l'utilisation du moteur de jeu.
|
||||||
from engine import Scene, start_game
|
from engine import Scene, start_game
|
||||||
from plugins import assets, defaults
|
from plugins import assets, defaults
|
||||||
from plugins.animation import Animation
|
from plugins.animation import Animation
|
||||||
|
from plugins.render import Sprite
|
||||||
from plugins.sound import Sound
|
from plugins.sound import Sound
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,7 +20,8 @@ start_game(
|
||||||
callback=lambda world, entity: entity.set(
|
callback=lambda world, entity: entity.set(
|
||||||
Sound(world[assets.Assets].get_sound("edqsd"))
|
Sound(world[assets.Assets].get_sound("edqsd"))
|
||||||
),
|
),
|
||||||
)
|
),
|
||||||
|
Sprite(world[assets.Assets].get_texture("intro")),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
[],
|
[],
|
||||||
|
|
|
@ -235,11 +235,10 @@ def loading_scene(target: Scene, name: str, clear_cache: bool = True):
|
||||||
asset_iterator = world[AssetIterator]
|
asset_iterator = world[AssetIterator]
|
||||||
file_loaded = asset_iterator.total - len(asset_iterator.files)
|
file_loaded = asset_iterator.total - len(asset_iterator.files)
|
||||||
progress = file_loaded / asset_iterator.total
|
progress = file_loaded / asset_iterator.total
|
||||||
pixels = int(render.WIDTH * progress)
|
|
||||||
|
|
||||||
# Affichage de la barre de progression
|
# Affichage de la barre de progression
|
||||||
progress_bar = world.query(ProgessBar).pop()
|
progress_bar = world.query(ProgessBar).pop()
|
||||||
progress_bar[render.Sprite].area = (0, 0, pixels, render.HEIGHT)
|
progress_bar[render.Sprite].area = (0, 0, progress, 1.0)
|
||||||
|
|
||||||
return Scene(
|
return Scene(
|
||||||
[AssetIterator.prepare_world],
|
[AssetIterator.prepare_world],
|
||||||
|
|
|
@ -46,19 +46,16 @@ class Sprite:
|
||||||
position: Vec2 = Vec2(0),
|
position: Vec2 = Vec2(0),
|
||||||
order: float = -1.0,
|
order: float = -1.0,
|
||||||
area: Optional[tuple[float, float, float, float]] = None,
|
area: Optional[tuple[float, float, float, float]] = None,
|
||||||
|
origin: Vec2 = Vec2(0),
|
||||||
):
|
):
|
||||||
self.texture = texture
|
self.texture = texture
|
||||||
self.position = position
|
self.position = position
|
||||||
self.order = order
|
self.order = order
|
||||||
if area is None:
|
if area is None:
|
||||||
self.area = (
|
self.area = (0.0, 0.0, 1.0, 1.0)
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
float(texture.get_width()),
|
|
||||||
float(texture.get_height()),
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
self.area = area
|
self.area = area
|
||||||
|
self.origin = origin
|
||||||
|
|
||||||
|
|
||||||
def __initialize(world: World):
|
def __initialize(world: World):
|
||||||
|
@ -76,10 +73,18 @@ def __render(world: World):
|
||||||
surface = world[Surface]
|
surface = world[Surface]
|
||||||
sprites = [entity[Sprite] for entity in world.query(Sprite)]
|
sprites = [entity[Sprite] for entity in world.query(Sprite)]
|
||||||
for sprite in sorted(sprites, key=lambda sprite: sprite.order):
|
for sprite in sorted(sprites, key=lambda sprite: sprite.order):
|
||||||
|
original_size = Vec2(*sprite.texture.get_size())
|
||||||
|
size = original_size * Vec2(*sprite.area[2:])
|
||||||
|
position = sprite.position - (sprite.origin * size)
|
||||||
surface.blit(
|
surface.blit(
|
||||||
sprite.texture,
|
sprite.texture,
|
||||||
(sprite.position.x, sprite.position.y),
|
(position.x, position.y),
|
||||||
sprite.area,
|
(
|
||||||
|
sprite.area[0] * original_size.x,
|
||||||
|
sprite.area[1] * original_size.y,
|
||||||
|
sprite.area[2] * original_size.x,
|
||||||
|
sprite.area[3] * original_size.y,
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
# On affiche la surface sur la fenetre
|
# On affiche la surface sur la fenetre
|
||||||
|
|
|
@ -7,6 +7,7 @@ import pygame
|
||||||
|
|
||||||
from engine import GlobalPlugin
|
from engine import GlobalPlugin
|
||||||
from engine.ecs import World
|
from engine.ecs import World
|
||||||
|
from engine.math import Vec2
|
||||||
from plugins.assets import Assets
|
from plugins.assets import Assets
|
||||||
from plugins.render import Sprite
|
from plugins.render import Sprite
|
||||||
|
|
||||||
|
@ -21,10 +22,12 @@ class Text:
|
||||||
text: str,
|
text: str,
|
||||||
size: int = 50,
|
size: int = 50,
|
||||||
color: pygame.Color = pygame.Color(255, 255, 255),
|
color: pygame.Color = pygame.Color(255, 255, 255),
|
||||||
|
origin: Vec2 = Vec2(0),
|
||||||
):
|
):
|
||||||
self.text = text
|
self.text = text
|
||||||
self.size = size
|
self.size = size
|
||||||
self.color = color
|
self.color = color
|
||||||
|
self.origin = origin
|
||||||
|
|
||||||
|
|
||||||
def __render_texts(world: World):
|
def __render_texts(world: World):
|
||||||
|
|
Loading…
Reference in a new issue