Ajout du système de plugins
This commit is contained in:
parent
eac87527ac
commit
fe707c0fa9
|
@ -2,6 +2,16 @@
|
|||
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 logging import error
|
||||
|
||||
|
@ -225,14 +235,30 @@ class Entity:
|
|||
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:
|
||||
"""
|
||||
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._startup_tasks: list[Callable[[World], None]] = []
|
||||
|
@ -241,6 +267,8 @@ class Game:
|
|||
self._post_update_tasks: list[Callable[[World], None]] = []
|
||||
self._render_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:
|
||||
"""
|
Loading…
Reference in a new issue