source: 2012/23/RamiP/YAG2DSSBase/YAG2DSS/YAG2DSS/ALTKEngine/SoundPlayer.cs @ 2854

Revision 2854, 5.2 KB checked in by ramipasa, 9 years ago (diff)

laskuri, pup, efektit sun muuta roskaa;

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using Microsoft.Xna.Framework;
5using Microsoft.Xna.Framework.Audio;
6using Microsoft.Xna.Framework.Content;
7using Microsoft.Xna.Framework.GamerServices;
8using Microsoft.Xna.Framework.Graphics;
9using Microsoft.Xna.Framework.Input;
10using Microsoft.Xna.Framework.Media;
11
12
13namespace ALTK.Audio
14{
15    public class Sound
16    {
17        public Sound() { }
18
19        public Sound(string className)
20        {
21            ClassName = className;
22        }
23
24        string aClassName;
25        string aFileName;
26        double aVolumeModifier;
27
28        public string ClassName
29        {
30            get { return aClassName; }
31            set { aClassName = value; }
32        }
33
34        public string FileName
35        {
36            get { return aFileName; }
37            set { aFileName = value; }
38        }
39
40        public double VolumeModifier
41        {
42            get { return aVolumeModifier; }
43            set { aVolumeModifier = value; }
44        }
45    }
46
47    /// <summary>
48    /// This is a game component that implements IUpdateable.
49    /// </summary>
50    public class SoundPlayer : Microsoft.Xna.Framework.GameComponent
51    {
52        public List<Sound> Soundlist = new List<Sound>();
53
54        SoundEffect soundEffect;
55        SoundEffectInstance soundEffectInstance;
56
57        public SoundPlayer(Game game)
58            : base(game)
59        {
60            // TODO: Construct any child components here
61        }
62
63        private int GetSoundId_FromClassName(string ClassName)
64        {
65            for (int soundId = 0; soundId < Soundlist.Count; soundId++)
66            {
67                Console.WriteLine("SoundId " + soundId + " = " + Soundlist[soundId].ClassName);
68
69                if (Soundlist[soundId].ClassName == ClassName)
70                    return soundId;
71            }
72
73            return -1;
74        }
75
76        public void PlaySound(string ClassName)
77        {
78            int soundId = GetSoundId_FromClassName(ClassName);
79
80            if (soundId == 1)
81                ALTKHandler.MessageDisplay.AddItem("Invalid Sound ClassName " + ClassName);
82            else
83                PlaySound(soundId);
84        }
85
86        public void PlaySound(int soundId)
87        {
88            if (ALTKConstants.bSoundEnabled)
89            {
90                if (soundId > -1)
91                {
92                    soundEffect = ALTKHandler.Loader.loadSound(Soundlist[soundId].FileName);
93                }
94                else
95                {
96                    if (soundEffectInstance != null)
97                        soundEffectInstance.Stop(true);
98                    return;
99                }
100
101                soundEffectInstance = soundEffect.CreateInstance();
102                soundEffectInstance.Volume = Convert.ToSingle(Soundlist[soundId].VolumeModifier);
103
104                soundEffectInstance.Play();
105            }
106        }
107
108        public void StopPlaying()
109        {
110            if (soundEffectInstance != null)
111                soundEffectInstance.Stop(true);
112        }
113
114        /// <summary>
115        /// Allows the game component to perform any initialization it needs to before starting
116        /// to run.  This is where it can query for any required services and load content.
117        /// </summary>
118        public override void Initialize()
119        {
120            // TODO: Add your initialization code here
121
122            Sound PlayerGun = new Sound("PLAYERGUN");
123            PlayerGun.FileName = "PlayerGun";
124            PlayerGun.VolumeModifier = 0.5;
125
126            Sound ShipEngine = new Sound("SHIPENGINE");
127            ShipEngine.FileName = "ShipEngine";
128            ShipEngine.VolumeModifier = 1.0;
129
130            Sound Wormhole = new Sound("WORMHOLE");
131            Wormhole.FileName = "Wormhole";
132            Wormhole.VolumeModifier = 1.0;
133
134            Sound MinionGun = new Sound("MINIONGUN");
135            MinionGun.FileName = "MinionGun";
136            MinionGun.VolumeModifier = 1.0;
137
138            Sound AsteroidExplosion = new Sound("ASTEROIDEXPLOSION");
139            AsteroidExplosion.FileName = "AsteroidExplosion";
140            AsteroidExplosion.VolumeModifier = 1.0;
141
142            Sound MinionProjHit = new Sound("MINIONPROJHITPLAYER");
143            MinionProjHit.FileName = "MinionProjHit";
144            MinionProjHit.VolumeModifier = 1.0;
145
146            Sound PlayerCollision = new Sound("PLAYERCOLLISION");
147            PlayerCollision.FileName = "PlayerCollision";
148            PlayerCollision.VolumeModifier = 0.6;
149
150            Soundlist.Add(PlayerGun);
151            Soundlist.Add(ShipEngine);
152            Soundlist.Add(Wormhole);
153            Soundlist.Add(MinionGun);
154            Soundlist.Add(AsteroidExplosion);
155            Soundlist.Add(MinionProjHit); // id 5
156            Soundlist.Add(PlayerCollision);
157
158            base.Initialize();
159        }
160
161        /// <summary>
162        /// Allows the game component to update itself.
163        /// </summary>
164        /// <param name="gameTime">Provides a snapshot of timing values.</param>
165        public override void Update(GameTime gameTime)
166        {
167            // TODO: Add your update code here
168
169            base.Update(gameTime);
170        }
171    }
172}
Note: See TracBrowser for help on using the repository browser.