ecs #58
|
@ -177,26 +177,36 @@ def __initialize(world: World):
|
|||
|
||||
def __game_loop(world: World):
|
||||
"""
|
||||
La boucle principale de la scene.
|
||||
La boucle principale de la scène
|
||||
"""
|
||||
yield wait(5.0) # On attend 5 secondes le temps de mettre le joueur dans le jeu
|
||||
for _ in range(5): # On fait 5 dossiers (niveau facile)
|
||||
__spawn_search_alert(world, 5) # On fait 5 alertes de recherche
|
||||
yield wait(5.0)
|
||||
for _ in range(5):
|
||||
__spawn_search_alert(world, 5)
|
||||
__spawn_search_directory(
|
||||
world
|
||||
) # On fait apparaître le dossier en cours de recherche
|
||||
__delete_search_alert(world) # On supprime les alertes
|
||||
yield wait(5.0)
|
||||
__spawn_search_directory(world)
|
||||
__delete_search_alert(world)
|
||||
yield wait(5.0)
|
||||
__delete_search_directory(world)
|
||||
__delete_search_directory(world) # On supprime le dossier en cours de recherche
|
||||
yield wait(1.0)
|
||||
|
||||
|
||||
def __delete_search_directory(world: World):
|
||||
for entity in world.query(Directory, SearchingDirectory):
|
||||
"""
|
||||
Supprime le dossier en cours de recherche
|
||||
"""
|
||||
for entity in world.query(
|
||||
Directory, SearchingDirectory
|
||||
): # Pour tous les dossiers recherchés et les remet à leur état de base
|
||||
del entity[SearchingDirectory]
|
||||
del entity[Animation]
|
||||
|
||||
|
||||
def __spawn_search_directory(world: World):
|
||||
"""
|
||||
Fait apparaître le dossier en cours de recherche
|
||||
"""
|
||||
for search_alert in world.query(
|
||||
SearchedDirectoryAlert, SearchedDirectoryAlertPosition
|
||||
):
|
||||
|
@ -204,25 +214,34 @@ def __spawn_search_directory(world: World):
|
|||
if (
|
||||
entity[DirectoryPosition]
|
||||
== search_alert[SearchedDirectoryAlertPosition]
|
||||
):
|
||||
if DefenderDirectory in entity:
|
||||
): # Si le dossier va être recherché
|
||||
if DefenderDirectory in entity: # Si le dossier est un défenseur
|
||||
# On joue une animation d'échec
|
||||
entity.set(
|
||||
SearchingDirectory(),
|
||||
Animation("search_directory_failed", callback=__game_over),
|
||||
)
|
||||
break
|
||||
# On joue l'animation de recherche
|
||||
entity.set(SearchingDirectory(), Animation("search_directory"))
|
||||
break
|
||||
|
||||
|
||||
def __game_over(world: World, _entity: Entity):
|
||||
world[CurrentScene] = SCENE
|
||||
"""
|
||||
Fonction lancée quand on perd le jeu
|
||||
"""
|
||||
world[CurrentScene] = SCENE # On relance le jeu
|
||||
|
||||
|
||||
def __delete_search_alert(world: World):
|
||||
"""
|
||||
Supprime les alertes de recherche
|
||||
"""
|
||||
for search_alert in world.query(
|
||||
SearchedDirectoryAlert, SearchedDirectoryAlertPosition
|
||||
):
|
||||
# On joue l'animation de suppression
|
||||
search_alert[Animation] = Animation(
|
||||
"search_alert/despawn", callback=lambda _, entity: entity.destroy()
|
||||
)
|
||||
|
@ -230,12 +249,16 @@ def __delete_search_alert(world: World):
|
|||
|
||||
def __spawn_search_alert(world: World, nb_alerts: int):
|
||||
"""
|
||||
Spawn une alerte de recherche.
|
||||
Spawn une alerte de recherche
|
||||
"""
|
||||
entities = world.query(Directory, DirectoryPosition, without=[BlockedDirectory])
|
||||
|
||||
for entity in random.sample(list(entities), nb_alerts):
|
||||
for entity in random.sample(
|
||||
list(entities), nb_alerts
|
||||
): # On tire aléatoirement des dossiers
|
||||
# On crée l'alerte
|
||||
position = entity[DirectoryPosition]
|
||||
# On crée l'entité de l'alerte
|
||||
world.new_entity().set(
|
||||
Animation("search_alert/spawn"),
|
||||
Sprite(
|
||||
|
|
Loading…
Reference in a new issue