diff --git a/ANX.Framework.TestCenter/ANX.Framework.TestCenter.csproj b/ANX.Framework.TestCenter/ANX.Framework.TestCenter.csproj index 3c49f6d7..bcc8f846 100644 --- a/ANX.Framework.TestCenter/ANX.Framework.TestCenter.csproj +++ b/ANX.Framework.TestCenter/ANX.Framework.TestCenter.csproj @@ -62,6 +62,7 @@ + diff --git a/ANX.Framework.TestCenter/AssertHelper.cs b/ANX.Framework.TestCenter/AssertHelper.cs index 90bff6bf..e1de9997 100644 --- a/ANX.Framework.TestCenter/AssertHelper.cs +++ b/ANX.Framework.TestCenter/AssertHelper.cs @@ -45,6 +45,9 @@ using ANXPlane = ANX.Framework.Plane; using XNARect = Microsoft.Xna.Framework.Rectangle; using ANXRect = ANX.Framework.Rectangle; +using XNAAlpha8 = Microsoft.Xna.Framework.Graphics.PackedVector.Alpha8; +using ANXAlpha8 = ANX.Framework.Graphics.PackedVector.Alpha8; + using XNABgr565 = Microsoft.Xna.Framework.Graphics.PackedVector.Bgr565; using ANXBgr565 = ANX.Framework.Graphics.PackedVector.Bgr565; @@ -426,6 +429,18 @@ namespace ANX.Framework.TestCenter } } + public static void ConvertEquals(XNAAlpha8 lhs, ANXAlpha8 rhs, String test) + { + if (lhs.PackedValue == rhs.PackedValue) + { + Assert.Pass(test + " passed"); + } + else + { + Assert.Fail(String.Format("{0} failed: Rg32 XNA: ({1}) Rg32 ANX: ({2})", test, lhs, rhs)); + } + } + public static void ConvertEquals(XNARg32 lhs, ANXRg32 rhs, String test) { if (lhs.PackedValue == rhs.PackedValue) diff --git a/ANX.Framework.TestCenter/Strukturen/Graphics/PackedVector/Alpha8Test.cs b/ANX.Framework.TestCenter/Strukturen/Graphics/PackedVector/Alpha8Test.cs new file mode 100644 index 00000000..5fc77311 --- /dev/null +++ b/ANX.Framework.TestCenter/Strukturen/Graphics/PackedVector/Alpha8Test.cs @@ -0,0 +1,46 @@ +using NUnit.Framework; +using XNAAlpha8 = Microsoft.Xna.Framework.Graphics.PackedVector.Alpha8; +using ANXAlpha8 = ANX.Framework.Graphics.PackedVector.Alpha8; + +// This file is part of the ANX.Framework created by the +// "ANX.Framework developer group" and released under the Ms-PL license. +// For details see: http://anxframework.codeplex.com/license + +namespace ANX.Framework.TestCenter.Strukturen.Graphics.PackedVector +{ + [TestFixture] + class Alpha8Test + { + #region Testdata + + static object[] floats = + { + new object[] {DataFactory.RandomValue }, + new object[] {DataFactory.RandomValue }, + new object[] {DataFactory.RandomValue }, + new object[] {DataFactory.RandomValue }, + new object[] {DataFactory.RandomValue } + }; + + #endregion + + [Test, TestCaseSource("floats")] + public void contructor(float alpha) + { + XNAAlpha8 xnaVal = new XNAAlpha8(alpha); + ANXAlpha8 anxVal = new ANXAlpha8(alpha); + + AssertHelper.ConvertEquals(xnaVal, anxVal, "Constructor"); + } + + [Test, TestCaseSource("floats")] + public void ToAlpha(float alpha) + { + XNAAlpha8 xnaVal = new XNAAlpha8(alpha); + ANXAlpha8 anxVal = new ANXAlpha8(alpha); + + AssertHelper.ConvertEquals(xnaVal.ToAlpha(), anxVal.ToAlpha(), "ToAlpha"); + } + + } +} diff --git a/ANX.Framework/ContainmentType.cs b/ANX.Framework/ContainmentType.cs index c9cae8df..f003882e 100644 --- a/ANX.Framework/ContainmentType.cs +++ b/ANX.Framework/ContainmentType.cs @@ -1,7 +1,4 @@ -#region Using Statements - - -#endregion // Using Statements +using ANX.Framework.NonXNA.Development; // This file is part of the ANX.Framework created by the // "ANX.Framework developer group" and released under the Ms-PL license. @@ -9,6 +6,8 @@ namespace ANX.Framework { + [PercentageComplete(100)] + [TestState(TestStateAttribute.TestState.Tested)] public enum ContainmentType { Disjoint = 0, diff --git a/ANX.Framework/CurveContinuity.cs b/ANX.Framework/CurveContinuity.cs index 76fee918..ace9346e 100644 --- a/ANX.Framework/CurveContinuity.cs +++ b/ANX.Framework/CurveContinuity.cs @@ -1,9 +1,13 @@ +using ANX.Framework.NonXNA.Development; + // This file is part of the ANX.Framework created by the // "ANX.Framework developer group" and released under the Ms-PL license. // For details see: http://anxframework.codeplex.com/license namespace ANX.Framework { + [PercentageComplete(100)] + [TestState(TestStateAttribute.TestState.Tested)] public enum CurveContinuity { Smooth = 0, diff --git a/ANX.Framework/CurveLoopType.cs b/ANX.Framework/CurveLoopType.cs index 774e5cc5..9b229f69 100644 --- a/ANX.Framework/CurveLoopType.cs +++ b/ANX.Framework/CurveLoopType.cs @@ -1,7 +1,4 @@ -#region Using Statements - - -#endregion // Using Statements +using ANX.Framework.NonXNA.Development; // This file is part of the ANX.Framework created by the // "ANX.Framework developer group" and released under the Ms-PL license. @@ -9,6 +6,8 @@ namespace ANX.Framework { + [PercentageComplete(100)] + [TestState(TestStateAttribute.TestState.Tested)] public enum CurveLoopType { Constant = 0, diff --git a/ANX.Framework/CurveTangent.cs b/ANX.Framework/CurveTangent.cs index 9e1128f0..e026d321 100644 --- a/ANX.Framework/CurveTangent.cs +++ b/ANX.Framework/CurveTangent.cs @@ -1,7 +1,4 @@ -#region Using Statements - - -#endregion // Using Statements +using ANX.Framework.NonXNA.Development; // This file is part of the ANX.Framework created by the // "ANX.Framework developer group" and released under the Ms-PL license. @@ -9,6 +6,8 @@ namespace ANX.Framework { + [PercentageComplete(100)] + [TestState(TestStateAttribute.TestState.Tested)] public enum CurveTangent { Flat, diff --git a/ANX.Framework/DisplayOrientation.cs b/ANX.Framework/DisplayOrientation.cs index 7a945d56..c46cc79b 100644 --- a/ANX.Framework/DisplayOrientation.cs +++ b/ANX.Framework/DisplayOrientation.cs @@ -1,5 +1,6 @@ #region Using Statements using System; +using ANX.Framework.NonXNA.Development; #endregion // Using Statements @@ -10,6 +11,8 @@ using System; namespace ANX.Framework { [Flags] + [PercentageComplete(100)] + [TestState(TestStateAttribute.TestState.Tested)] public enum DisplayOrientation { Default = 0, diff --git a/ANX.Framework/Graphics/PackedVector/Alpha8.cs b/ANX.Framework/Graphics/PackedVector/Alpha8.cs index 393f74b4..f9e50e54 100644 --- a/ANX.Framework/Graphics/PackedVector/Alpha8.cs +++ b/ANX.Framework/Graphics/PackedVector/Alpha8.cs @@ -12,8 +12,8 @@ using ANX.Framework.NonXNA.Development; namespace ANX.Framework.Graphics.PackedVector { [PercentageComplete(100)] - [Developer("???")] - [TestState(TestStateAttribute.TestState.Untested)] + [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] public struct Alpha8 : IPackedVector, IEquatable, IPackedVector { private byte packedValue; diff --git a/ANX.Framework/Graphics/PackedVector/Bgr565.cs b/ANX.Framework/Graphics/PackedVector/Bgr565.cs index 398863ab..7a506cdf 100644 --- a/ANX.Framework/Graphics/PackedVector/Bgr565.cs +++ b/ANX.Framework/Graphics/PackedVector/Bgr565.cs @@ -11,8 +11,8 @@ using ANX.Framework.NonXNA.Development; namespace ANX.Framework.Graphics.PackedVector { [PercentageComplete(100)] - [Developer("???")] - [TestState(TestStateAttribute.TestState.Untested)] + [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] public struct Bgr565 : IPackedVector, IEquatable, IPackedVector { private UInt16 packedValue; diff --git a/ANX.Framework/Graphics/PackedVector/Bgra4444.cs b/ANX.Framework/Graphics/PackedVector/Bgra4444.cs index 5461a435..31854878 100644 --- a/ANX.Framework/Graphics/PackedVector/Bgra4444.cs +++ b/ANX.Framework/Graphics/PackedVector/Bgra4444.cs @@ -11,8 +11,8 @@ using ANX.Framework.NonXNA.Development; namespace ANX.Framework.Graphics.PackedVector { [PercentageComplete(100)] - [Developer("???")] - [TestState(TestStateAttribute.TestState.Untested)] + [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] public struct Bgra4444 : IPackedVector, IEquatable, IPackedVector { private UInt16 packedValue; diff --git a/ANX.Framework/Graphics/PackedVector/Bgra5551.cs b/ANX.Framework/Graphics/PackedVector/Bgra5551.cs index 3b446e87..5b0205e8 100644 --- a/ANX.Framework/Graphics/PackedVector/Bgra5551.cs +++ b/ANX.Framework/Graphics/PackedVector/Bgra5551.cs @@ -11,8 +11,8 @@ using ANX.Framework.NonXNA.Development; namespace ANX.Framework.Graphics.PackedVector { [PercentageComplete(100)] - [Developer("???")] - [TestState(TestStateAttribute.TestState.Untested)] + [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] public struct Bgra5551 : IPackedVector, IEquatable, IPackedVector { private UInt16 packedValue; diff --git a/ANX.Framework/Graphics/PackedVector/Byte4.cs b/ANX.Framework/Graphics/PackedVector/Byte4.cs index 99c771e4..ad4e32d2 100644 --- a/ANX.Framework/Graphics/PackedVector/Byte4.cs +++ b/ANX.Framework/Graphics/PackedVector/Byte4.cs @@ -11,8 +11,8 @@ using ANX.Framework.NonXNA.Development; namespace ANX.Framework.Graphics.PackedVector { [PercentageComplete(100)] - [Developer("???")] - [TestState(TestStateAttribute.TestState.Untested)] + [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] public struct Byte4 : IPackedVector, IEquatable, IPackedVector { private uint packedValue; diff --git a/ANX.Framework/Graphics/PackedVector/HalfSingle.cs b/ANX.Framework/Graphics/PackedVector/HalfSingle.cs index db5037af..5a38d977 100644 --- a/ANX.Framework/Graphics/PackedVector/HalfSingle.cs +++ b/ANX.Framework/Graphics/PackedVector/HalfSingle.cs @@ -11,8 +11,8 @@ using ANX.Framework.NonXNA.Development; namespace ANX.Framework.Graphics.PackedVector { [PercentageComplete(100)] - [Developer("???")] - [TestState(TestStateAttribute.TestState.Untested)] + [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] public struct HalfSingle : IPackedVector, IEquatable, IPackedVector { UInt16 packedValue; diff --git a/ANX.Framework/Graphics/PackedVector/HalfTypeHelper.cs b/ANX.Framework/Graphics/PackedVector/HalfTypeHelper.cs index b413da6b..3ff1c762 100644 --- a/ANX.Framework/Graphics/PackedVector/HalfTypeHelper.cs +++ b/ANX.Framework/Graphics/PackedVector/HalfTypeHelper.cs @@ -1,6 +1,7 @@ #region Using Statements using System; using System.Runtime.InteropServices; +using ANX.Framework.NonXNA.Development; #endregion // Using Statements @@ -10,6 +11,9 @@ using System.Runtime.InteropServices; namespace ANX.Framework.Graphics.PackedVector { + [PercentageComplete(100)] + [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] internal class HalfTypeHelper { [StructLayout(LayoutKind.Explicit)] diff --git a/ANX.Framework/Graphics/PackedVector/HalfVector2.cs b/ANX.Framework/Graphics/PackedVector/HalfVector2.cs index 4aaba020..710c5c9b 100644 --- a/ANX.Framework/Graphics/PackedVector/HalfVector2.cs +++ b/ANX.Framework/Graphics/PackedVector/HalfVector2.cs @@ -11,8 +11,8 @@ using ANX.Framework.NonXNA.Development; namespace ANX.Framework.Graphics.PackedVector { [PercentageComplete(100)] - [Developer("???")] - [TestState(TestStateAttribute.TestState.Untested)] + [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] public struct HalfVector2 : IPackedVector, IEquatable, IPackedVector { private uint packedValue; diff --git a/ANX.Framework/Graphics/PackedVector/HalfVector4.cs b/ANX.Framework/Graphics/PackedVector/HalfVector4.cs index d554f806..499a596b 100644 --- a/ANX.Framework/Graphics/PackedVector/HalfVector4.cs +++ b/ANX.Framework/Graphics/PackedVector/HalfVector4.cs @@ -11,8 +11,8 @@ using ANX.Framework.NonXNA.Development; namespace ANX.Framework.Graphics.PackedVector { [PercentageComplete(100)] - [Developer("???")] - [TestState(TestStateAttribute.TestState.Untested)] + [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] public struct HalfVector4 : IPackedVector, IEquatable, IPackedVector { private ulong packedValue; diff --git a/ANX.Framework/Graphics/PackedVector/IPackedVector.cs b/ANX.Framework/Graphics/PackedVector/IPackedVector.cs index 706c503a..96f7473e 100644 --- a/ANX.Framework/Graphics/PackedVector/IPackedVector.cs +++ b/ANX.Framework/Graphics/PackedVector/IPackedVector.cs @@ -5,9 +5,9 @@ using ANX.Framework.NonXNA.Development; namespace ANX.Framework.Graphics.PackedVector { - [PercentageComplete(100)] - [TestState(TestStateAttribute.TestState.Tested)] + [PercentageComplete(100)] [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] public interface IPackedVector { void PackFromVector4(Vector4 vector); @@ -15,9 +15,9 @@ namespace ANX.Framework.Graphics.PackedVector Vector4 ToVector4(); } - [PercentageComplete(100)] - [TestState(TestStateAttribute.TestState.Tested)] + [PercentageComplete(100)] [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] public interface IPackedVector : IPackedVector { TPacked PackedValue diff --git a/ANX.Framework/Graphics/PackedVector/NormalizedByte2.cs b/ANX.Framework/Graphics/PackedVector/NormalizedByte2.cs index 90ea28bd..d5f90ed4 100644 --- a/ANX.Framework/Graphics/PackedVector/NormalizedByte2.cs +++ b/ANX.Framework/Graphics/PackedVector/NormalizedByte2.cs @@ -11,8 +11,8 @@ using ANX.Framework.NonXNA.Development; namespace ANX.Framework.Graphics.PackedVector { [PercentageComplete(100)] - [Developer("???")] - [TestState(TestStateAttribute.TestState.Untested)] + [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] public struct NormalizedByte2 : IPackedVector, IEquatable, IPackedVector { private ushort packedValue; diff --git a/ANX.Framework/Graphics/PackedVector/NormalizedByte4.cs b/ANX.Framework/Graphics/PackedVector/NormalizedByte4.cs index e0553866..3c2885a0 100644 --- a/ANX.Framework/Graphics/PackedVector/NormalizedByte4.cs +++ b/ANX.Framework/Graphics/PackedVector/NormalizedByte4.cs @@ -11,8 +11,8 @@ using ANX.Framework.NonXNA.Development; namespace ANX.Framework.Graphics.PackedVector { [PercentageComplete(100)] - [Developer("???")] - [TestState(TestStateAttribute.TestState.Untested)] + [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] public struct NormalizedByte4 : IPackedVector, IEquatable, IPackedVector { private uint packedValue; diff --git a/ANX.Framework/Graphics/PackedVector/NormalizedShort2.cs b/ANX.Framework/Graphics/PackedVector/NormalizedShort2.cs index f8a5dbea..1b8451a8 100644 --- a/ANX.Framework/Graphics/PackedVector/NormalizedShort2.cs +++ b/ANX.Framework/Graphics/PackedVector/NormalizedShort2.cs @@ -11,8 +11,8 @@ using ANX.Framework.NonXNA.Development; namespace ANX.Framework.Graphics.PackedVector { [PercentageComplete(100)] - [Developer("???")] - [TestState(TestStateAttribute.TestState.Untested)] + [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] public struct NormalizedShort2 : IPackedVector, IEquatable, IPackedVector { private uint packedValue; diff --git a/ANX.Framework/Graphics/PackedVector/NormalizedShort4.cs b/ANX.Framework/Graphics/PackedVector/NormalizedShort4.cs index 38296e46..0f7707b2 100644 --- a/ANX.Framework/Graphics/PackedVector/NormalizedShort4.cs +++ b/ANX.Framework/Graphics/PackedVector/NormalizedShort4.cs @@ -11,8 +11,8 @@ using ANX.Framework.NonXNA.Development; namespace ANX.Framework.Graphics.PackedVector { [PercentageComplete(100)] - [Developer("???")] - [TestState(TestStateAttribute.TestState.Untested)] + [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] public struct NormalizedShort4 : IPackedVector, IEquatable, IPackedVector { private ulong packedValue; diff --git a/ANX.Framework/Graphics/PackedVector/Rg32.cs b/ANX.Framework/Graphics/PackedVector/Rg32.cs index 21c742a6..f1b3b0f0 100644 --- a/ANX.Framework/Graphics/PackedVector/Rg32.cs +++ b/ANX.Framework/Graphics/PackedVector/Rg32.cs @@ -11,8 +11,8 @@ using ANX.Framework.NonXNA.Development; namespace ANX.Framework.Graphics.PackedVector { [PercentageComplete(100)] - [Developer("???")] - [TestState(TestStateAttribute.TestState.Untested)] + [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] public struct Rg32 : IPackedVector, IEquatable, IPackedVector { private uint packedValue; diff --git a/ANX.Framework/Graphics/PackedVector/Rgba1010102.cs b/ANX.Framework/Graphics/PackedVector/Rgba1010102.cs index b5ff1ba0..c5fe8540 100644 --- a/ANX.Framework/Graphics/PackedVector/Rgba1010102.cs +++ b/ANX.Framework/Graphics/PackedVector/Rgba1010102.cs @@ -11,8 +11,8 @@ using ANX.Framework.NonXNA.Development; namespace ANX.Framework.Graphics.PackedVector { [PercentageComplete(100)] - [Developer("???")] - [TestState(TestStateAttribute.TestState.Untested)] + [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] public struct Rgba1010102 : IPackedVector, IEquatable, IPackedVector { private uint packedValue; diff --git a/ANX.Framework/Graphics/PackedVector/Rgba64.cs b/ANX.Framework/Graphics/PackedVector/Rgba64.cs index 1b0b61d7..5aa3df64 100644 --- a/ANX.Framework/Graphics/PackedVector/Rgba64.cs +++ b/ANX.Framework/Graphics/PackedVector/Rgba64.cs @@ -11,8 +11,8 @@ using ANX.Framework.NonXNA.Development; namespace ANX.Framework.Graphics.PackedVector { [PercentageComplete(100)] - [Developer("???")] - [TestState(TestStateAttribute.TestState.Untested)] + [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] public struct Rgba64 : IPackedVector, IEquatable, IPackedVector { private ulong packedValue; diff --git a/ANX.Framework/Graphics/PackedVector/Short2.cs b/ANX.Framework/Graphics/PackedVector/Short2.cs index 9d269525..78d0add7 100644 --- a/ANX.Framework/Graphics/PackedVector/Short2.cs +++ b/ANX.Framework/Graphics/PackedVector/Short2.cs @@ -11,8 +11,8 @@ using ANX.Framework.NonXNA.Development; namespace ANX.Framework.Graphics.PackedVector { [PercentageComplete(100)] - [Developer("???")] - [TestState(TestStateAttribute.TestState.Untested)] + [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] public struct Short2 : IPackedVector, IEquatable, IPackedVector { private uint packedValue; diff --git a/ANX.Framework/Graphics/PackedVector/Short4.cs b/ANX.Framework/Graphics/PackedVector/Short4.cs index 6c88dd04..e8770f58 100644 --- a/ANX.Framework/Graphics/PackedVector/Short4.cs +++ b/ANX.Framework/Graphics/PackedVector/Short4.cs @@ -11,8 +11,8 @@ using ANX.Framework.NonXNA.Development; namespace ANX.Framework.Graphics.PackedVector { [PercentageComplete(100)] - [Developer("???")] - [TestState(TestStateAttribute.TestState.Untested)] + [Developer("Glatzemann")] + [TestState(TestStateAttribute.TestState.Tested)] public struct Short4 : IPackedVector, IEquatable, IPackedVector { private ulong packedValue; diff --git a/ANX.Framework/Media/MediaPlayer.cs b/ANX.Framework/Media/MediaPlayer.cs index e3afdd24..faf4a937 100644 --- a/ANX.Framework/Media/MediaPlayer.cs +++ b/ANX.Framework/Media/MediaPlayer.cs @@ -17,6 +17,7 @@ namespace ANX.Framework.Media public static event EventHandler MediaStateChanged; #endregion + private static bool isShuffled; private static bool isRepeating; private static float volume; private static MediaState currentState; @@ -26,7 +27,15 @@ namespace ANX.Framework.Media } #region Public - public static bool IsShuffled { get; set; } + public static bool IsShuffled + { + get { return isShuffled; } + set + { + isShuffled = value; + Queue.UpdateOrder(); + } + } public static bool IsRepeating { @@ -79,7 +88,7 @@ namespace ANX.Framework.Media isRepeating = false; IsMuted = false; IsVisualizationEnabled = false; - IsShuffled = false; + isShuffled = false; Queue = new MediaQueue(); FrameworkDispatcher.OnUpdate += Tick; } diff --git a/ANX.Framework/Media/MediaQueue.cs b/ANX.Framework/Media/MediaQueue.cs index b919bbc0..28e23d50 100644 --- a/ANX.Framework/Media/MediaQueue.cs +++ b/ANX.Framework/Media/MediaQueue.cs @@ -13,7 +13,9 @@ namespace ANX.Framework.Media [Developer("AstrorEnales")] public sealed class MediaQueue { - private readonly List queue; + private readonly List queue; + private readonly List shuffledQueue; + private int activeSongIndex; #region Public public int Count @@ -21,16 +23,28 @@ namespace ANX.Framework.Media get { return queue.Count; } } - public int ActiveSongIndex { get; set; } + public int ActiveSongIndex + { + get { return activeSongIndex; } + set + { + if (Count <= 0) + return; - public Song ActiveSong + ActiveSong.Stop(); + activeSongIndex = Math.Min(value, queue.Count); + ActiveSong.Play(); + } + } + + public Song ActiveSong { - get { return queue.Count <= 0 ? null : queue[ActiveSongIndex]; } + get { return shuffledQueue.Count <= 0 ? null : shuffledQueue[ActiveSongIndex]; } } public Song this[int index] { - get { return queue[index]; } + get { return shuffledQueue[index]; } } #endregion @@ -38,11 +52,13 @@ namespace ANX.Framework.Media internal MediaQueue() { queue = new List(); + shuffledQueue = new List(); } ~MediaQueue() { queue.Clear(); + shuffledQueue.Clear(); } #endregion @@ -54,6 +70,7 @@ namespace ANX.Framework.Media Clear(); queue.Add(song); + shuffledQueue.Add(song); ActiveSong.Play(); } @@ -64,9 +81,7 @@ namespace ANX.Framework.Media Clear(); queue.AddRange(songCollection); - // TODO: check if the shuffle is calculated after each finished song or like this! - if (MediaPlayer.IsShuffled) - Shuffle(); + UpdateOrder(); ActiveSong.Play(); } @@ -78,18 +93,34 @@ namespace ANX.Framework.Media Clear(); ActiveSongIndex = index; queue.AddRange(songCollection); - // TODO: check if the shuffle is calculated after each finished song or like this! - if (MediaPlayer.IsShuffled) - Shuffle(); + UpdateOrder(); ActiveSong.Play(); } #endregion + internal void UpdateOrder() + { + if (Count <= 0) + return; + + Song currentPlayingSong = ActiveSong; + if (MediaPlayer.IsShuffled) + Shuffle(); + else + { + shuffledQueue.Clear(); + shuffledQueue.AddRange(queue.ToArray()); + } + + activeSongIndex = shuffledQueue.IndexOf(currentPlayingSong); + } + private void Clear() { Stop(); ActiveSongIndex = 0; queue.Clear(); + shuffledQueue.Clear(); } internal void Stop() @@ -106,9 +137,9 @@ namespace ANX.Framework.Media { int k = rand.Next(n); n--; - Song value = queue[k]; - queue[k] = queue[n]; - queue[n] = value; + Song value = shuffledQueue[k]; + shuffledQueue[k] = shuffledQueue[n]; + shuffledQueue[n] = value; } } diff --git a/ANX.Framework/Media/MediaSource.cs b/ANX.Framework/Media/MediaSource.cs index 6d383f7c..94431a67 100644 --- a/ANX.Framework/Media/MediaSource.cs +++ b/ANX.Framework/Media/MediaSource.cs @@ -1,7 +1,6 @@ -using System; using System.Collections.Generic; -using ANX.Framework.NonXNA; using ANX.Framework.NonXNA.PlatformSystem; +using ANX.Framework.NonXNA.Development; // This file is part of the ANX.Framework created by the // "ANX.Framework developer group" and released under the Ms-PL license. @@ -9,42 +8,28 @@ using ANX.Framework.NonXNA.PlatformSystem; namespace ANX.Framework.Media { - public sealed class MediaSource + [PercentageComplete(100)] + [Developer("AstrorEnales")] + [TestState(TestStateAttribute.TestState.Untested)] + public sealed class MediaSource { - #region Public - public string Name - { - get; - private set; - } + public string Name { get; private set; } + public MediaSourceType MediaSourceType { get; private set; } - public MediaSourceType MediaSourceType - { - get; - private set; - } - #endregion - - #region Constructor internal MediaSource(string setName, MediaSourceType setType) { Name = setName; MediaSourceType = setType; } - #endregion - #region Constructor public static IList GetAvailableMediaSources() { return PlatformSystem.Instance.GetAvailableMediaSources(); } - #endregion - #region ToString public override string ToString() { return Name; } - #endregion } } diff --git a/ANX.Framework/PlaneIntersectionType.cs b/ANX.Framework/PlaneIntersectionType.cs index c7a5420a..53c16421 100644 --- a/ANX.Framework/PlaneIntersectionType.cs +++ b/ANX.Framework/PlaneIntersectionType.cs @@ -1,9 +1,13 @@ +using ANX.Framework.NonXNA.Development; + // This file is part of the ANX.Framework created by the // "ANX.Framework developer group" and released under the Ms-PL license. // For details see: http://anxframework.codeplex.com/license namespace ANX.Framework { + [PercentageComplete(100)] + [TestState(TestStateAttribute.TestState.Tested)] public enum PlaneIntersectionType { Front = 0, diff --git a/ANX.Framework/PlayerIndex.cs b/ANX.Framework/PlayerIndex.cs index 11a68de7..8df51f92 100644 --- a/ANX.Framework/PlayerIndex.cs +++ b/ANX.Framework/PlayerIndex.cs @@ -1,9 +1,13 @@ +using ANX.Framework.NonXNA.Development; + // This file is part of the ANX.Framework created by the // "ANX.Framework developer group" and released under the Ms-PL license. // For details see: http://anxframework.codeplex.com/license namespace ANX.Framework { + [PercentageComplete(100)] + [TestState(TestStateAttribute.TestState.Tested)] public enum PlayerIndex { One = 0, diff --git a/ANX.Framework/TitleContainer.cs b/ANX.Framework/TitleContainer.cs index 4bb6c08f..bedd5953 100644 --- a/ANX.Framework/TitleContainer.cs +++ b/ANX.Framework/TitleContainer.cs @@ -9,45 +9,26 @@ using ANX.Framework.NonXNA.Development; namespace ANX.Framework { - [PercentageComplete(100)] - [TestState(TestStateAttribute.TestState.Untested)] - [Developer("AstrorEnales")] - public static class TitleContainer - { - private static INativeTitleContainer nativeImplementation; + [PercentageComplete(100)] + [TestState(TestStateAttribute.TestState.Untested)] + [Developer("AstrorEnales")] + public static class TitleContainer + { + private static readonly INativeTitleContainer nativeImplementation; - static TitleContainer() - { - try - { - nativeImplementation = PlatformSystem.Instance.CreateTitleContainer(); - } - catch (PlatformSystemInstanceException ex) - { - //TODO: error handling - } - } - - public static Stream OpenStream(string name) - { - if (nativeImplementation == null) - { - //TODO: error handling - return null; - } + static TitleContainer() + { + nativeImplementation = PlatformSystem.Instance.CreateTitleContainer(); + } - return nativeImplementation.OpenStream(name); - } + public static Stream OpenStream(string name) + { + return nativeImplementation.OpenStream(name); + } - internal static string GetCleanPath(string path) - { - if (nativeImplementation == null) - { - //TODO: error handling - return null; - } - - return nativeImplementation.GetCleanPath(path); - } - } + internal static string GetCleanPath(string path) + { + return nativeImplementation.GetCleanPath(path); + } + } } diff --git a/PlatformSystems/ANX.PlatformSystem.Windows/WindowsPlatformSystem.cs b/PlatformSystems/ANX.PlatformSystem.Windows/WindowsPlatformSystem.cs index 3a12a618..8edd5a62 100644 --- a/PlatformSystems/ANX.PlatformSystem.Windows/WindowsPlatformSystem.cs +++ b/PlatformSystems/ANX.PlatformSystem.Windows/WindowsPlatformSystem.cs @@ -70,12 +70,15 @@ namespace ANX.PlatformSystem.Windows } #endregion - #region GetAvailableMediaSources (TODO) - public IList GetAvailableMediaSources() - { - throw new NotImplementedException(); - } - #endregion + #region GetAvailableMediaSources + public IList GetAvailableMediaSources() + { + return new[] + { + new MediaSource("Local Windows Media Player Library", MediaSourceType.LocalDevice) + }; + } + #endregion #region OpenReadFilestream public Stream OpenReadFilestream(string filepath)