ecs #58
|
@ -177,26 +177,36 @@ def __initialize(world: World):
|
||||||
|
|
||||||
def __game_loop(world: World):
|
def __game_loop(world: World):
|
||||||
"""
|
"""
|
||||||
La boucle principale de la scene.
|
La boucle principale de la scène
|
||||||
"""
|
"""
|
||||||
yield wait(5.0)
|
yield wait(5.0) # On attend 5 secondes le temps de mettre le joueur dans le jeu
|
||||||
for _ in range(5):
|
for _ in range(5): # On fait 5 dossiers (niveau facile)
|
||||||
__spawn_search_alert(world, 5)
|
__spawn_search_alert(world, 5) # On fait 5 alertes de recherche
|
||||||
yield wait(5.0)
|
yield wait(5.0)
|
||||||
__spawn_search_directory(world)
|
__spawn_search_directory(
|
||||||
__delete_search_alert(world)
|
world
|
||||||
|
) # On fait apparaître le dossier en cours de recherche
|
||||||
|
__delete_search_alert(world) # On supprime les alertes
|
||||||
yield wait(5.0)
|
yield wait(5.0)
|
||||||
__delete_search_directory(world)
|
__delete_search_directory(world) # On supprime le dossier en cours de recherche
|
||||||
yield wait(1.0)
|
yield wait(1.0)
|
||||||
|
|
||||||
|
|
||||||
def __delete_search_directory(world: World):
|
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[SearchingDirectory]
|
||||||
del entity[Animation]
|
del entity[Animation]
|
||||||
|
|
||||||
|
|
||||||
def __spawn_search_directory(world: World):
|
def __spawn_search_directory(world: World):
|
||||||
|
"""
|
||||||
|
Fait apparaître le dossier en cours de recherche
|
||||||
|
"""
|
||||||
for search_alert in world.query(
|
for search_alert in world.query(
|
||||||
SearchedDirectoryAlert, SearchedDirectoryAlertPosition
|
SearchedDirectoryAlert, SearchedDirectoryAlertPosition
|
||||||
):
|
):
|
||||||
|
@ -204,25 +214,34 @@ def __spawn_search_directory(world: World):
|
||||||
if (
|
if (
|
||||||
entity[DirectoryPosition]
|
entity[DirectoryPosition]
|
||||||
== search_alert[SearchedDirectoryAlertPosition]
|
== search_alert[SearchedDirectoryAlertPosition]
|
||||||
):
|
): # Si le dossier va être recherché
|
||||||
if DefenderDirectory in entity:
|
if DefenderDirectory in entity: # Si le dossier est un défenseur
|
||||||
|
# On joue une animation d'échec
|
||||||
entity.set(
|
entity.set(
|
||||||
SearchingDirectory(),
|
SearchingDirectory(),
|
||||||
Animation("search_directory_failed", callback=__game_over),
|
Animation("search_directory_failed", callback=__game_over),
|
||||||
)
|
)
|
||||||
break
|
break
|
||||||
|
# On joue l'animation de recherche
|
||||||
entity.set(SearchingDirectory(), Animation("search_directory"))
|
entity.set(SearchingDirectory(), Animation("search_directory"))
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
||||||
def __game_over(world: World, _entity: Entity):
|
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):
|
def __delete_search_alert(world: World):
|
||||||
|
"""
|
||||||
|
Supprime les alertes de recherche
|
||||||
|
"""
|
||||||
for search_alert in world.query(
|
for search_alert in world.query(
|
||||||
SearchedDirectoryAlert, SearchedDirectoryAlertPosition
|
SearchedDirectoryAlert, SearchedDirectoryAlertPosition
|
||||||
):
|
):
|
||||||
|
# On joue l'animation de suppression
|
||||||
search_alert[Animation] = Animation(
|
search_alert[Animation] = Animation(
|
||||||
"search_alert/despawn", callback=lambda _, entity: entity.destroy()
|
"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):
|
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])
|
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]
|
position = entity[DirectoryPosition]
|
||||||
|
# On crée l'entité de l'alerte
|
||||||
world.new_entity().set(
|
world.new_entity().set(
|
||||||
Animation("search_alert/spawn"),
|
Animation("search_alert/spawn"),
|
||||||
Sprite(
|
Sprite(
|
||||||
|
|
Loading…
Reference in a new issue