All pastes #766327 Raw Edit

Stuff

public text v1 · immutable
·published 2007-11-08 20:20 UTC
rendered paste body
#region Using Statements
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Storage;
#endregion


namespace Precision
{
    class AudioManager
    {
        private AudioEngine engine;
        private WaveBank waveBank;
        private SoundBank soundBank;
        

        private Cue cue = null;
        private AudioCategory category;

        private List<Cue> cueList = new List<Cue>();
        private List<AudioCategory> catList = new List<AudioCategory>();

        public AudioManager(AudioEngine engine, WaveBank waveBank, SoundBank soundBank)
        {
            this.engine = engine;
            this.waveBank = waveBank;
            this.soundBank = soundBank;
        }

        public void playSound(string name)
        {
            cue = soundBank.GetCue(name);
            cue.Play();
            cueList.Add(cue);
            cue = null;
        }

        public void pauseSound(string name)
        {
            cue = soundBank.GetCue(name);
            if (!cue.IsPaused)
                cue.Pause();

            cue = null;
        }

        public void resumeSound(string name)
        {
            cue = soundBank.GetCue(name);
            if(cue.IsPaused)
                cue.Resume();

            cue = null;
        }

        public void stopAllSound()
        {
            for (int i = cueList.Count - 1; i >= 0; i--)
            {
                cueList[i].Stop(AudioStopOptions.AsAuthored);
                cueList.RemoveAt(i);
            }
        }

        public void stopOneSound(string name)
        {
            cue = soundBank.GetCue(name);
            if (!cue.IsStopped || !cue.IsStopping)
            {
                cue.Stop(AudioStopOptions.AsAuthored);
                for (int i = cueList.Count - 1; i >= 0; i--)
                {
                    if (cue.Name.ToString() == name)
                    {
                        cueList.RemoveAt(i);
                        return;
                    }
                }
            }

            cue = null;
        }

        public void setPitch(string cue, float pitch)
        {
            this.cue = soundBank.GetCue(cue);
            this.cue.SetVariable("Pitch", pitch);
            this.cue = null;
        }
        
        public void setVolume(string category, float volume)
        {
            this.category = engine.GetCategory(category);
            this.category.SetVolume(volume);
            if (!catList.Contains(this.category))
                catList.Add(this.category);
        }

        public void setAllUsedVolume(float volume)
        {
            foreach (AudioCategory cat in catList)
            {
                cat.SetVolume(volume);
            }
        }

        public void Update()
        {
            engine.Update();
        }
    }
}