50 lines
1.1 KiB
Python
50 lines
1.1 KiB
Python
import pygame
|
|
from io import BytesIO
|
|
|
|
|
|
class MixerHandler:
|
|
def __init__(self) -> None:
|
|
self.muted = False
|
|
self.volume = 1
|
|
|
|
def get_busy(self):
|
|
return pygame.mixer.music.get_busy()
|
|
|
|
def load(self, bytes):
|
|
pygame.mixer.music.load(BytesIO(bytes))
|
|
|
|
def unload(self):
|
|
self.stop()
|
|
pygame.mixer.music.unload()
|
|
|
|
def play(self):
|
|
pygame.mixer.music.play()
|
|
|
|
def set_volume(self, vol):
|
|
self.volume = vol
|
|
pygame.mixer.music.set_volume(min(1.0, max(0.0, vol)))
|
|
|
|
def get_volume(self):
|
|
return self.volume
|
|
|
|
def get_pos(self):
|
|
return max(0, pygame.mixer.music.get_pos()) / 1000
|
|
|
|
def stop(self):
|
|
pygame.mixer.music.stop()
|
|
|
|
def pause(self):
|
|
pygame.mixer.music.pause()
|
|
|
|
def unpause(self):
|
|
# unpausing the mixer when nothing has been loaded causes weird behaviour
|
|
if pygame.mixer.music.get_pos() != -1:
|
|
pygame.mixer.music.unpause()
|
|
|
|
def mute(self):
|
|
self.muted = True
|
|
pygame.mixer.music.set_volume(0)
|
|
|
|
def unmute(self):
|
|
self.muted = False
|
|
self.set_volume(self.volume) |