Amélioration de l'engine et ajout d'éléments de gameplay #20
Binary file not shown.
BIN
assets/textures/entities/player/shadow.png
Normal file
BIN
assets/textures/entities/player/shadow.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 476 B |
|
@ -36,6 +36,8 @@ class Entity:
|
||||||
|
|
||||||
self.animation_name = None
|
self.animation_name = None
|
||||||
|
|
||||||
|
self.shadow = None
|
||||||
|
|
||||||
def set_default_life(self, life: int):
|
def set_default_life(self, life: int):
|
||||||
"""Définit le nombre de PV de l'entité. Mettre -1 pour rendre l'entité immortelle."""
|
"""Définit le nombre de PV de l'entité. Mettre -1 pour rendre l'entité immortelle."""
|
||||||
self.life_points = life
|
self.life_points = life
|
||||||
|
|
|
@ -28,6 +28,9 @@ class Renderer:
|
||||||
# Variables utilisées par le menu principal
|
# Variables utilisées par le menu principal
|
||||||
self.main_menu_assets: dict[str: Anim] = {}
|
self.main_menu_assets: dict[str: Anim] = {}
|
||||||
|
|
||||||
|
# Ombres d'entités
|
||||||
|
self.shadows = {}
|
||||||
|
|
||||||
def load_main_menu_assets(self, path: str):
|
def load_main_menu_assets(self, path: str):
|
||||||
"""Charge les assets du menu principal depuis le dossier donné."""
|
"""Charge les assets du menu principal depuis le dossier donné."""
|
||||||
|
|
||||||
|
@ -78,6 +81,11 @@ class Renderer:
|
||||||
# Apres avoir tout rendu, on met à jour l'écran
|
# Apres avoir tout rendu, on met à jour l'écran
|
||||||
display.update()
|
display.update()
|
||||||
|
|
||||||
|
def register_shadow(self, file_path: str, name: str):
|
||||||
|
"""Enregistre une image d'ombre utilisée pour le rendu des entités."""
|
||||||
|
shadow = image.load(file_path).convert_alpha()
|
||||||
|
self.shadows[name] = shadow
|
||||||
|
|
||||||
def register_animation(self, animation: Anim, name: str):
|
def register_animation(self, animation: Anim, name: str):
|
||||||
"""Enregistre une animation."""
|
"""Enregistre une animation."""
|
||||||
self.animations[name] = animation
|
self.animations[name] = animation
|
||||||
|
@ -131,10 +139,6 @@ class Renderer:
|
||||||
anim: Anim = self.animations[entity.animation_name]
|
anim: Anim = self.animations[entity.animation_name]
|
||||||
frame = anim.get_frame(delta)
|
frame = anim.get_frame(delta)
|
||||||
|
|
||||||
# On flip l'image horizontalement si l'entité est retournée
|
|
||||||
if entity.direction == 1:
|
|
||||||
frame = transform.flip(frame, True, False)
|
|
||||||
|
|
||||||
# Si l'entité n'apparait pas à l'écran, on passe son rendu
|
# Si l'entité n'apparait pas à l'écran, on passe son rendu
|
||||||
if (entity.x - self.engine.camera.x + x_middle_offset + frame.get_width() < 0 or
|
if (entity.x - self.engine.camera.x + x_middle_offset + frame.get_width() < 0 or
|
||||||
entity.x - self.engine.camera.x - x_middle_offset - frame.get_width() > 0 or
|
entity.x - self.engine.camera.x - x_middle_offset - frame.get_width() > 0 or
|
||||||
|
@ -142,10 +146,21 @@ class Renderer:
|
||||||
entity.y - self.engine.camera.y - y_middle_offset - frame.get_height() > 0):
|
entity.y - self.engine.camera.y - y_middle_offset - frame.get_height() > 0):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# On flip l'image horizontalement si l'entité est retournée
|
||||||
|
if entity.direction == 1:
|
||||||
|
frame = transform.flip(frame, True, False)
|
||||||
|
|
||||||
# On calcule les coordonnées de rendu de l'entité
|
# On calcule les coordonnées de rendu de l'entité
|
||||||
entity_dest = (math.floor(entity.x - self.engine.camera.x + x_middle_offset - frame.get_width() / 2),
|
entity_dest = (math.floor(entity.x - self.engine.camera.x + x_middle_offset - frame.get_width() / 2),
|
||||||
math.floor(entity.y - self.engine.camera.y + y_middle_offset - frame.get_height() / 2))
|
math.floor(entity.y - self.engine.camera.y + y_middle_offset - frame.get_height() / 2))
|
||||||
|
|
||||||
|
# On récupert l'ombre de l'entité
|
||||||
|
if entity.shadow is not None:
|
||||||
|
shadow_image = self.shadows[entity.shadow]
|
||||||
|
# On rend l'ombre
|
||||||
|
rendered_surface.blit(shadow_image, entity_dest)
|
||||||
|
|
||||||
|
|
||||||
# On affiche l'image
|
# On affiche l'image
|
||||||
rendered_surface.blit(frame, entity_dest)
|
rendered_surface.blit(frame, entity_dest)
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,9 @@ class Game(Engine):
|
||||||
|
|
||||||
self.entity_manager.set_player_entity("player")
|
self.entity_manager.set_player_entity("player")
|
||||||
|
|
||||||
|
player.shadow = "player_shadow"
|
||||||
|
self.renderer.register_shadow("assets/textures/entities/player/shadow.png", "player_shadow")
|
||||||
|
|
||||||
self.camera.follow_entity(player)
|
self.camera.follow_entity(player)
|
||||||
|
|
||||||
def load_boss_fight_assets(self):
|
def load_boss_fight_assets(self):
|
||||||
|
|
Loading…
Reference in a new issue