diff --git a/Output/Themes/Ambient/Screens/ScreenSing.xml b/Output/Themes/Ambient/Screens/ScreenSing.xml index e5c7c0bf..f42d5a99 100644 --- a/Output/Themes/Ambient/Screens/ScreenSing.xml +++ b/Output/Themes/Ambient/Screens/ScreenSing.xml @@ -1,7 +1,7 @@  - 6 + 7 None @@ -988,6 +988,36 @@ + + + 640 + 18 + + -1,00 + + 32 + + + + + TextColor + + + TextSColor + + Left + + Center + + + + Outline + + + + + + 1214 @@ -2771,4 +2801,4 @@ - \ No newline at end of file + diff --git a/Output/Themes/Changelog/Changelog_ScreenSing.txt b/Output/Themes/Changelog/Changelog_ScreenSing.txt index 85b859da..51b97fd8 100644 --- a/Output/Themes/Changelog/Changelog_ScreenSing.txt +++ b/Output/Themes/Changelog/Changelog_ScreenSing.txt @@ -1,5 +1,11 @@ ScreenSing ++++++++++ +Version 7 + +Add: + !text-position and size will be overwritten by vocaluxe! + +++++++++ Version 6 diff --git a/Vocaluxe/Screens/CScreenSing.cs b/Vocaluxe/Screens/CScreenSing.cs index e9769d91..89e3cf21 100644 --- a/Vocaluxe/Screens/CScreenSing.cs +++ b/Vocaluxe/Screens/CScreenSing.cs @@ -16,7 +16,7 @@ namespace Vocaluxe.Screens // Version number for theme files. Increment it, if you've changed something on the theme files! protected override int _ScreenVersion { - get { return 6; } + get { return 7; } } private struct STimeRect @@ -31,6 +31,7 @@ namespace Vocaluxe.Screens private const string _TextPause = "TextPause"; private const string _TextDuetName1 = "TextDuetName1"; private const string _TextDuetName2 = "TextDuetName2"; + private const string _TextMedleyCountdown = "TextMedleyCountdown"; private string[,] _TextScores; private string[,] _TextNames; @@ -105,6 +106,7 @@ namespace Vocaluxe.Screens texts.Add(_TextPause); texts.Add(_TextDuetName1); texts.Add(_TextDuetName2); + texts.Add(_TextMedleyCountdown); _BuildTextStrings(ref texts); _ThemeTexts = texts.ToArray(); @@ -435,6 +437,8 @@ namespace Vocaluxe.Screens { if (_Active) { + _UpdateMedleyCountdown(); + if (_CurrentVideo != -1 && CConfig.VideosInSongs == EOffOn.TR_CONFIG_ON && !_Webcam) { RectangleF bounds = new RectangleF(0, 0, CSettings.RenderW, CSettings.RenderH); @@ -499,6 +503,9 @@ namespace Vocaluxe.Screens _DrawLyricHelper(); + if (CGame.GameMode == EGameMode.TR_GAMEMODE_MEDLEY) + Texts[_TextMedleyCountdown].Draw(); + if (_Pause) { Statics[_StaticPauseBG].ForceDraw(); @@ -936,6 +943,34 @@ namespace Vocaluxe.Screens Statics[_StaticLyricHelperDuet].Alpha = 0f; } + private void _UpdateMedleyCountdown() + { + if (CGame.GetSong() != null) + { + CSong song = CGame.GetSong(); + float currentTime = _CurrentTime - song.Start; + float timeToFirstMedleyNote = (CGame.GetTimeFromBeats(song.Medley.StartBeat, song.BPM) + song.Gap - song.Start); + if (currentTime < timeToFirstMedleyNote && CGame.GameMode == EGameMode.TR_GAMEMODE_MEDLEY) + { + Texts[_TextMedleyCountdown].Visible = true; + float timeDiff = timeToFirstMedleyNote - currentTime + 1; + double t = timeDiff - Math.Truncate(timeDiff); + float h = (float)(t * CSettings.RenderH); + float w = CFonts.GetTextBounds(Texts[_TextMedleyCountdown], h).Width; + float x = CSettings.RenderW / 2 - w / 2; + float y = CSettings.RenderH / 2 - h / 2 ; + Texts[_TextMedleyCountdown].X = x; + Texts[_TextMedleyCountdown].Y = y; + Texts[_TextMedleyCountdown].Height = h; + Texts[_TextMedleyCountdown].Text = Math.Round((decimal)(timeDiff - t)).ToString(); + } + else + { + Texts[_TextMedleyCountdown].Visible = false; + } + } + } + private void _DrawLyricHelper() { if (_FadeOut)