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

Revision 2854, 3.9 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 Track
16    {
17        public Track() { }
18
19        public Track(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 MusicPlayer : Microsoft.Xna.Framework.GameComponent
51    {
52        public List<Track> Tracklist = new List<Track>();
53
54        SoundEffect soundEffect;
55        SoundEffectInstance soundEffectInstance;
56
57        public MusicPlayer(Game game)
58            : base(game)
59        {
60            // TODO: Construct any child components here
61        }
62
63        private int GetTrackId_FromClassName(string ClassName)
64        {
65            for (int trackId = 0; trackId < Tracklist.Count; trackId++)
66            {
67                Console.WriteLine("Trackid " + trackId + " = " + Tracklist[trackId].ClassName);
68
69                if (Tracklist[trackId].ClassName == ClassName)
70                    return trackId;
71            }
72
73            return -1;
74        }
75
76        public void LoadTrack(string ClassName, bool doLoop)
77        {
78            int trackId = GetTrackId_FromClassName(ClassName);
79
80            if (trackId > -1)
81            {
82                soundEffect = ALTKHandler.Loader.loadMusic(Tracklist[trackId].FileName);
83            }
84            else
85            {
86                ALTKHandler.MessageDisplay.AddItem("MusicPlayer: Invalid track ClassName " + ClassName);
87                if (soundEffectInstance != null)
88                    soundEffectInstance.Stop(true);
89                return;
90            }
91
92            soundEffectInstance = soundEffect.CreateInstance();
93            soundEffectInstance.Volume = Convert.ToSingle(Tracklist[trackId].VolumeModifier);
94
95            if (doLoop)
96                soundEffectInstance.IsLooped = true;
97
98            if (ALTKConstants.bMusicEnabled)
99                soundEffectInstance.Play();
100        }
101
102        public void StopPlaying()
103        {
104            if (soundEffectInstance != null)
105                soundEffectInstance.Stop(true);
106        }
107
108        /// <summary>
109        /// Allows the game component to perform any initialization it needs to before starting
110        /// to run.  This is where it can query for any required services and load content.
111        /// </summary>
112        public override void Initialize()
113        {
114            // TODO: Add your initialization code here
115
116            Track StartingMusic = new Track("YAG2DSS");
117            StartingMusic.FileName = "YAG2DSS";
118            StartingMusic.VolumeModifier = 0.85;
119
120            Tracklist.Add(StartingMusic);
121
122            base.Initialize();
123        }
124
125        /// <summary>
126        /// Allows the game component to update itself.
127        /// </summary>
128        /// <param name="gameTime">Provides a snapshot of timing values.</param>
129        public override void Update(GameTime gameTime)
130        {
131            // TODO: Add your update code here
132
133            base.Update(gameTime);
134        }
135    }
136}
Note: See TracBrowser for help on using the repository browser.