ecs #58
|
@ -28,6 +28,8 @@ class Assets(KeepAlive):
|
||||||
|
|
||||||
# Cache des ressources
|
# Cache des ressources
|
||||||
self.__textures: dict[str, pygame.Surface] = {}
|
self.__textures: dict[str, pygame.Surface] = {}
|
||||||
|
self.__fonts: dict[int, pygame.font.Font] = {}
|
||||||
|
self.__texts: dict[tuple[int, str], pygame.Surface] = {}
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def error_texture(self) -> pygame.Surface:
|
def error_texture(self) -> pygame.Surface:
|
||||||
|
@ -70,11 +72,43 @@ class Assets(KeepAlive):
|
||||||
"""
|
"""
|
||||||
return self.__textures.get(name, self.__error_texture)
|
return self.__textures.get(name, self.__error_texture)
|
||||||
|
|
||||||
|
def get_font(self, size: int) -> pygame.font.Font:
|
||||||
|
"""
|
||||||
|
Renvoie la police d'ecriture du jeu avec la taille demandée.
|
||||||
|
|
||||||
|
Cette fonction charge le fichier `assets/font.ttf` pour la taille demandée
|
||||||
|
et la met dans le cache. Si la police d'ecriture existe déjà dans le cache,
|
||||||
|
elle sera renvoyée directement.
|
||||||
|
"""
|
||||||
|
font = self.__fonts.get(size)
|
||||||
|
if font is None:
|
||||||
|
font = self.__fonts[size] = pygame.font.Font("assets/font.ttf", size)
|
||||||
|
return font
|
||||||
|
|
||||||
|
def get_text(self, size: int, text: str, color: pygame.Color) -> pygame.Surface:
|
||||||
|
"""
|
||||||
|
Renvoie une image correspondant à la chaîne de caractères demandée avec
|
||||||
|
la taille de police demandée et la couleur demandée.
|
||||||
|
|
||||||
|
Si l'image du texte demandé n'est pas dans le cache, elle sera créer
|
||||||
|
puis mis dans le cache et enfin renvoyée.
|
||||||
|
"""
|
||||||
|
surface = self.__texts.get((size, text))
|
||||||
|
if surface is None:
|
||||||
|
surface = self.__texts[(size, text)] = self.get_font(size).render(
|
||||||
|
text, True, color
|
||||||
|
)
|
||||||
|
return surface
|
||||||
|
|
||||||
def clear_cache(self):
|
def clear_cache(self):
|
||||||
"""
|
"""
|
||||||
Vide le cache des assets.
|
Vide le cache des assets.
|
||||||
|
|
||||||
|
Les fonts ne sont pas effacés car ils n'y a normalement pas énormément
|
||||||
|
de taille de police différentes utilisées.
|
||||||
"""
|
"""
|
||||||
self.__textures.clear()
|
self.__textures.clear()
|
||||||
|
self.__texts.clear()
|
||||||
|
|
||||||
|
|
||||||
def __initialize(world: World):
|
def __initialize(world: World):
|
||||||
|
|
Loading…
Reference in a new issue