Ajout de la detection de clics pour le passage au prochain dialogue
This commit is contained in:
parent
707947fa1d
commit
b1d7dc7a8b
|
@ -1,10 +1,14 @@
|
||||||
import json
|
import json
|
||||||
from types import FunctionType
|
from types import FunctionType
|
||||||
|
|
||||||
|
from src.engine.event_handler import EventHandler
|
||||||
|
|
||||||
|
|
||||||
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, event_handler: EventHandler):
|
||||||
|
self.event_handler = event_handler
|
||||||
|
|
||||||
self.current_dialogs = []
|
self.current_dialogs = []
|
||||||
self.current_dialog_id = -1
|
self.current_dialog_id = -1
|
||||||
self.dialogs = {}
|
self.dialogs = {}
|
||||||
|
@ -46,6 +50,8 @@ class DialogsManager:
|
||||||
|
|
||||||
# Si un dialogue n'est pas déja lancé, on lance le dialogue au nom donné
|
# Si un dialogue n'est pas déja lancé, on lance le dialogue au nom donné
|
||||||
if not self.reading_dialog:
|
if not self.reading_dialog:
|
||||||
|
self.event_handler.register_button_area((0, 0, 1, 1), self.next_signal, "next_dialog", 0)
|
||||||
|
|
||||||
self.current_dialogs = self.dialogs[name]
|
self.current_dialogs = self.dialogs[name]
|
||||||
self.current_dialog_id = 0
|
self.current_dialog_id = 0
|
||||||
self.current_dialogue_letter_id = 0
|
self.current_dialogue_letter_id = 0
|
||||||
|
|
|
@ -34,7 +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()
|
self.dialogs_manager = DialogsManager(self.event_handler)
|
||||||
|
|
||||||
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.
|
||||||
|
|
|
@ -32,12 +32,23 @@ class EventHandler:
|
||||||
return rect[0] < point[0] < rect[0] + rect[2] and rect[1] < point[1] < rect[1] + rect[3]
|
return rect[0] < point[0] < rect[0] + rect[2] and rect[1] < point[1] < rect[1] + rect[3]
|
||||||
|
|
||||||
def register_button_area(self, rect: tuple[float | int, float | int, float | int, float | int],
|
def register_button_area(self, rect: tuple[float | int, float | int, float | int, float | int],
|
||||||
callback: FunctionType | classmethod | staticmethod,
|
callback: FunctionType | classmethod | staticmethod, name: str,
|
||||||
is_window_relative: int = -1):
|
is_window_relative: int = -1):
|
||||||
"""Enregistre une zone comme bouton. La fonction donnée sera donc executé lorsque la zone sur la fenêtre
|
"""Enregistre une zone comme bouton. La fonction donnée sera donc executé lorsque la zone sur la fenêtre
|
||||||
sera cliqué. is_window_relative doit être 0 pour que le rect soit multipliée par la largeur de la fenêtre et 1
|
sera cliqué. is_window_relative doit être 0 pour que le rect soit multipliée par la largeur de la fenêtre et 1
|
||||||
pour qu'elle soit multipliée par la hauteur"""
|
pour qu'elle soit multipliée par la hauteur"""
|
||||||
self.buttons_area.append((rect, callback, is_window_relative))
|
self.buttons_area.append((rect, callback, is_window_relative, name))
|
||||||
|
|
||||||
|
def remove_button_area(self, name: str):
|
||||||
|
"""Supprime les boutons aux noms donnés."""
|
||||||
|
|
||||||
|
# On itère dans toute la liste et on ne garde que les éléments ne portant pas le nom cherché
|
||||||
|
cleared_list = []
|
||||||
|
for area in self.buttons_area:
|
||||||
|
if area[3] != name:
|
||||||
|
cleared_list.append(area)
|
||||||
|
|
||||||
|
self.buttons_area = cleared_list
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Vérifie s'il y a de nouvelles interactions et les traites."""
|
"""Vérifie s'il y a de nouvelles interactions et les traites."""
|
||||||
|
|
Loading…
Reference in a new issue