import pygame
from pygame.locals import *
import os
from engine.EventHandler import EventMonitor
from engine import Randomness

class Music(EventMonitor):
	"""
	Controls the playback of music.
	"""
	def __init__(self):
		"""
		Start some music playing.
		"""
		EventMonitor.__init__(self)
		# set it nice and quiet
		pygame.mixer.music.set_volume(0.1)
		self.tune = 0
		if os.path.isdir("music/"):
			self.musicfiles = [f for f in os.listdir("music/") if (f[-3:] == "mp3" or f[-3:] == "ogg")]
			if len(self.musicfiles):
				Randomness.seed()
				self.tune = Randomness.randint(0, len(self.musicfiles) - 1)
				self.TuneDone(None)
	
	def Update(self):
		self.Pump()
	
	def TuneDone(self, e):
		"""
		Start the next tune on callback from the events queue.
		"""
		try:
			pygame.mixer.music.load("music/" + self.musicfiles[self.tune])
			pygame.mixer.music.set_endevent(USEREVENT)
			pygame.mixer.music.play()
			self.tune = (self.tune + 1) % len(self.musicfiles)
		except:
			pass
	

