###########################################################
# Sound Effects - Railshooter Module
# Loads all the Sound Effects for the Game
###########################################################

# DESCRIPTION:
# This Class pre-loads all the Sounds that are used in the game.
# Sound Intervals are then defines to adjust volume of the Sounds.


from direct.showbase.ShowBaseGlobal import *
from direct.interval.IntervalGlobal import *
from direct.task import Task
from pandac.PandaModules import *


########################################
# Load Explosions
########################################

# Load Sound Effect
explosion1SFX = base.loadSfx('Sounds/explosion.mp3')
explosion2SFX = base.loadSfx('Sounds/plasmaExplosion.mp3')
explosion3SFX = base.loadSfx('Sounds/Explode6.wav')
explosion1 = SoundInterval(explosion1SFX, volume=0.4, name='explosion1')
explosion2 = SoundInterval(explosion2SFX, volume=0.4, name='explosion2')
explosion3 = SoundInterval(explosion3SFX, volume=0.7, name='explosion3')


########################################
# Load Player Sound Effects
########################################

# Player Voice Sounds
pain1SFX = base.loadSfx('Sounds/pain1.mp3')
pain1 = SoundInterval(pain1SFX, volume=0.6, name='pain1')

pain2SFX = base.loadSfx('Sounds/pain2.mp3')
pain2 = SoundInterval(pain2SFX, volume=0.6, name='pain2')

deathSFX = base.loadSfx('Sounds/death.mp3')
death = SoundInterval(deathSFX, volume=0.6, name='death')

gruntSFX = base.loadSfx('Sounds/grunt.mp3')
grunt = SoundInterval(gruntSFX, volume=0.08, name='grunt')


########################################
# Load Player Projectile Sound Effects
########################################

projectileSFX = base.loadSfx('Sounds/enemyHit1.wav')
projectile = SoundInterval(projectileSFX, volume=0.6, name='projectile')

launchMissileSFX = base.loadSfx('Sounds/launchMissile.mp3')
launchMissile = SoundInterval(launchMissileSFX, volume=0.3, name='launchMissile')

playerHit1SFX = base.loadSfx('Sounds/CrashHit3.mp3')
playerHit1 = SoundInterval(playerHit1SFX, volume=0.6, name='playerHit1')

lockonSFX = base.loadSfx('Sounds/lockon.wav')
lockon = SoundInterval(lockonSFX, volume=0.3, name='lockon')

powerupSFX = base.loadSfx('Sounds/PowerupSound.mp3')
powup = SoundInterval(powerupSFX, volume=0.4, name='powup')

IntroFlyBySFX = base.loadSfx('Sounds/IntroFlyBy.mp3')
IntroFlyBy = SoundInterval(IntroFlyBySFX, volume=0.8, name='IntroFlyBy')


########################################
# Load Enemy Sound Effects
########################################

# Enemy Shooting Sounds
radBlastSFX = base.loadSfx('Sounds/FlameJets.mp3')
radBlast = SoundInterval(radBlastSFX, volume=0.9, name='radBlast')

eMissileSFX = base.loadSfx('Sounds/EnemyMissile.mp3')
eMissile = SoundInterval(eMissileSFX, volume=1.0, name='eMissile')

regularBlastSFX = base.loadSfx('Sounds/regularBlast.mp3')
regularBlast = SoundInterval(regularBlastSFX, volume=0.3, name='regularBlast')

enemyHit1SFX = base.loadSfx('Sounds/machine1.mp3')
enemyHit1 = SoundInterval(enemyHit1SFX, volume=0.2, name='enemyHit1')

hit1SFX = base.loadSfx('Sounds/hit1.mp3')
hit1 = SoundInterval(hit1SFX, volume=0.6, name='hit1')


########################################
# Load Boss Sound Effects
########################################

bossRoarSFX = base.loadSfx('Sounds/BossRoar.mp3')
bossRoar = SoundInterval(bossRoarSFX, volume=1.0, name='bossRoar')

ambientBossSFX = base.loadSfx('Sounds/AmbientBoss.mp3')
ambientBoss = SoundInterval(ambientBossSFX, volume=0.4, name='ambientBoss')