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.
|
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:
|
||||||
"""
|
"""
|
Loading…
Reference in a new issue