ecs #58
BIN
assets/error.mp3
Normal file
BIN
assets/error.mp3
Normal file
Binary file not shown.
|
@ -22,6 +22,9 @@ class Assets(KeepAlive):
|
|||
pygame.draw.rect(error_texture, (255, 0, 255), (128, 128, 128, 128))
|
||||
self.__error_texture = error_texture.convert()
|
||||
|
||||
# Chragement du son d'erreur
|
||||
self.__error_sound = pygame.mixer.Sound("assets/error.mp3")
|
||||
|
||||
# Chargement des textures de chargement
|
||||
self.__unloaded_texture = pygame.image.load("assets/unloaded.png").convert()
|
||||
self.__loaded_texture = pygame.image.load("assets/loaded.png").convert()
|
||||
|
@ -30,6 +33,7 @@ class Assets(KeepAlive):
|
|||
self.__textures: dict[str, pygame.Surface] = {}
|
||||
self.__fonts: dict[int, pygame.font.Font] = {}
|
||||
self.__texts: dict[tuple[int, str], pygame.Surface] = {}
|
||||
self.__sounds: dict[str, pygame.mixer.Sound] = {}
|
||||
|
||||
@property
|
||||
def error_texture(self) -> pygame.Surface:
|
||||
|
@ -40,6 +44,15 @@ class Assets(KeepAlive):
|
|||
"""
|
||||
return self.__error_texture
|
||||
|
||||
@property
|
||||
def error_sound(self) -> pygame.mixer.Sound:
|
||||
"""
|
||||
Le son d'erreur.
|
||||
|
||||
Cette texture est utilisé lorsque le son demandé n'existe pas.
|
||||
"""
|
||||
return self.__error_sound
|
||||
|
||||
@property
|
||||
def unloaded_texture(self) -> pygame.Surface:
|
||||
"""
|
||||
|
@ -100,6 +113,23 @@ class Assets(KeepAlive):
|
|||
)
|
||||
return surface
|
||||
|
||||
def load_sound(self, name: str, path: str) -> pygame.mixer.Sound:
|
||||
"""
|
||||
Charge un son et le renvoi. Si un son existe déja dans le cache,
|
||||
il sera remplacé par le nouveau.
|
||||
"""
|
||||
sound = pygame.mixer.Sound(path)
|
||||
self.__sounds[name] = sound
|
||||
return sound
|
||||
|
||||
def get_sound(self, name: str) -> pygame.mixer.Sound:
|
||||
"""
|
||||
Renvoie le son demandé.
|
||||
|
||||
Si le son n'existe pas dans le cache, le son d'erreur sera renvoyé.
|
||||
"""
|
||||
return self.__sounds.get(name, self.__error_sound)
|
||||
|
||||
def clear_cache(self):
|
||||
"""
|
||||
Vide le cache des assets.
|
||||
|
@ -109,6 +139,7 @@ class Assets(KeepAlive):
|
|||
"""
|
||||
self.__textures.clear()
|
||||
self.__texts.clear()
|
||||
self.__sounds.clear()
|
||||
|
||||
|
||||
def __initialize(world: World):
|
||||
|
@ -174,6 +205,7 @@ def loading_scene(target: Scene, name: str):
|
|||
"""
|
||||
Charge le fichier suivant de l'itérateur.
|
||||
"""
|
||||
assets = world[Assets]
|
||||
asset_iterator = world[AssetIterator]
|
||||
if len(asset_iterator.files) == 0:
|
||||
world[CurrentScene] = target
|
||||
|
@ -184,7 +216,9 @@ def loading_scene(target: Scene, name: str):
|
|||
: -len(ressource_extension) - 1
|
||||
]
|
||||
if ressource_extension in ("png", "jpg"):
|
||||
world[Assets].load_texture(ressource_name, file)
|
||||
assets.load_texture(ressource_name, file)
|
||||
if ressource_extension in ("mp3", "wav", "ogg"):
|
||||
assets.load_sound(ressource_name, file)
|
||||
|
||||
class ProgessBar:
|
||||
"""
|
||||
|
|
Loading…
Reference in a new issue