Ajout de la lecture des dialogues

This commit is contained in:
Yannis 2024-01-05 19:17:50 +01:00
parent 4a88bb4f8f
commit 011c7f4895
Signed by: yannis
SSH key fingerprint: SHA256:Bz8K8QiTYUudf8MlthTM9MCLfgiYf/U1md3V9g9Wo14
4 changed files with 26 additions and 2 deletions

4
assets/dialogs.json Normal file
View file

@ -0,0 +1,4 @@
{
"test": ["test1", "test2", "test très long permettant de tester le retour à la ligne dans le renderer du jeu dans la fonction qui rend les dialogues et il faut éviter d'en faire des si long car ça pourrait dépacer en base de l'écran ! Bonne journée !"],
"test2": ["salut", "aurevoir"]
}

View file

@ -4,10 +4,27 @@ import json
class DialogsManager: class DialogsManager:
"""Classe qui gère la lecture des dialogues.""" """Classe qui gère la lecture des dialogues."""
def __init__(self): def __init__(self):
self.current_dialog = [] self.current_dialogs = []
self.current_dialog_id = -1
self.dialogs = {} self.dialogs = {}
def next_dialog(self):
"""Passe au dialogue suivant. Renvoie True si le dialogue est fini."""
self.current_dialog_id += 1
if self.current_dialog_id == len(self.current_dialogs):
self.current_dialogs = []
self.current_dialog_id = -1
def start_dialog(self, name: str):
"""Lance le dialogue au nom donné."""
self.current_dialogs = self.dialogs[name]
self.current_dialog_id = 0
def get_current_dialog_sentence(self) -> str:
"""Renvoie la phrase actuelle du dialogue."""
return self.current_dialogs[self.current_dialog_id]
def load_dialogs(self, file_path: str): def load_dialogs(self, file_path: str):
"""Charge les dialogues du jeu grave au fichier json donné.""" """Charge les dialogues du jeu grave au fichier json donné."""
with open(file_path, "r") as file: with open(file_path, "r", encoding="utf-8") as file:
self.dialogs = json.loads(file.read()) self.dialogs = json.loads(file.read())

View file

@ -1,5 +1,6 @@
from src.engine.boss_fight_manager import BossFightManager from src.engine.boss_fight_manager import BossFightManager
from src.engine.camera import Camera from src.engine.camera import Camera
from src.engine.dialogs_manager import DialogsManager
from src.engine.entity_manager import EntityManager from src.engine.entity_manager import EntityManager
from src.engine.event_handler import EventHandler from src.engine.event_handler import EventHandler
from src.engine.event_sheduler import EventSheduler from src.engine.event_sheduler import EventSheduler
@ -33,6 +34,7 @@ class Engine:
self.entity_manager = EntityManager(self.map_manager) self.entity_manager = EntityManager(self.map_manager)
self.boss_fight_manager = BossFightManager(self) self.boss_fight_manager = BossFightManager(self)
self.event_sheduler = EventSheduler(self) self.event_sheduler = EventSheduler(self)
self.dialogs_manager = DialogsManager()
def loop(self): def loop(self):
"""Fonction à lancer au début du programme et qui va lancer les updates dans une boucle. """Fonction à lancer au début du programme et qui va lancer les updates dans une boucle.

View file

@ -12,6 +12,7 @@ class Game(Engine):
self.map_manager.load_new("maps/map5.tmj") self.map_manager.load_new("maps/map5.tmj")
self.renderer.load_tile_set("assets/textures/tileset.png", 16) self.renderer.load_tile_set("assets/textures/tileset.png", 16)
self.dialogs_manager.load_dialogs("assets/dialogs.json")
self.create_player_entity() self.create_player_entity()
self.load_boss_fight_assets() self.load_boss_fight_assets()