Quellcode für miniworlds.worlds.manager.sound_manager
from typing import Optional
import logging
import miniworlds.base.app as app_mod
logger = logging.getLogger(__name__)
[Doku]
class SoundManager:
def __init__(self, app: "app_mod.App"):
self.app: "app_mod.App" = app
self.sound_manager = self.app.sound_manager
[Doku]
def play(self, path: str, volume: int = 100) -> None:
"""Plays a sound from the given path.
Args:
path: The path to the sound.
volume: Volume to play the sound (0 min, 100 max).
Raises:
ValueError: If path is empty or volume is out of range.
Example:
world.sound.play("sounds/explosion.wav", volume=80)
"""
if not path:
raise ValueError("Sound path must not be empty.")
if not (0 <= volume <= 100):
raise ValueError("Volume must be between 0 and 100.")
logger.debug(f"Playing sound: {path} at volume {volume}")
self.sound_manager.play_sound(path, volume=volume)
[Doku]
def register(self, path: str) -> None:
"""Registers a sound for later use.
Args:
path: The path to the sound.
Raises:
ValueError: If path is empty.
Example:
world.sound.register("sounds/explosion.wav")
"""
if not path:
raise ValueError("Sound path must not be empty.")
logger.debug(f"Registering sound: {path}")
self.sound_manager.register_sound(path)
[Doku]
def is_registered(self, path: str) -> bool:
"""Checks if a sound is already registered.
Args:
path: The path to the sound.
Returns:
bool: True if the sound is already registered, False otherwise.
Raises:
ValueError: If path is empty.
Example:
if not world.sound.is_registered("sounds/explosion.wav"):
world.sound.register("sounds/explosion.wav")
"""
if not path:
raise ValueError("Sound path must not be empty.")
return self.sound_manager.is_sound_registered(path)
[Doku]
def stop(self, path: str) -> None:
"""Stops a playing sound.
Args:
path: The path to the sound to stop.
Raises:
ValueError: If path is empty.
Example:
world.sound.stop("sounds/explosion.wav")
"""
if not path:
raise ValueError("Sound path must not be empty.")
logger.debug(f"Stopping sound: {path}")
self.sound_manager.stop_sound(path)
[Doku]
def is_playing(self, path: str) -> bool:
"""Checks if the given sound is currently playing.
Args:
path: The path to the sound.
Returns:
bool: True if the sound is currently playing, False otherwise.
Raises:
ValueError: If path is empty.
Example:
if world.sound.is_playing("sounds/explosion.wav"):
world.sound.stop("sounds/explosion.wav")
"""
if not path:
raise ValueError("Sound path must not be empty.")
return self.sound_manager.is_sound_playing(path)