Ajout du système de plugins

This commit is contained in:
Tipragot 2023-10-24 14:11:58 +02:00
parent eac87527ac
commit fe707c0fa9
2 changed files with 31 additions and 3 deletions

View file

@ -2,6 +2,16 @@
Système de gestion d'entités, composants et ressources. Système de gestion d'entités, composants et ressources.
""" """
__all__ = [
"World",
"Entity",
"Plugin",
"Game",
]
from abc import abstractmethod
from typing import Iterator, Callable, Tuple, TypeVar, Type, Optional from typing import Iterator, Callable, Tuple, TypeVar, Type, Optional
from logging import error from logging import error
@ -225,14 +235,30 @@ class Entity:
return True return True
class Plugin:
"""
Un plugin qui ajoute des fonctionnalités a un jeu.
"""
@abstractmethod
def apply(self, game: "Game") -> None:
"""
Applique le plugin a un jeu.
"""
pass
class Game: class Game:
""" """
Permet de faire une simple boucle de jeu. Permet de faire une simple boucle de jeu.
""" """
def __init__(self) -> None: def __init__(self, *plugins: Plugin) -> None:
""" """
Créer une un jeu. Créer une un jeu avec les plugins donnés en paramètres.
Paramètres:
*plugins: Les plugins a ajouter au jeu.
""" """
self._running = False self._running = False
self._startup_tasks: list[Callable[[World], None]] = [] self._startup_tasks: list[Callable[[World], None]] = []
@ -241,6 +267,8 @@ class Game:
self._post_update_tasks: list[Callable[[World], None]] = [] self._post_update_tasks: list[Callable[[World], None]] = []
self._render_tasks: list[Callable[[World], None]] = [] self._render_tasks: list[Callable[[World], None]] = []
self._shutdown_tasks: list[Callable[[World], None]] = [] self._shutdown_tasks: list[Callable[[World], None]] = []
for plugin in plugins:
plugin.apply(self)
def add_startup_tasks(self, *tasks: Callable[[World], None]) -> None: def add_startup_tasks(self, *tasks: Callable[[World], None]) -> None:
""" """

View file

@ -3,7 +3,7 @@ Ceci est un exemple de comment l'on peut utiliser le moteur du jeu.
""" """
from engine import Game from engine import *
# Initialisation # Initialisation