blob: 15dd1a6a3f49c247c70da09e051e6e1ef3359e6f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
""" sfx.sfx - pygame.mixer initialization and sound effects handling """
from pathlib import Path
import pygame
class Sfx:
""" Sound Effects and Music? """
def __init__(self):
self.initialized = False
self.sound = {}
try:
pygame.mixer.pre_init(channels=2, buffer=512, frequency=48000)
except pygame.error:
pass
def init(self, base_path):
""" To be called after pygame is initialized. Actual mixer init and
sample loading happens here """
try:
pygame.mixer.init()
self.initialized = True
for mp3_file in Path(base_path).glob('*.mp3'):
self.sound[str(mp3_file.stem)] = pygame.mixer.Sound(mp3_file)
except pygame.error:
pass
def play(self, sample):
""" Just plays named sample loaded from assets directory """
if self.initialized:
self.sound[sample].play()
# Initialize only one time
try:
# pylint: disable = used-before-assignment
# This is intented behaviour
sfx
except NameError:
sfx = Sfx()
|