Fix du crash lors de la mort du joueur
This commit is contained in:
parent
28df17050f
commit
b65fb9d127
|
@ -1,5 +1,6 @@
|
|||
import math
|
||||
|
||||
from src.engine.enums import EntityDeathResult
|
||||
from src.engine.map_manager import MapManager
|
||||
from src.engine.mobs_AI import MobAI
|
||||
|
||||
|
@ -42,6 +43,9 @@ class Entity:
|
|||
|
||||
self.shadow = None
|
||||
|
||||
self.death_callback = None
|
||||
self.death_result = EntityDeathResult.REMOVED
|
||||
|
||||
def set_default_life(self, life: int):
|
||||
"""Définit le nombre de PV de l'entité. Mettre -1 pour rendre l'entité immortelle."""
|
||||
self.life_points = life
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
from src.engine.entity import Entity
|
||||
from src.engine.enums import EntityDeathResult
|
||||
from src.engine.map_manager import MapManager
|
||||
|
||||
|
||||
|
@ -32,7 +33,13 @@ class EntityManager:
|
|||
entity = self.entities[entity_name]
|
||||
entity.update(delta)
|
||||
if entity.life_points == 0:
|
||||
self.entities.pop(entity_name)
|
||||
if entity.death_callback is not None:
|
||||
entity.death_callback()
|
||||
if entity.death_result == EntityDeathResult.REMOVED:
|
||||
self.entities.pop(entity_name)
|
||||
elif entity.death_result == EntityDeathResult.RESET_LIFE:
|
||||
entity.life_points = entity.max_life_points
|
||||
|
||||
|
||||
if entity.brain is not None and not self.paused:
|
||||
entity.brain.update(delta)
|
||||
|
|
|
@ -8,3 +8,8 @@ class GameState(Enum):
|
|||
BOSS_FIGHT = 2
|
||||
MAIN_MENU = 3
|
||||
# AJouter si besoin, mais à utiliser de préférence avec parsimony
|
||||
|
||||
|
||||
class EntityDeathResult(Enum):
|
||||
REMOVED = 0 # The entity is removed
|
||||
RESET_LIFE = 1
|
||||
|
|
|
@ -3,7 +3,7 @@ import pygame.image
|
|||
from src.custom_AI import WolfAI
|
||||
from src.engine.animation import Anim
|
||||
from src.engine.engine import Engine
|
||||
from src.engine.enums import GameState
|
||||
from src.engine.enums import GameState, EntityDeathResult
|
||||
from src.engine.menu_manager import Menu, Label, Button
|
||||
|
||||
|
||||
|
@ -85,6 +85,8 @@ class Game(Engine):
|
|||
player = self.entity_manager.register_entity("player")
|
||||
player.link_animation("player_none")
|
||||
player.collision_rect = [-6, -7, 6, 16]
|
||||
player.death_result = EntityDeathResult.RESET_LIFE
|
||||
player.death_callback = self.create_player_entity
|
||||
|
||||
self.entity_manager.set_player_entity("player")
|
||||
|
||||
|
@ -93,7 +95,7 @@ class Game(Engine):
|
|||
|
||||
# On définit ses attributs
|
||||
player.set_default_life(15)
|
||||
player.max_speed = 64.0
|
||||
player.max_speed = 264.0
|
||||
player.x = 220.
|
||||
player.y = 767.
|
||||
|
||||
|
|
Loading…
Reference in a new issue