diff --git a/Output/Profiles/guest1.xml b/Output/Profiles/guest1.xml
index ba6d26f6..4a528851 100644
--- a/Output/Profiles/guest1.xml
+++ b/Output/Profiles/guest1.xml
@@ -4,7 +4,7 @@
Guest 1
TR_CONFIG_EASY
Avatar_f.png
- TR_CONFIG_ON
+ TR_USERROLE_GUEST
TR_CONFIG_ON
\ No newline at end of file
diff --git a/Output/Profiles/guest2.xml b/Output/Profiles/guest2.xml
index 3823fdf5..15437dc4 100644
--- a/Output/Profiles/guest2.xml
+++ b/Output/Profiles/guest2.xml
@@ -4,7 +4,7 @@
Guest 2
TR_CONFIG_EASY
Avatar_f.png
- TR_CONFIG_ON
+ TR_USERROLE_GUEST
TR_CONFIG_ON
\ No newline at end of file
diff --git a/Output/Profiles/guest3.xml b/Output/Profiles/guest3.xml
index df4b05cf..ad1d56f6 100644
--- a/Output/Profiles/guest3.xml
+++ b/Output/Profiles/guest3.xml
@@ -4,7 +4,7 @@
Guest 3
TR_CONFIG_EASY
Avatar_m.png
- TR_CONFIG_ON
+ TR_USERROLE_NORMAL
TR_CONFIG_ON
\ No newline at end of file
diff --git a/Vocaluxe/Base/CBackgroundMusic.cs b/Vocaluxe/Base/CBackgroundMusic.cs
index 4f315e97..d92118d3 100644
--- a/Vocaluxe/Base/CBackgroundMusic.cs
+++ b/Vocaluxe/Base/CBackgroundMusic.cs
@@ -166,7 +166,7 @@ namespace Vocaluxe.Base
CDraw.RemoveTexture(ref _CurrentVideoTexture);
_Video = -1;
}
- CSound.FadeAndStop(_CurrentMusicStream, 0f, CSettings.BackgroundMusicFadeTime);
+ CSound.FadeAndClose(_CurrentMusicStream, 0f, CSettings.BackgroundMusicFadeTime);
_CurrentMusicStream = -1;
_CurrentPlaylistElement = new CPlaylistElement();
diff --git a/Vocaluxe/Base/CMain.cs b/Vocaluxe/Base/CMain.cs
index ff9f0f5d..df9cf03d 100644
--- a/Vocaluxe/Base/CMain.cs
+++ b/Vocaluxe/Base/CMain.cs
@@ -785,7 +785,7 @@ namespace Vocaluxe.Base
public void FadeAndStop(int soundStream, float targetVolume, float duration)
{
- CSound.FadeAndStop(soundStream, targetVolume, duration);
+ CSound.FadeAndClose(soundStream, targetVolume, duration);
}
public void SetStreamVolume(int soundStream, float volume)
diff --git a/Vocaluxe/Base/CSound.cs b/Vocaluxe/Base/CSound.cs
index c3f354da..7df51ad7 100644
--- a/Vocaluxe/Base/CSound.cs
+++ b/Vocaluxe/Base/CSound.cs
@@ -122,11 +122,16 @@ namespace Vocaluxe.Base
_Playback.FadeAndPause(stream, targetVolume, seconds);
}
- public static void FadeAndStop(int stream, float targetVolume, float seconds)
+ public static void FadeAndClose(int stream, float targetVolume, float seconds)
{
_Playback.FadeAndClose(stream, targetVolume, seconds);
}
+ public static void FadeAndStop(int stream, float targetVolume, float seconds)
+ {
+ _Playback.FadeAndStop(stream, targetVolume, seconds);
+ }
+
public static void SetStreamVolume(int stream, float volume)
{
_Playback.SetStreamVolume(stream, volume);
@@ -192,7 +197,7 @@ namespace Vocaluxe.Base
int stream = Load(file);
float length = GetLength(stream);
Play(stream);
- FadeAndStop(stream, 100f, length);
+ FadeAndClose(stream, 100f, length);
return stream;
}
#endregion Sounds
diff --git a/Vocaluxe/Lib/Sound/CGstreamerAudio.cs b/Vocaluxe/Lib/Sound/CGstreamerAudio.cs
index 334800ba..d9aeea6e 100644
--- a/Vocaluxe/Lib/Sound/CGstreamerAudio.cs
+++ b/Vocaluxe/Lib/Sound/CGstreamerAudio.cs
@@ -159,5 +159,11 @@ namespace Vocaluxe.Lib.Sound
{
CGstreamerAudioWrapper.Update();
}
+
+
+ public void FadeAndStop(int stream, float targetVolume, float seconds)
+ {
+ throw new NotImplementedException();
+ }
}
}
\ No newline at end of file
diff --git a/Vocaluxe/Lib/Sound/CGstreamerSharpAudio.cs b/Vocaluxe/Lib/Sound/CGstreamerSharpAudio.cs
index 3be86bb9..6142e6f4 100644
--- a/Vocaluxe/Lib/Sound/CGstreamerSharpAudio.cs
+++ b/Vocaluxe/Lib/Sound/CGstreamerSharpAudio.cs
@@ -124,6 +124,13 @@ namespace Vocaluxe.Lib.Sound
Streams[stream].FadeAndClose(targetVolume, seconds);
}
+ public void FadeAndStop(int stream, float targetVolume, float seconds)
+ {
+ if (!Streams.ContainsKey(stream))
+ return;
+ Streams[stream].FadeAndStop(targetVolume, seconds);
+ }
+
public void SetStreamVolume(int stream, float volume)
{
if (!Streams.ContainsKey(stream))
@@ -205,6 +212,7 @@ namespace Vocaluxe.Lib.Sound
private bool _Fading;
private bool _CloseStreamAfterFade;
private bool _PauseStreamAfterFade;
+ private bool _StopStreamAfterFade;
private Stopwatch _FadeTimer = new Stopwatch();
private float _FadeTime;
private float _FadeVolume;
@@ -272,7 +280,6 @@ namespace Vocaluxe.Lib.Sound
if (_Element != null)
{
_Element.SetState(State.Null);
- _Element.Dispose();
}
_Closed = true;
_Finished = true;
@@ -312,6 +319,12 @@ namespace Vocaluxe.Lib.Sound
_CloseStreamAfterFade = true;
}
+ public void FadeAndStop(float targetVolume, float seconds)
+ {
+ Fade(targetVolume, seconds);
+ _StopStreamAfterFade = true;
+ }
+
public float Volume
{
get
@@ -404,7 +417,7 @@ namespace Vocaluxe.Lib.Sound
if (_Fading)
{
if (_FadeTimer.ElapsedMilliseconds < (_FadeTime * 1000f))
- Volume = ((_FadeTimer.ElapsedMilliseconds) / (_FadeTime * 1000f)) * 100f;
+ Volume = ((_FadeTimer.ElapsedMilliseconds) / (_FadeTime * 1000f)) * _FadeVolume;
else
{
Volume = _FadeVolume;
@@ -412,9 +425,12 @@ namespace Vocaluxe.Lib.Sound
Close();
if (_PauseStreamAfterFade)
Paused = true;
+ if (_StopStreamAfterFade)
+ Stop();
_CloseStreamAfterFade = false;
_PauseStreamAfterFade = false;
+ _StopStreamAfterFade = false;
_Fading = false;
_FadeTimer.Reset();
}
diff --git a/Vocaluxe/Lib/Sound/COpenALPlay.cs b/Vocaluxe/Lib/Sound/COpenALPlay.cs
index 45a17fd1..131a7ff7 100644
--- a/Vocaluxe/Lib/Sound/COpenALPlay.cs
+++ b/Vocaluxe/Lib/Sound/COpenALPlay.cs
@@ -345,6 +345,12 @@ namespace Vocaluxe.Lib.Sound
_Context.Dispose();
_Context = null;
}
+
+
+ public void FadeAndStop(int stream, float targetVolume, float seconds)
+ {
+ throw new NotImplementedException();
+ }
}
class COpenAlStream : IDisposable
diff --git a/Vocaluxe/Lib/Sound/CPortAudioPlay.cs b/Vocaluxe/Lib/Sound/CPortAudioPlay.cs
index 651d2a9e..6cbf218b 100644
--- a/Vocaluxe/Lib/Sound/CPortAudioPlay.cs
+++ b/Vocaluxe/Lib/Sound/CPortAudioPlay.cs
@@ -179,6 +179,18 @@ namespace Vocaluxe.Lib.Sound
}
public void FadeAndClose(int stream, float targetVolume, float seconds)
+ {
+ if (_Initialized)
+ {
+ lock (_MutexDecoder)
+ {
+ if (_AlreadyAdded(stream))
+ _Decoder[_GetStreamIndex(stream)].FadeAndClose(targetVolume, seconds, _Closeproc, stream);
+ }
+ }
+ }
+
+ public void FadeAndStop(int stream, float targetVolume, float seconds)
{
if (_Initialized)
{
@@ -346,6 +358,7 @@ namespace Vocaluxe.Lib.Sound
private float _StartVolume = 1f;
private bool _CloseStreamAfterFade;
private bool _PauseStreamAfterFade;
+ private bool _StopStreamAfterFade;
private bool _Fading;
private static CPortAudio.SPaHostApiInfo _ApiInfo;
@@ -510,7 +523,7 @@ namespace Vocaluxe.Lib.Sound
Fade(targetVolume, fadeTime);
}
- public void FadeAndStop(float targetVolume, float fadeTime, Closeproc closeProc, int streamID)
+ public void FadeAndClose(float targetVolume, float fadeTime, Closeproc closeProc, int streamID)
{
_Closeproc = closeProc;
_StreamID = streamID;
@@ -519,10 +532,20 @@ namespace Vocaluxe.Lib.Sound
Fade(targetVolume, fadeTime);
}
+ public void FadeAndStop(float targetVolume, float fadeTime, Closeproc closeProc, int streamID)
+ {
+ _Closeproc = closeProc;
+ _StreamID = streamID;
+ _StopStreamAfterFade = true;
+
+ Fade(targetVolume, fadeTime);
+ }
+
public void Play()
{
Paused = false;
_PauseStreamAfterFade = false;
+ _StopStreamAfterFade = false;
lock (_Mutex)
{
_ErrorCheck("StartStream", CPortAudio.Pa_StartStream(_Ptr));
@@ -921,6 +944,8 @@ namespace Vocaluxe.Lib.Sound
if (_PauseStreamAfterFade)
Paused = true;
+ if (_StopStreamAfterFade)
+ Stop();
}
}
}
diff --git a/Vocaluxe/Lib/Sound/IPlayback.cs b/Vocaluxe/Lib/Sound/IPlayback.cs
index b7aed2f3..935956f5 100644
--- a/Vocaluxe/Lib/Sound/IPlayback.cs
+++ b/Vocaluxe/Lib/Sound/IPlayback.cs
@@ -48,6 +48,7 @@ namespace Vocaluxe.Lib.Sound
void Fade(int stream, float targetVolume, float seconds);
void FadeAndPause(int stream, float targetVolume, float seconds);
void FadeAndClose(int stream, float targetVolume, float seconds);
+ void FadeAndStop(int stream, float targetVolume, float seconds);
void SetStreamVolume(int stream, float volume);
void SetStreamVolumeMax(int stream, float volume);
diff --git a/Vocaluxe/Program.cs b/Vocaluxe/Program.cs
index fdd13fd0..f85b67d9 100644
--- a/Vocaluxe/Program.cs
+++ b/Vocaluxe/Program.cs
@@ -45,11 +45,14 @@ namespace Vocaluxe
private static void Main(string[] args)
// ReSharper restore InconsistentNaming
{
+#if !DEBUG
AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionHandler;
+#endif
AppDomain.CurrentDomain.AssemblyResolve += _AssemblyResolver;
// Close program if there is another instance running
if (!_EnsureSingleInstance())
return;
+#if !DEBUG
try
{
_Run(args);
@@ -65,6 +68,9 @@ namespace Vocaluxe
MessageBox.Show("Unhandled error: " + e.Message + stackTrace);
CLog.LogError("Unhandled error: " + e.Message + stackTrace);
}
+#else
+ _Run(args);
+#endif
_CloseProgram();
}
diff --git a/Vocaluxe/Screens/CScreenSing.cs b/Vocaluxe/Screens/CScreenSing.cs
index e5c610d3..16ba478a 100644
--- a/Vocaluxe/Screens/CScreenSing.cs
+++ b/Vocaluxe/Screens/CScreenSing.cs
@@ -551,7 +551,7 @@ namespace Vocaluxe.Screens
private void _CloseSong()
{
if (_CurrentStream > -1)
- CSound.FadeAndStop(_CurrentStream, 0f, 0.5f);
+ CSound.FadeAndClose(_CurrentStream, 0f, 0.5f);
CSound.RecordStop();
if (_CurrentVideo != -1)
{
@@ -877,7 +877,7 @@ namespace Vocaluxe.Screens
}
else
{
- CGame.ResetToLastLine(_CurrentStream, _CurrentVideo);
+ //CGame.ResetToLastLine(_CurrentStream, _CurrentVideo);
_Buttons[_ButtonCancel].Visible = false;
_Buttons[_ButtonContinue].Visible = false;
_Buttons[_ButtonSkip].Visible = false;
diff --git a/VocaluxeLib/Menu/CLyric.cs b/VocaluxeLib/Menu/CLyric.cs
index 7c1376a5..4c6366a8 100644
--- a/VocaluxeLib/Menu/CLyric.cs
+++ b/VocaluxeLib/Menu/CLyric.cs
@@ -358,8 +358,10 @@ namespace VocaluxeLib.Menu
SRectF normalRect = _Text.Rect;
_Text.Height += _Text.Height * p * 0.4f;
_Text.X -= (_Text.Rect.W - normalRect.W) / 2f;
- _Text.Y -= (_Text.Rect.W - normalRect.H) / 2f;
+ _Text.Y -= (_Text.Rect.H - normalRect.H) / 2f;
_Text.Z -= 0.1f;
+ _Text.Color = _ColorProcessed;
+
_Text.Draw();
@@ -442,6 +444,7 @@ namespace VocaluxeLib.Menu
return;
_Text.X = jumpx;
+ _Text.Color = _ColorProcessed;
_SetText(_Line.Notes[jumpNote]);
int diff = _Line.Notes[jumpNote].EndBeat - _Line.Notes[jumpNote].StartBeat;
diff --git a/VocaluxeLib/Menu/CNameSelection.cs b/VocaluxeLib/Menu/CNameSelection.cs
index 274a8307..6314a194 100644
--- a/VocaluxeLib/Menu/CNameSelection.cs
+++ b/VocaluxeLib/Menu/CNameSelection.cs
@@ -509,7 +509,7 @@ namespace VocaluxeLib.Menu
{
//Don't show profile if is selected, but if selected and guest
if (CBase.Game.GetPlayers()[p].ProfileID == profile.ID
- && !profile.UserRole.HasFlag(EUserRole.TR_USERROLE_NORMAL))
+ && profile.UserRole >= EUserRole.TR_USERROLE_NORMAL)
visible = false;
}
}