Merge branch 'develop' into ScalingFix

This commit is contained in:
Stefan authored and GitHub committed 2020-02-04 13:02:10 +01:00
commit f027c025f9
18 files changed
+545 -114

No files matched your search

+2 -1
View File
@@ -152,9 +152,10 @@
<string name="TR_SCREENSONG_NUMSONGS">(%v songs)</string> <string name="TR_SCREENSONG_NUMSONGS">(%v songs)</string>
<string name="TR_SCREENSONG_NUMSONG">(%v song)</string> <string name="TR_SCREENSONG_NUMSONG">(%v song)</string>
<string name="TR_SCREENSONG_ARTIST_TITLE">%a - %t</string> <string name="TR_SCREENSONG_ARTIST_TITLE">%a - %t</string>
<string name="TR_SCREENSONG_HELPMESSAGE">A-Z = Jump to the letter • F3 = Search • CTRL+R = Random selection • CTRL+S = Start medley • CTRL+A = Start all random • CTRL+V = Start visible random • Space = Open song options • ESC = Back to main menu</string> <string name="TR_SCREENSONG_HELPMESSAGE">A-Z = Jump to the letter • F3 = Search • CTRL+R = Random selection • CTRL+S = Start medley • CTRL+# = Change song sorting • CTRL+T = Enable/Disable category view • Space = Open song options • ESC = Back to main menu</string>
<string name="TR_SCREENSONG_HELPMESSAGESEARCH">A-Z = Search artist and title, prefixes for the search → a: = artist • t: = title • c: = creator • e: = edition • g: = genre • y: = year (e.g. 1999 or 1980-1989) • l: = language • al: = album • fi: = file name • fo: = folder name</string> <string name="TR_SCREENSONG_HELPMESSAGESEARCH">A-Z = Search artist and title, prefixes for the search → a: = artist • t: = title • c: = creator • e: = edition • g: = genre • y: = year (e.g. 1999 or 1980-1989) • l: = language • al: = album • fi: = file name • fo: = folder name</string>
<string name="TR_SCREENSONG_HELPMESSAGEPARTY">1-6 = Press your team number to use a random song joker</string> <string name="TR_SCREENSONG_HELPMESSAGEPARTY">1-6 = Press your team number to use a random song joker</string>
<string name="TR_SCREENSONG_SORTING">Sorting: %s</string>
<string name="TR_SCREENSING_PAUSE">Pause</string> <string name="TR_SCREENSING_PAUSE">Pause</string>
<string name="TR_SCREENSING_BUTTON_CANCEL">Stop singing</string> <string name="TR_SCREENSING_BUTTON_CANCEL">Stop singing</string>
<string name="TR_SCREENSING_BUTTON_CONTINUE">Continue</string> <string name="TR_SCREENSING_BUTTON_CONTINUE">Continue</string>
+2 -1
View File
@@ -147,9 +147,10 @@
<string name="TR_SCREENSONG_NUMSONGS">(%v Lieder)</string> <string name="TR_SCREENSONG_NUMSONGS">(%v Lieder)</string>
<string name="TR_SCREENSONG_NUMSONG">(%v Lied)</string> <string name="TR_SCREENSONG_NUMSONG">(%v Lied)</string>
<string name="TR_SCREENSONG_ARTIST_TITLE">%a -%t</string> <string name="TR_SCREENSONG_ARTIST_TITLE">%a -%t</string>
<string name="TR_SCREENSONG_HELPMESSAGE">A-Z = Zum Buchstaben springen • F3 = Suchen • STRG+R = Zufällige Auswahl • STRG+S = Starte Medley • STRG+A = Alle zufällig starten • STRG+V = Sichtbare zufällig starten • Leertaste = Lied-Optionen öffnen • ESC = Zurück zum Hauptmenü</string> <string name="TR_SCREENSONG_HELPMESSAGE">A-Z = Zum Buchstaben springen • F3 = Suchen • STRG+R = Zufällige Auswahl • STRG+S = Starte Medley • STRG+# = Song Sortierung ändern • STRG+T = Kategorieansicht ein-/ausschalten • Leertaste = Lied-Optionen öffnen • ESC = Zurück zum Hauptmenü</string>
<string name="TR_SCREENSONG_HELPMESSAGESEARCH">A-Z = Interpreten und Titel durchsuchen, Präfixe für die Suche → a: = Interpret • t: = Titel • c: = Ersteller • e: = Edition • g: = Genre • y: = Jahr (z.B. 1999 oder 1980-1989) • l: = Sprache • al: = Album • fi: = Dateiname • fo: = Ordnername</string> <string name="TR_SCREENSONG_HELPMESSAGESEARCH">A-Z = Interpreten und Titel durchsuchen, Präfixe für die Suche → a: = Interpret • t: = Titel • c: = Ersteller • e: = Edition • g: = Genre • y: = Jahr (z.B. 1999 oder 1980-1989) • l: = Sprache • al: = Album • fi: = Dateiname • fo: = Ordnername</string>
<string name="TR_SCREENSONG_HELPMESSAGEPARTY">1-6 = Drücke die Teamnummer um einen Zufallssong Joker zu verwenden</string> <string name="TR_SCREENSONG_HELPMESSAGEPARTY">1-6 = Drücke die Teamnummer um einen Zufallssong Joker zu verwenden</string>
<string name="TR_SCREENSONG_SORTING">Sortierung: %s</string>
<string name="TR_SCREENSING_PAUSE">Pause</string> <string name="TR_SCREENSING_PAUSE">Pause</string>
<string name="TR_SCREENSING_BUTTON_CANCEL">Lied beenden</string> <string name="TR_SCREENSING_BUTTON_CANCEL">Lied beenden</string>
<string name="TR_SCREENSING_BUTTON_CONTINUE">Fortfahren</string> <string name="TR_SCREENSING_BUTTON_CONTINUE">Fortfahren</string>
+11 -1
View File
@@ -132,12 +132,20 @@ Song screen
[F3] to open/close the song search menu [F3] to open/close the song search menu
[SPACE] to open/close the song menu [SPACE] to open/close the song menu
[TAB] to switch selection of song menu and playlist (if opened) [TAB] to switch selection of song menu and playlist (if opened)
[CTRL] + [H] to show the highscore of the selected song
[CTRL] + [T] to toggle category / tabs view
[CTRL] + [1]..[0] to change the song sorting (just changed for runtime, not saved!), in order from keys 1 to 0:
folder, artist, artist by letter, title by letter, edition, genre, language, year, decade, date added
[CTRL] + [R] to select a random song [CTRL] + [R] to select a random song
[CTRL] + [A] to sing all songs [CTRL] + [A] to sing all songs
[CTRL] + [S] to sing current song in medley version [CTRL] + [S] to sing current song in medley version
[CTRL] + [V] to sing all songs from a category [CTRL] + [V] to sing all songs from a category
[CTRL] + [L] to filter the song list to the current displayed playlist. Press again to remove this filter.
[NUM_1]..[NUM_6] to use a Joker for team 1..6 [NUM_1]..[NUM_6] to use a Joker for team 1..6
[A]..[Z] to jump to category/song title starting with that letter [A]..[Z] to jump to category/song title starting with that letters (multiple letters possible)
[PAGE UP] or [PAGE DOWN] to scroll one page up/down
[CTRL] + [PAGE UP or DOWN] to go inside next or previous category while being in a category
[HOME] or [END] to scroll up to first song or down to last song
Name selection screen Name selection screen
[1]..[6] to activate player selection. [1]..[6] to activate player selection.
@@ -149,6 +157,7 @@ Name selection screen
Sing screen Sing screen
[P] to toggle pause. [P] to toggle pause.
[CTRL] + [S] to skip a song if there is another one in the playlist. [CTRL] + [S] to skip a song if there is another one in the playlist.
[CTRL] + [RIGHT] to skip 30 seconds within the playing song (not in party modes).
[T] to change the time format of the timer. [T] to change the time format of the timer.
[I] to change view of player information. [I] to change view of player information.
[W] to activate the configured webcam. [W] to activate the configured webcam.
@@ -156,6 +165,7 @@ Sing screen
Score and highscore screen Score and highscore screen
[LEFT] or [RIGHT] to show (high)scores of another round (if there is more than one) [LEFT] or [RIGHT] to show (high)scores of another round (if there is more than one)
if opened from song list screen: Switch between game modes (Normal, Medley, Duet, Short)
================================= =================================
@@ -1,5 +1,22 @@
ScreenSong ScreenSong
++++++++++
Version 9:
Add:
<TextSongYear>
Changed values at:
<TextSongLength>
++++++++++
Version 8:
Add:
<ButtonOptionsHighscore> to SongMenu
<TextShortInfoTop>
<StaticShortInfoTop>
++++++++++ ++++++++++
Version 7: Version 7:
+4 -4
View File
@@ -46,7 +46,7 @@
<Color Name="BackgroundColorAlpha" /> <Color Name="BackgroundColorAlpha" />
<Rect> <Rect>
<X>0</X> <X>0</X>
<Y>0</Y> <Y>610</Y>
<W>1280</W> <W>1280</W>
<H>90</H> <H>90</H>
<Z>-0.75</Z> <Z>-0.75</Z>
@@ -136,7 +136,7 @@
<Color Name="LyricHelperDuet" /> <Color Name="LyricHelperDuet" />
<Rect> <Rect>
<X>40</X> <X>40</X>
<Y>10</Y> <Y>623</Y>
<W>45</W> <W>45</W>
<H>36</H> <H>36</H>
<Z>-1</Z> <Z>-1</Z>
@@ -1501,7 +1501,7 @@
<Lyric Name="LyricMainDuet"> <Lyric Name="LyricMainDuet">
<Rect> <Rect>
<X>637</X> <X>637</X>
<Y>7</Y> <Y>620</Y>
<W>1200</W> <W>1200</W>
<H>42</H> <H>42</H>
<Z>-1</Z> <Z>-1</Z>
@@ -1512,7 +1512,7 @@
<Lyric Name="LyricSubDuet"> <Lyric Name="LyricSubDuet">
<Rect> <Rect>
<X>637</X> <X>637</X>
<Y>48</Y> <Y>662</Y>
<W>1200</W> <W>1200</W>
<H>35</H> <H>35</H>
<Z>-1</Z> <Z>-1</Z>
+87 -7
View File
@@ -2,7 +2,7 @@
<Screen xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Screen xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Informations> <Informations>
<ScreenName>ScreenSong</ScreenName> <ScreenName>ScreenSong</ScreenName>
<ScreenVersion>7</ScreenVersion> <ScreenVersion>9</ScreenVersion>
</Informations> </Informations>
<Backgrounds> <Backgrounds>
<Background Name="Background1"> <Background Name="Background1">
@@ -70,8 +70,33 @@
<Z>-2.1</Z> <Z>-2.1</Z>
</Rect> </Rect>
</Static> </Static>
<Static Name="StaticShortInfoTop">
<Skin />
<Color Name="BackgroundColorAlpha" />
<Rect>
<X>490</X>
<Y>0</Y>
<W>300</W>
<H>30</H>
<Z>-0.75</Z>
</Rect>
</Static>
</Statics> </Statics>
<Texts> <Texts>
<Text Name="TextShortInfoTop">
<X>640</X>
<Y>2</Y>
<Z>-1</Z>
<H>25</H>
<MaxW>280</MaxW>
<Color Name="TextColor" />
<SelColor Name="TextSelColor" />
<Align>Center</Align>
<ResizeAlign>Center</ResizeAlign>
<Style>Normal</Style>
<Font>Outline</Font>
<Text>TR_SCREENSONG_SORTING</Text>
</Text>
<Text Name="TextPlayer1"> <Text Name="TextPlayer1">
<X>950</X> <X>950</X>
<Y>65</Y> <Y>65</Y>
@@ -788,6 +813,33 @@
<Text>TR_SCREENSONG_BUTTON_STARTMEDLEY</Text> <Text>TR_SCREENSONG_BUTTON_STARTMEDLEY</Text>
</Text> </Text>
</Button> </Button>
<Button Name="ButtonOptionsHighscore">
<Skin>SongSelectButton</Skin>
<SkinSelected>SongSelectButton</SkinSelected>
<Rect>
<X>40</X>
<Y>290</Y>
<W>360</W>
<H>40</H>
<Z>-2.11</Z>
</Rect>
<Color Name="ButtonColor" />
<SelColor Name="ButtonSelColor" />
<Text Name="Text">
<X>180</X>
<Y>7</Y>
<Z>0</Z>
<H>25</H>
<MaxW>350</MaxW>
<Color Name="ButtonTextColor" />
<SelColor Name="ButtonTextSelColor" />
<Align>Center</Align>
<ResizeAlign>Center</ResizeAlign>
<Style>Bold</Style>
<Font>Outline</Font>
<Text>TR_SCREENHIGHSCORE_HIGHSCORE</Text>
</Text>
</Button>
</Buttons> </Buttons>
<SongMenus> <SongMenus>
<SongMenu Name="SongMenu"> <SongMenu Name="SongMenu">
@@ -853,19 +905,33 @@
<Text /> <Text />
</TextTitle> </TextTitle>
<TextSongLength Name="TextSongLength"> <TextSongLength Name="TextSongLength">
<X>222</X> <X>391</X>
<Y>490</Y> <Y>490</Y>
<Z>-1.01</Z> <Z>-1.01</Z>
<H>28</H> <H>28</H>
<MaxW>340</MaxW> <MaxW>100</MaxW>
<Color Name="TextColor" /> <Color Name="TextColor" />
<SelColor Name="TextSelColor" /> <SelColor Name="TextSelColor" />
<Align>Center</Align> <Align>Right</Align>
<ResizeAlign>Top</ResizeAlign> <ResizeAlign>Top</ResizeAlign>
<Style>Bold</Style> <Style>Bold</Style>
<Font>Outline</Font> <Font>Outline</Font>
<Text /> <Text />
</TextSongLength> </TextSongLength>
<TextSongYear Name="TextSongYear">
<X>52</X>
<Y>490</Y>
<Z>-1.01</Z>
<H>28</H>
<MaxW>100</MaxW>
<Color Name="TextColor" />
<SelColor Name="TextSelColor" />
<Align>Left</Align>
<ResizeAlign>Top</ResizeAlign>
<Style>Bold</Style>
<Font>Outline</Font>
<Text />
</TextSongYear>
<StaticCoverBig Name="StaticCoverBig"> <StaticCoverBig Name="StaticCoverBig">
<Skin /> <Skin />
<Color Name="Visible" /> <Color Name="Visible" />
@@ -980,19 +1046,33 @@
<Text /> <Text />
</TextTitle> </TextTitle>
<TextSongLength Name="TextSongLength"> <TextSongLength Name="TextSongLength">
<X>222</X> <X>391</X>
<Y>490</Y> <Y>490</Y>
<Z>-1.01</Z> <Z>-1.01</Z>
<H>28</H> <H>28</H>
<MaxW>340</MaxW> <MaxW>100</MaxW>
<Color Name="TextColor" /> <Color Name="TextColor" />
<SelColor Name="TextSelColor" /> <SelColor Name="TextSelColor" />
<Align>Center</Align> <Align>Right</Align>
<ResizeAlign>Top</ResizeAlign> <ResizeAlign>Top</ResizeAlign>
<Style>Bold</Style> <Style>Bold</Style>
<Font>Outline</Font> <Font>Outline</Font>
<Text /> <Text />
</TextSongLength> </TextSongLength>
<TextSongYear Name="TextSongYear">
<X>52</X>
<Y>490</Y>
<Z>-1.01</Z>
<H>28</H>
<MaxW>100</MaxW>
<Color Name="TextColor" />
<SelColor Name="TextSelColor" />
<Align>Left</Align>
<ResizeAlign>Top</ResizeAlign>
<Style>Bold</Style>
<Font>Outline</Font>
<Text />
</TextSongYear>
<StaticCoverBig Name="StaticCoverBig"> <StaticCoverBig Name="StaticCoverBig">
<Skin /> <Skin />
<Color Name="Visible" /> <Color Name="Visible" />
+18 -41
View File
@@ -316,56 +316,33 @@ namespace Vocaluxe.Base
CSound.SetGlobalVolume(CConfig.PreviewMusicVolume); CSound.SetGlobalVolume(CConfig.PreviewMusicVolume);
} }
//Change song position only if song is changed or near to end
bool songChanged = _CurPlayer.SongID != song.ID; bool songChanged = _CurPlayer.SongID != song.ID;
if (!songChanged && _CurPlayer.Position + 30 < _CurPlayer.Length)
return;
_PreviewPlayer.Load(song); _PreviewPlayer.Load(song);
lock (_PreviewStartHelperTaskLock)
//Change song position only if song is changed or near to end
if (songChanged || _CurPlayer.Position + 30 < _CurPlayer.Length || _PreviewStartHelperTask == null)
{ {
lock (_PreviewStartHelperTaskLock) _PreviewStartHelperTask = new Task(() =>
{ {
_PreviewStartHelperTask = new Task(() => float length = _PreviewPlayer.Length;
{ if (length < 1)
float length = _PreviewPlayer.Length; length = 30; // If length is unknow or invalid assume a length of 30s
if (length < 1)
length = 30; // If length is unknow or invalid assume a length of 30s
if (start < 0) if (start < 0)
start = (song.Preview.Source == EDataSource.None) ? length / 4f : song.Preview.StartTime; start = (song.Preview.Source == EDataSource.None) ? length / 4f : song.Preview.StartTime;
if (start > length - 5f) if (start > length - 5f)
start = Math.Max(0f, Math.Min(length / 4f, length - 5f)); start = Math.Max(0f, Math.Min(length / 4f, length - 5f));
if (start >= 0.5f) if (start >= 0.5f)
start -= 0.5f; start -= 0.5f;
_PreviewPlayer.Position = start; _PreviewPlayer.Position = start;
Play(); Play();
}); });
}
_CurPlayer = _PreviewPlayer;
} }
else _CurPlayer = _PreviewPlayer;
{
if (_PreviewStartHelperTask != null)
{
lock (_PreviewStartHelperTaskLock)
{
// Recheck the condition as it cloud have change before we got the lock
if (_PreviewStartHelperTask != null)
{
_PreviewStartHelperTask = null;
}
}
}
_PreviewPlayer.Position = _CurPlayer.Position;
_CurPlayer = _PreviewPlayer;
Play();
}
} }
public static void StopPreview() public static void StopPreview()
+1 -1
View File
@@ -688,7 +688,7 @@ namespace Vocaluxe.Base
{ {
//Check if folder exists //Check if folder exists
if (Directory.Exists(folder)) if (Directory.Exists(folder))
SongFolders.Add(folder); SongFolders.Add(Path.GetFullPath(folder));
} }
} }
+4
View File
@@ -181,6 +181,10 @@ namespace Vocaluxe.Base
sortList.Sort(_SortByFieldArtistTitle); sortList.Sort(_SortByFieldArtistTitle);
break; break;
} }
if (_SongSorting == ESongSorting.TR_CONFIG_DATEADDED)
sortList.Reverse();
_SortedSongs = sortList.ToArray(); _SortedSongs = sortList.ToArray();
_Changed = false; _Changed = false;
} }
+57 -13
View File
@@ -49,6 +49,7 @@ namespace Vocaluxe.Screens
private int _Round; private int _Round;
private int _Pos; private int _Pos;
private bool _IsDuet; private bool _IsDuet;
private bool _FromScreenSong = false;
public override EMusicType CurrentMusicType public override EMusicType CurrentMusicType
{ {
@@ -113,11 +114,13 @@ namespace Vocaluxe.Screens
break; break;
case Keys.Down: case Keys.Down:
_ChangePos(1); if (!_FromScreenSong)
_ChangePos(1);
break; break;
case Keys.Up: case Keys.Up:
_ChangePos(-1); if (!_FromScreenSong)
_ChangePos(-1);
break; break;
case Keys.Left: case Keys.Left:
@@ -234,13 +237,37 @@ namespace Vocaluxe.Screens
{ {
_Pos = 0; _Pos = 0;
int rounds = CGame.NumRounds; int rounds = CGame.NumRounds;
_Scores = new List<SDBScoreEntry>[rounds];
for (int round = 0; round < rounds; round++) if (rounds == 0)
{ {
int songID = CGame.GetSong(round).ID; _FromScreenSong = true;
EGameMode gameMode = CGame.GetGameMode(round); _Round = (int)EGameMode.TR_GAMEMODE_NORMAL;
_Scores = new List<SDBScoreEntry>[4];
int songID = CScreenSong.getSelectedSongID();
EHighscoreStyle style = CBase.Config.GetHighscoreStyle(); EHighscoreStyle style = CBase.Config.GetHighscoreStyle();
_Scores[round] = CDataBase.LoadScore(songID, gameMode, style); bool foundHighscoreEntries = false;
for (int gameModeNum = 0; gameModeNum < 4; gameModeNum++)
{
_Scores[gameModeNum] = CDataBase.LoadScore(songID, (EGameMode)gameModeNum, style);
if (!foundHighscoreEntries && _Scores[gameModeNum].Count > 0)
{
_Round = gameModeNum;
foundHighscoreEntries = true;
}
}
}
else
{
_FromScreenSong = false;
_Scores = new List<SDBScoreEntry>[rounds];
for (int round = 0; round < rounds; round++)
{
int songID = CGame.GetSong(round).ID;
EGameMode gameMode = CGame.GetGameMode(round);
EHighscoreStyle style = CBase.Config.GetHighscoreStyle();
_Scores[round] = CDataBase.LoadScore(songID, gameMode, style);
}
} }
} }
@@ -248,15 +275,21 @@ namespace Vocaluxe.Screens
{ {
_IsDuet = false; _IsDuet = false;
CPoints points = CGame.GetPoints(); CPoints points = CGame.GetPoints();
CSong song = CGame.GetSong(_Round);
CSong song;
if (_FromScreenSong)
song = CSongs.GetSong(CScreenSong.getSelectedSongID());
else
song = CGame.GetSong(_Round);
if (song == null) if (song == null)
return; return;
_Texts[_TextSongName].Text = song.Artist + " - " + song.Title; _Texts[_TextSongName].Text = song.Artist + " - " + song.Title;
if (points.NumRounds > 1) if (points != null && !_FromScreenSong && points.NumRounds > 1)
_Texts[_TextSongName].Text += " (" + (_Round + 1) + "/" + points.NumRounds + ")"; _Texts[_TextSongName].Text += " (" + (_Round + 1) + "/" + points.NumRounds + ")";
switch (CGame.GetGameMode(_Round)) switch ((_FromScreenSong ? (EGameMode)_Round : CGame.GetGameMode(_Round)))
{ {
case EGameMode.TR_GAMEMODE_NORMAL: case EGameMode.TR_GAMEMODE_NORMAL:
_Texts[_TextSongMode].Text = "TR_GAMEMODE_NORMAL"; _Texts[_TextSongMode].Text = "TR_GAMEMODE_NORMAL";
@@ -296,9 +329,20 @@ namespace Vocaluxe.Screens
private void _ChangeRound(int num) private void _ChangeRound(int num)
{ {
CPoints points = CGame.GetPoints(); if (_FromScreenSong)
_Round += num; {
_Round = _Round.Clamp(0, points.NumRounds - 1); if (_Round == (int)EGameMode.TR_GAMEMODE_SHORTSONG)
_Round = (int)EGameMode.TR_GAMEMODE_NORMAL;
else
++_Round;
}
else
{
CPoints points = CGame.GetPoints();
_Round += num;
_Round = _Round.Clamp(0, points.NumRounds - 1);
}
_UpdateRound(); _UpdateRound();
} }
+81 -28
View File
@@ -30,6 +30,7 @@ using VocaluxeLib.Draw;
using VocaluxeLib.Log; using VocaluxeLib.Log;
using VocaluxeLib.Menu; using VocaluxeLib.Menu;
using VocaluxeLib.Menu.SingNotes; using VocaluxeLib.Menu.SingNotes;
using VocaluxeLib.PartyModes;
using VocaluxeLib.Songs; using VocaluxeLib.Songs;
namespace Vocaluxe.Screens namespace Vocaluxe.Screens
@@ -123,6 +124,7 @@ namespace Vocaluxe.Screens
private float _RemainingTimeToFirstNote; private float _RemainingTimeToFirstNote;
private float _TimeToFirstNoteDuet; private float _TimeToFirstNoteDuet;
private float _RemainingTimeToFirstNoteDuet; private float _RemainingTimeToFirstNoteDuet;
private float _TimeShowSongTextTotal;
private Stopwatch _TimerSongText; private Stopwatch _TimerSongText;
private Stopwatch _TimerDuetText1; private Stopwatch _TimerDuetText1;
@@ -132,6 +134,7 @@ namespace Vocaluxe.Screens
private bool _Webcam; private bool _Webcam;
private CBackground _SlideShow; private CBackground _SlideShow;
private SScreenSongOptions _Sso;
public override EMusicType CurrentMusicType public override EMusicType CurrentMusicType
{ {
@@ -264,9 +267,15 @@ namespace Vocaluxe.Screens
if (_Buttons[_ButtonCancel].Selected) if (_Buttons[_ButtonCancel].Selected)
_Stop(); _Stop();
if (_Buttons[_ButtonRestartGame].Selected) if (_Buttons[_ButtonRestartGame].Selected)
{
_RestartGame(); _RestartGame();
_SetPause(false);
}
if (_Buttons[_ButtonRestartRound].Selected) if (_Buttons[_ButtonRestartRound].Selected)
{
_RestartRound(); _RestartRound();
_SetPause(false);
}
if (_Buttons[_ButtonSkip].Selected) if (_Buttons[_ButtonSkip].Selected)
{ {
_NextSong(); _NextSong();
@@ -287,6 +296,38 @@ namespace Vocaluxe.Screens
if (CConfig.Config.Debug.SaveModifiedSongs == EOffOn.TR_CONFIG_ON) if (CConfig.Config.Debug.SaveModifiedSongs == EOffOn.TR_CONFIG_ON)
song.Save(); song.Save();
break; break;
// Restart Round and reload song file header
case Keys.R:
if (keyEvent.Mod == EModifier.Ctrl && _Pause)
{
_SetPause(false);
_RestartRound();
}
break;
// Restart Round and reload song file header
case Keys.F5:
if (_Pause)
{
_SetPause(false);
_RestartRound();
}
break;
// Skip 30 seconds
case Keys.Right:
if (keyEvent.Mod == EModifier.Ctrl && !_Pause && !_Sso.Selection.PartyMode)
{
if (_TimerSongText.IsRunning)
_TimerSongText.Stop();
float newTime = _CurrentTime + 30f;
if (CSound.GetLength(_CurrentStream) < (_CurrentTime + 30f))
newTime = CSound.GetLength(_CurrentStream) - 1f;
CSound.SetPosition(_CurrentStream, newTime);
}
break;
} }
} }
@@ -356,6 +397,7 @@ namespace Vocaluxe.Screens
_SetPause(false); _SetPause(false);
_TimeRects.Clear(); _TimeRects.Clear();
_Sso = CParty.GetSongSelectionOptions();
_SingNotes[_SingBars].Init(0); _SingNotes[_SingBars].Init(0);
_AssignPlayerElements(); _AssignPlayerElements();
@@ -463,17 +505,11 @@ namespace Vocaluxe.Screens
if (alpha.Length > 2) if (alpha.Length > 2)
{ {
_Lyrics[_LyricMainDuet].Alpha = alpha[0]; _Lyrics[_LyricMainDuet].Alpha = alpha[2];
_Lyrics[_LyricSubDuet].Alpha = alpha[1]; _Lyrics[_LyricSubDuet].Alpha = alpha[3];
_Statics[_StaticLyricsDuet].Alpha = alpha[0]; _Statics[_StaticLyricsDuet].Alpha = alpha[2];
_Statics[_StaticLyricHelperDuet].Alpha = alpha[0]; _Statics[_StaticLyricHelperDuet].Alpha = alpha[2];
_Lyrics[_LyricMain].Alpha = alpha[2];
_Lyrics[_LyricSub].Alpha = alpha[3];
_Statics[_StaticLyrics].Alpha = alpha[2];
_Statics[_StaticLyricHelper].Alpha = alpha[2];
} }
} }
@@ -532,7 +568,7 @@ namespace Vocaluxe.Screens
_SingNotes[_SingBars].PlayerNotes[j].SetLine(nr); _SingNotes[_SingBars].PlayerNotes[j].SetLine(nr);
} }
if (i == 0 && !song.IsDuet || i == 1 && song.IsDuet) if (i == 0)
{ {
_Lyrics[_LyricMain].SetLine(lines[nr]); _Lyrics[_LyricMain].SetLine(lines[nr]);
_Lyrics[_LyricMainTop].SetLine(lines[nr]); _Lyrics[_LyricMainTop].SetLine(lines[nr]);
@@ -550,7 +586,7 @@ namespace Vocaluxe.Screens
_Lyrics[_LyricSubTop].Clear(); _Lyrics[_LyricSubTop].Clear();
} }
} }
if (i == 0 && song.IsDuet) if (i == 1 && song.IsDuet)
{ {
_Lyrics[_LyricMainDuet].SetLine(lines[nr]); _Lyrics[_LyricMainDuet].SetLine(lines[nr]);
_TimeToFirstNoteDuet = CGame.GetTimeFromBeats(lines[nr].FirstNoteBeat - lines[nr].StartBeat, song.BPM); _TimeToFirstNoteDuet = CGame.GetTimeFromBeats(lines[nr].FirstNoteBeat - lines[nr].StartBeat, song.BPM);
@@ -564,7 +600,7 @@ namespace Vocaluxe.Screens
} }
else else
{ {
if (i == 0 && !song.IsDuet || i == 1 && song.IsDuet) if (i == 0)
{ {
_Lyrics[_LyricMain].Clear(); _Lyrics[_LyricMain].Clear();
_Lyrics[_LyricSub].Clear(); _Lyrics[_LyricSub].Clear();
@@ -573,7 +609,7 @@ namespace Vocaluxe.Screens
_TimeToFirstNote = 0f; _TimeToFirstNote = 0f;
} }
if (i == 0 && song.IsDuet) if (i == 1 && song.IsDuet)
{ {
_Lyrics[_LyricMainDuet].Clear(); _Lyrics[_LyricMainDuet].Clear();
_Lyrics[_LyricSubDuet].Clear(); _Lyrics[_LyricSubDuet].Clear();
@@ -610,23 +646,23 @@ namespace Vocaluxe.Screens
private void _UpdateSongText() private void _UpdateSongText()
{ {
if (_TimerSongText.IsRunning && !_Lyrics[_LyricMainDuet].Visible && !_Lyrics[_LyricMainTop].Visible) if (_TimerSongText.IsRunning)
{ {
float t = _TimerSongText.ElapsedMilliseconds / 1000f; float t = _TimerSongText.ElapsedMilliseconds / 1000f;
if (t < 10f) if (t < _TimeShowSongTextTotal)
{ {
_Statics[_StaticSongText].Visible = true; _Statics[_StaticSongText].Visible = true;
_Texts[_TextSongName].Visible = true; _Texts[_TextSongName].Visible = true;
if (t < 7f) if (t < (_TimeShowSongTextTotal - 3f))
{ {
_Statics[_StaticSongText].Color.A = 1f; _Statics[_StaticSongText].Color.A = 1f;
_Texts[_TextSongName].Color.A = 1f; _Texts[_TextSongName].Color.A = 1f;
} }
else else
{ {
_Statics[_StaticSongText].Color.A = (10f - t) / 3f; _Statics[_StaticSongText].Color.A = (_TimeShowSongTextTotal - t) / 3f;
_Texts[_TextSongName].Color.A = (10f - t) / 3f; _Texts[_TextSongName].Color.A = (_TimeShowSongTextTotal - t) / 3f;
} }
} }
else else
@@ -665,7 +701,7 @@ namespace Vocaluxe.Screens
timer.Stop(); timer.Stop();
} }
} }
else if (!timer.IsRunning && timer.ElapsedMilliseconds == 0 && _Lyrics[_LyricMainDuet].Alpha > 0 && CGame.GetSong().IsDuet) else if (!timer.IsRunning && timer.ElapsedMilliseconds == 0 && _Lyrics[_LyricMainTop].Alpha > 0 && CGame.GetSong().IsDuet)
timer.Start(); timer.Start();
else else
textName.Visible = false; textName.Visible = false;
@@ -698,7 +734,7 @@ namespace Vocaluxe.Screens
_TimerDuetText2.Stop(); _TimerDuetText2.Stop();
} }
} }
else if (!_TimerDuetText2.IsRunning && _TimerDuetText2.ElapsedMilliseconds == 0 && _Lyrics[_LyricMain].Alpha > 0 && CGame.GetSong().IsDuet) else if (!_TimerDuetText2.IsRunning && _TimerDuetText2.ElapsedMilliseconds == 0 && _Lyrics[_LyricMainDuet].Alpha > 0 && CGame.GetSong().IsDuet)
_TimerDuetText2.Start(); _TimerDuetText2.Start();
else else
_Texts[_TextDuetName2].Visible = false; _Texts[_TextDuetName2].Visible = false;
@@ -879,7 +915,7 @@ namespace Vocaluxe.Screens
_Statics[_StaticLyricHelperTop].Color.R, _Statics[_StaticLyricHelperTop].Color.R,
_Statics[_StaticLyricHelperTop].Color.G, _Statics[_StaticLyricHelperTop].Color.G,
_Statics[_StaticLyricHelperTop].Color.B, _Statics[_StaticLyricHelperTop].Color.B,
_Statics[_StaticLyricHelperTop].Color.A * _Statics[_StaticLyricHelper].Alpha * alpha); _Statics[_StaticLyricHelperTop].Color.A * _Statics[_StaticLyricHelperTop].Alpha * alpha);
float distance = _Lyrics[_LyricMainTop].GetCurrentLyricPosX() - rect.X - rect.W; float distance = _Lyrics[_LyricMainTop].GetCurrentLyricPosX() - rect.X - rect.W;
CDraw.DrawTexture(_Statics[_StaticLyricHelperTop].Texture, CDraw.DrawTexture(_Statics[_StaticLyricHelperTop].Texture,
@@ -968,7 +1004,7 @@ namespace Vocaluxe.Screens
_CloseSong(); _CloseSong();
CGame.ResetPlayer(); CGame.ResetPlayer();
_LoadCurrentSong(); _LoadCurrentSong(false);
_StartSong(); _StartSong();
} }
@@ -1048,7 +1084,7 @@ namespace Vocaluxe.Screens
/// <summary> /// <summary>
/// Prepare streams and screen for current song. /// Prepare streams and screen for current song.
/// </summary> /// </summary>
private void _LoadCurrentSong() private void _LoadCurrentSong(bool reloadNotes = true)
{ {
if (CGame.IsFinished()) if (CGame.IsFinished())
{ {
@@ -1064,6 +1100,9 @@ namespace Vocaluxe.Screens
return; return;
} }
if (!_Sso.Selection.PartyMode && (CGame.GameMode == EGameMode.TR_GAMEMODE_NORMAL || CGame.GameMode == EGameMode.TR_GAMEMODE_DUET))
song.ReloadSong(reloadNotes);
string songname = song.Artist + " - " + song.Title; string songname = song.Artist + " - " + song.Title;
int rounds = CGame.GetNumSongs(); int rounds = CGame.GetNumSongs();
if (rounds > 1) if (rounds > 1)
@@ -1086,11 +1125,11 @@ namespace Vocaluxe.Screens
voiceAssignments[i] = CGame.Players[i].VoiceNr; voiceAssignments[i] = CGame.Players[i].VoiceNr;
} }
_VideoAspect = EAspect.Automatic;
if (!String.IsNullOrEmpty(song.VideoFileName)) if (!String.IsNullOrEmpty(song.VideoFileName))
{ {
_CurrentVideo = CVideo.Load(Path.Combine(song.Folder, song.VideoFileName)); _CurrentVideo = CVideo.Load(Path.Combine(song.Folder, song.VideoFileName));
CVideo.Skip(_CurrentVideo, song.Start, song.VideoGap); CVideo.Skip(_CurrentVideo, song.Start, song.VideoGap);
_VideoAspect = EAspect.Automatic;
} }
CDraw.RemoveTexture(ref _Background); CDraw.RemoveTexture(ref _Background);
@@ -1148,7 +1187,21 @@ namespace Vocaluxe.Screens
_TimerDuetText1.Reset(); _TimerDuetText1.Reset();
_TimerDuetText2.Reset(); _TimerDuetText2.Reset();
if (!song.IsDuet) float realGap = song.Gap - song.Start;
_TimeShowSongTextTotal = 10f;
if (_Lyrics[_LyricMainDuet].Visible || _Lyrics[_LyricMainTop].Visible)
{
if (realGap < 11f)
{
_TimeShowSongTextTotal = 0;
}
else if (realGap < 17f)
{
_TimeShowSongTextTotal = realGap - 7f;
}
}
if (_TimeShowSongTextTotal > 0)
_TimerSongText.Start(); _TimerSongText.Start();
} }
@@ -1199,8 +1252,8 @@ namespace Vocaluxe.Screens
if (CGame.GetSong() != null && CGame.GetSong().IsDuet) if (CGame.GetSong() != null && CGame.GetSong().IsDuet)
{ {
bottomLyricsVisible = true; bottomLyricsVisible = false;
topLyricsVisible = false; topLyricsVisible = true;
duetLyricsVisible = true; duetLyricsVisible = true;
} }
+152 -10
View File
@@ -19,6 +19,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
using System.Timers;
using System.Windows.Forms; using System.Windows.Forms;
using Vocaluxe.Base; using Vocaluxe.Base;
using VocaluxeLib; using VocaluxeLib;
@@ -42,7 +43,7 @@ namespace Vocaluxe.Screens
// Version number for theme files. Increment it, if you've changed something on the theme files! // Version number for theme files. Increment it, if you've changed something on the theme files!
protected override int _ScreenVersion protected override int _ScreenVersion
{ {
get { return 7; } get { return 9; }
} }
private const string _TextCategory = "TextCategory"; private const string _TextCategory = "TextCategory";
@@ -53,6 +54,7 @@ namespace Vocaluxe.Screens
private const string _TextHelpBarSearch = "TextHelpBarSearch"; private const string _TextHelpBarSearch = "TextHelpBarSearch";
private const string _TextHelpBarParty = "TextHelpBarParty"; private const string _TextHelpBarParty = "TextHelpBarParty";
private const string _TextOptionsTitle = "TextOptionsTitle"; private const string _TextOptionsTitle = "TextOptionsTitle";
private const string _TextShortInfoTop = "TextShortInfoTop";
private const string _ButtonOpenOptions = "ButtonOpenOptions"; private const string _ButtonOpenOptions = "ButtonOpenOptions";
private const string _ButtonOptionsSing = "ButtonOptionsSing"; private const string _ButtonOptionsSing = "ButtonOptionsSing";
@@ -66,6 +68,7 @@ namespace Vocaluxe.Screens
private const string _ButtonOptionsRandomMedley = "ButtonOptionsRandomMedley"; private const string _ButtonOptionsRandomMedley = "ButtonOptionsRandomMedley";
private const string _ButtonOptionsStartMedley = "ButtonOptionsStartMedley"; private const string _ButtonOptionsStartMedley = "ButtonOptionsStartMedley";
private const string _ButtonStart = "ButtonStart"; private const string _ButtonStart = "ButtonStart";
private const string _ButtonOptionsHighscore = "ButtonOptionsHighscore";
private const string _SelectSlideOptionsMode = "SelectSlideOptionsMode"; private const string _SelectSlideOptionsMode = "SelectSlideOptionsMode";
private const string _SelectSlideOptionsPlaylistAdd = "SelectSlideOptionsPlaylistAdd"; private const string _SelectSlideOptionsPlaylistAdd = "SelectSlideOptionsPlaylistAdd";
@@ -74,6 +77,7 @@ namespace Vocaluxe.Screens
private const string _StaticSearchBar = "StaticSearchBar"; private const string _StaticSearchBar = "StaticSearchBar";
private const string _StaticOptionsBG = "StaticOptionsBG"; private const string _StaticOptionsBG = "StaticOptionsBG";
private const string _StaticShortInfoTop = "StaticShortInfoTop";
private const string _SongMenuName = "SongMenu"; private const string _SongMenuName = "SongMenu";
private const string _PlaylistName = "Playlist"; private const string _PlaylistName = "Playlist";
@@ -99,6 +103,20 @@ namespace Vocaluxe.Screens
private ISongMenu _SongMenu; private ISongMenu _SongMenu;
private CPlaylist _Playlist; private CPlaylist _Playlist;
private System.Timers.Timer _TimerShortInfoText;
private static int _StaticSelectedSongID;
private static void setStaticSelectedSongID(int songID)
{
_StaticSelectedSongID = songID;
}
public static int getSelectedSongID()
{
return _StaticSelectedSongID;
}
public override EMusicType CurrentMusicType public override EMusicType CurrentMusicType
{ {
get { return CSongs.IsInCategory ? EMusicType.Preview : EMusicType.Background; } get { return CSongs.IsInCategory ? EMusicType.Preview : EMusicType.Background; }
@@ -130,6 +148,7 @@ namespace Vocaluxe.Screens
blist.Add(_ButtonStart); blist.Add(_ButtonStart);
blist.Add(_ButtonOptionsRandomMedley); blist.Add(_ButtonOptionsRandomMedley);
blist.Add(_ButtonOptionsStartMedley); blist.Add(_ButtonOptionsStartMedley);
blist.Add(_ButtonOptionsHighscore);
_TextsPlayer.Clear(); _TextsPlayer.Clear();
for (int i = 0; i < CSettings.MaxNumPlayer; i++) for (int i = 0; i < CSettings.MaxNumPlayer; i++)
@@ -144,8 +163,9 @@ namespace Vocaluxe.Screens
tlist.Add(_TextHelpBarSearch); tlist.Add(_TextHelpBarSearch);
tlist.Add(_TextHelpBarParty); tlist.Add(_TextHelpBarParty);
tlist.Add(_TextOptionsTitle); tlist.Add(_TextOptionsTitle);
tlist.Add(_TextShortInfoTop);
_ThemeStatics = new string[] {_StaticSearchBar, _StaticOptionsBG}; _ThemeStatics = new string[] {_StaticSearchBar, _StaticOptionsBG, _StaticShortInfoTop};
_ThemeTexts = tlist.ToArray(); _ThemeTexts = tlist.ToArray();
_ThemeButtons = blist.ToArray(); _ThemeButtons = blist.ToArray();
_ThemeSelectSlides = new string[] {_SelectSlideOptionsMode, _SelectSlideOptionsPlaylistAdd, _SelectSlideOptionsPlaylistOpen, _SelectSlideOptionsNumMedleySongs}; _ThemeSelectSlides = new string[] {_SelectSlideOptionsMode, _SelectSlideOptionsPlaylistAdd, _SelectSlideOptionsPlaylistOpen, _SelectSlideOptionsNumMedleySongs};
@@ -153,6 +173,10 @@ namespace Vocaluxe.Screens
_ThemePlaylists = new string[] {_PlaylistName}; _ThemePlaylists = new string[] {_PlaylistName};
_DragAndDropCover = GetNewStatic(); _DragAndDropCover = GetNewStatic();
_TimerShortInfoText = new System.Timers.Timer(5000);
_TimerShortInfoText.AutoReset = false;
_TimerShortInfoText.Elapsed += OnTimedEventShortInfoText;
} }
protected override void _OnSongMenuChanged() protected override void _OnSongMenuChanged()
@@ -303,13 +327,56 @@ namespace Vocaluxe.Screens
if (keyEvent.Mod == EModifier.Ctrl && CSongs.NumSongsVisible > 0 && !_Sso.Selection.PartyMode) if (keyEvent.Mod == EModifier.Ctrl && CSongs.NumSongsVisible > 0 && !_Sso.Selection.PartyMode)
_StartMedleySong(_SongMenu.GetPreviewSongNr()); _StartMedleySong(_SongMenu.GetPreviewSongNr());
break; break;
case Keys.T:
if (keyEvent.Mod == EModifier.Ctrl && !_Sso.Selection.PartyMode)
{
_ToggleTabs();
}
break;
case Keys.D0:
case Keys.D1:
case Keys.D2:
case Keys.D3:
case Keys.D4:
case Keys.D5:
case Keys.D6:
case Keys.D7:
case Keys.D8:
case Keys.D9:
if (keyEvent.Mod == EModifier.Ctrl && !_Sso.Selection.PartyMode)
{
int tempSortNr = -1;
int.TryParse(keyEvent.Key.ToString().Substring(1), out tempSortNr);
if (tempSortNr == 0)
tempSortNr = 10;
_ToggleSort(tempSortNr);
}
break;
case Keys.H:
if (keyEvent.Mod == EModifier.Ctrl && CSongs.NumSongsVisible > 0 && !_Sso.Selection.PartyMode)
{
_ShowHighscore();
}
break;
case Keys.L:
if (keyEvent.Mod == EModifier.Ctrl)
{
_TogglePlaylistFilter();
}
break;
} }
if (!_SearchActive) if (!_SearchActive)
{ {
switch (keyEvent.Key) switch (keyEvent.Key)
{ {
case Keys.Space: case Keys.Space:
if (!_Sso.Selection.PartyMode) if (!_Sso.Selection.PartyMode && !_Playlist.isPlaylistNameEditMode())
_ToggleSongOptions(ESongOptionsView.General); _ToggleSongOptions(ESongOptionsView.General);
break; break;
@@ -400,6 +467,10 @@ namespace Vocaluxe.Screens
_ToggleSongOptions(ESongOptionsView.None); _ToggleSongOptions(ESongOptionsView.None);
_StartRandomMedley(_SelectSlides[_SelectSlideOptionsNumMedleySongs].Selection + 1, !CSongs.IsInCategory); _StartRandomMedley(_SelectSlides[_SelectSlideOptionsNumMedleySongs].Selection + 1, !CSongs.IsInCategory);
} }
else if (_Buttons[_ButtonOptionsHighscore].Selected)
{
_ShowHighscore();
}
break; break;
case Keys.Escape: case Keys.Escape:
@@ -575,6 +646,10 @@ namespace Vocaluxe.Screens
_StartRandomMedley(_SelectSlides[_SelectSlideOptionsNumMedleySongs].Selection + 1, !CSongs.IsInCategory); _StartRandomMedley(_SelectSlides[_SelectSlideOptionsNumMedleySongs].Selection + 1, !CSongs.IsInCategory);
return true; return true;
} }
else if (_Buttons[_ButtonOptionsHighscore].Selected)
{
_ShowHighscore();
}
else if (_Sso.Selection.RandomOnly && _Sso.Selection.NumJokers != null) else if (_Sso.Selection.RandomOnly && _Sso.Selection.NumJokers != null)
{ {
if (_Buttons[_ButtonStart].Selected) if (_Buttons[_ButtonStart].Selected)
@@ -689,6 +764,9 @@ namespace Vocaluxe.Screens
_DragAndDropCover.Visible = false; _DragAndDropCover.Visible = false;
_Playlist.DragAndDropSongID = -1; _Playlist.DragAndDropSongID = -1;
_Statics[_StaticShortInfoTop].Visible = false;
_Texts[_TextShortInfoTop].Visible = false;
UpdateGame(); UpdateGame();
} }
@@ -798,9 +876,6 @@ namespace Vocaluxe.Screens
CParty.OnSongChange(_SelectedSongID, ref _Sso); CParty.OnSongChange(_SelectedSongID, ref _Sso);
} }
_Sso = CParty.GetSongSelectionOptions();
if (_Sso.Selection.PartyMode) if (_Sso.Selection.PartyMode)
{ {
CSongs.Sort(_Sso.Sorting.SongSorting, _Sso.Sorting.Tabs, _Sso.Sorting.IgnoreArticles, _Sso.Sorting.SearchString, _Sso.Sorting.DuetOptions, _Sso.Sorting.FilterPlaylistID); CSongs.Sort(_Sso.Sorting.SongSorting, _Sso.Sorting.Tabs, _Sso.Sorting.IgnoreArticles, _Sso.Sorting.SearchString, _Sso.Sorting.DuetOptions, _Sso.Sorting.FilterPlaylistID);
@@ -864,6 +939,55 @@ namespace Vocaluxe.Screens
} }
} }
private void _ToggleSort(int sortNr)
{
if (CBase.Songs.IsInCategory() && _Sso.Selection.CategoryChangeAllowed)
{
CBase.Songs.SetCategory(-1);
}
CSongs.Sorter.SongSorting = (ESongSorting)sortNr;
CConfig.Config.Game.SongSorting = CSongs.Sorter.SongSorting;
_Sso.Sorting.SongSorting = CSongs.Sorter.SongSorting;
_SongMenu.Update(_Sso);
_SongMenu.OnShow();
_Texts[_TextShortInfoTop].Text = CBase.Language.Translate("TR_SCREENSONG_SORTING").Replace("%s", CBase.Language.Translate(_Sso.Sorting.SongSorting.ToString()));
_Statics[_StaticShortInfoTop].Visible = true;
_Texts[_TextShortInfoTop].Visible = true;
_TimerShortInfoText.Stop();
_TimerShortInfoText.Enabled = true;
}
private void OnTimedEventShortInfoText(Object source, ElapsedEventArgs e)
{
_Statics[_StaticShortInfoTop].Visible = false;
_Texts[_TextShortInfoTop].Visible = false;
}
private void _ToggleTabs()
{
EOffOn tmpStatus = CSongs.Categorizer.Tabs;
if (tmpStatus == EOffOn.TR_CONFIG_ON)
CSongs.Categorizer.Tabs = EOffOn.TR_CONFIG_OFF;
else
CSongs.Categorizer.Tabs = EOffOn.TR_CONFIG_ON;
CConfig.Config.Game.Tabs = CSongs.Categorizer.Tabs;
_Sso.Sorting.Tabs = CSongs.Categorizer.Tabs;
_SongMenu.Update(_Sso);
_SongMenu.OnShow();
}
private void _ShowHighscore()
{
CGame.ClearSongs();
CScreenSong.setStaticSelectedSongID(CSongs.VisibleSongs[_SongMenu.GetPreviewSongNr()].ID);
CBase.Graphics.FadeTo(EScreen.Highscore);
}
private void _StartSong(int songNr) private void _StartSong(int songNr)
{ {
if (CSongs.IsInCategory && (songNr >= 0)) if (CSongs.IsInCategory && (songNr >= 0))
@@ -1082,7 +1206,7 @@ namespace Vocaluxe.Screens
{ {
case ESongSorting.TR_CONFIG_ARTIST: case ESongSorting.TR_CONFIG_ARTIST:
case ESongSorting.TR_CONFIG_ARTIST_LETTER: case ESongSorting.TR_CONFIG_ARTIST_LETTER:
visibleID = _FindIndex(songs, start, element => element.Artist.StartsWith(searchString, StringComparison.OrdinalIgnoreCase)); visibleID = _FindIndex(songs, start, element => (_Sso.Sorting.IgnoreArticles == EOffOn.TR_CONFIG_ON ? element.ArtistSorting.StartsWith(searchString, StringComparison.OrdinalIgnoreCase) : element.Artist.StartsWith(searchString, StringComparison.OrdinalIgnoreCase)));
break; break;
case ESongSorting.TR_CONFIG_YEAR: case ESongSorting.TR_CONFIG_YEAR:
@@ -1091,7 +1215,7 @@ namespace Vocaluxe.Screens
break; break;
case ESongSorting.TR_CONFIG_TITLE_LETTER: case ESongSorting.TR_CONFIG_TITLE_LETTER:
visibleID = _FindIndex(songs, start, element => element.Title.StartsWith(searchString, StringComparison.OrdinalIgnoreCase)); visibleID = _FindIndex(songs, start, element => (_Sso.Sorting.IgnoreArticles == EOffOn.TR_CONFIG_ON ? element.TitleSorting.StartsWith(searchString, StringComparison.OrdinalIgnoreCase) : element.Title.StartsWith(searchString, StringComparison.OrdinalIgnoreCase)));
break; break;
case ESongSorting.TR_CONFIG_FOLDER: case ESongSorting.TR_CONFIG_FOLDER:
@@ -1109,12 +1233,12 @@ namespace Vocaluxe.Screens
{ {
case ESongSorting.TR_CONFIG_FOLDER: case ESongSorting.TR_CONFIG_FOLDER:
case ESongSorting.TR_CONFIG_TITLE_LETTER: case ESongSorting.TR_CONFIG_TITLE_LETTER:
visibleID = _FindIndex(songs, start, element => element.Artist.StartsWith(searchString, StringComparison.OrdinalIgnoreCase)); visibleID = _FindIndex(songs, start, element => (_Sso.Sorting.IgnoreArticles == EOffOn.TR_CONFIG_ON ? element.ArtistSorting.StartsWith(searchString, StringComparison.OrdinalIgnoreCase) : element.Artist.StartsWith(searchString, StringComparison.OrdinalIgnoreCase)));
break; break;
case ESongSorting.TR_CONFIG_ARTIST: case ESongSorting.TR_CONFIG_ARTIST:
case ESongSorting.TR_CONFIG_ARTIST_LETTER: case ESongSorting.TR_CONFIG_ARTIST_LETTER:
visibleID = _FindIndex(songs, start, element => element.Title.StartsWith(searchString, StringComparison.OrdinalIgnoreCase)); visibleID = _FindIndex(songs, start, element => (_Sso.Sorting.IgnoreArticles == EOffOn.TR_CONFIG_ON ? element.TitleSorting.StartsWith(searchString, StringComparison.OrdinalIgnoreCase) : element.Title.StartsWith(searchString, StringComparison.OrdinalIgnoreCase)));
break; break;
} }
if (visibleID > -1) if (visibleID > -1)
@@ -1133,6 +1257,22 @@ namespace Vocaluxe.Screens
_JumpTo_lastSearchString = searchString; _JumpTo_lastSearchString = searchString;
} }
public void _TogglePlaylistFilter()
{
if (_Sso.Sorting.FilterPlaylistID == _Playlist.ActivePlaylistID)
{
if (_Playlist.ActivePlaylistID == -1)
return;
_Sso.Sorting.FilterPlaylistID = -1;
}
else
_Sso.Sorting.FilterPlaylistID = _Playlist.ActivePlaylistID;
CSongs.Sort(_Sso.Sorting.SongSorting, _Sso.Sorting.Tabs, _Sso.Sorting.IgnoreArticles, _Sso.Sorting.SearchString, _Sso.Sorting.DuetOptions, _Sso.Sorting.FilterPlaylistID);
_SongMenu.OnShow();
}
private void _ApplyNewSearchFilter(string newFilterString) private void _ApplyNewSearchFilter(string newFilterString)
{ {
CParty.SetSearchString(newFilterString, _SearchActive); CParty.SetSearchString(newFilterString, _SearchActive);
@@ -1185,6 +1325,7 @@ namespace Vocaluxe.Screens
_Buttons[_ButtonOptionsOpenSelectedItem].Visible = false; _Buttons[_ButtonOptionsOpenSelectedItem].Visible = false;
_Buttons[_ButtonOptionsRandomMedley].Visible = false; _Buttons[_ButtonOptionsRandomMedley].Visible = false;
_Buttons[_ButtonOptionsStartMedley].Visible = false; _Buttons[_ButtonOptionsStartMedley].Visible = false;
_Buttons[_ButtonOptionsHighscore].Visible = false;
_Texts[_TextOptionsTitle].Visible = false; _Texts[_TextOptionsTitle].Visible = false;
_Statics[_StaticOptionsBG].Visible = false; _Statics[_StaticOptionsBG].Visible = false;
_Buttons[_ButtonOpenOptions].Visible = true; _Buttons[_ButtonOpenOptions].Visible = true;
@@ -1241,6 +1382,7 @@ namespace Vocaluxe.Screens
_SelectSlides[_SelectSlideOptionsPlaylistAdd].Visible = true; _SelectSlides[_SelectSlideOptionsPlaylistAdd].Visible = true;
_Buttons[_ButtonOptionsSing].Visible = true; _Buttons[_ButtonOptionsSing].Visible = true;
_Buttons[_ButtonOptionsPlaylist].Visible = true; _Buttons[_ButtonOptionsPlaylist].Visible = true;
_Buttons[_ButtonOptionsHighscore].Visible = true;
_SelectElement(_Buttons[_ButtonOptionsSing]); _SelectElement(_Buttons[_ButtonOptionsSing]);
_SetSelectSlidePlaylistToCurrentPlaylist(); _SetSelectSlidePlaylistToCurrentPlaylist();
} }
+5
View File
@@ -972,6 +972,11 @@ namespace VocaluxeLib.Menu
return false; return false;
} }
public bool isPlaylistNameEditMode()
{
return _EditMode == EEditMode.PlaylistName;
}
private void _PrepareList() private void _PrepareList()
{ {
_PlaylistElements.Clear(); _PlaylistElements.Clear();
@@ -63,6 +63,7 @@ namespace VocaluxeLib.Menu.SongMenu
public SThemeText TextArtist; public SThemeText TextArtist;
public SThemeText TextTitle; public SThemeText TextTitle;
public SThemeText TextSongLength; public SThemeText TextSongLength;
public SThemeText TextSongYear;
public SThemeStatic StaticCoverBig; public SThemeStatic StaticCoverBig;
public SThemeStatic StaticTextBG; public SThemeStatic StaticTextBG;
@@ -111,6 +112,7 @@ namespace VocaluxeLib.Menu.SongMenu
public SThemeText TextArtist; public SThemeText TextArtist;
public SThemeText TextTitle; public SThemeText TextTitle;
public SThemeText TextSongLength; public SThemeText TextSongLength;
public SThemeText TextSongYear;
public SThemeStatic StaticCoverBig; public SThemeStatic StaticCoverBig;
public SThemeStatic StaticTextBG; public SThemeStatic StaticTextBG;
@@ -220,7 +222,7 @@ namespace VocaluxeLib.Menu.SongMenu
EScreen check = CBase.Graphics.GetNextScreenType(); EScreen check = CBase.Graphics.GetNextScreenType();
if (CBase.Graphics.GetNextScreenType() == EScreen.Sing) if (CBase.Graphics.GetNextScreenType() == EScreen.Sing)
_ResetPreview(false); _ResetPreview(false);
else if (CBase.Graphics.GetNextScreenType() != EScreen.Names || CBase.Config.GetBackgroundMusicStatus() == EBackgroundMusicOffOn.TR_CONFIG_OFF) else if ((CBase.Graphics.GetNextScreenType() != EScreen.Names && CBase.Graphics.GetNextScreenType() != EScreen.Highscore) || CBase.Config.GetBackgroundMusicStatus() == EBackgroundMusicOffOn.TR_CONFIG_OFF)
_ResetPreview(); _ResetPreview();
} }
+42 -3
View File
@@ -43,6 +43,7 @@ namespace VocaluxeLib.Menu.SongMenu
private readonly CText _Artist; private readonly CText _Artist;
private readonly CText _Title; private readonly CText _Title;
private readonly CText _SongLength; private readonly CText _SongLength;
private readonly CText _SongYear;
private float _SpaceW; private float _SpaceW;
private float _SpaceH; private float _SpaceH;
@@ -118,19 +119,21 @@ namespace VocaluxeLib.Menu.SongMenu
_Artist = new CText(_Theme.SongMenuList.TextArtist, _PartyModeID); _Artist = new CText(_Theme.SongMenuList.TextArtist, _PartyModeID);
_Title = new CText(_Theme.SongMenuList.TextTitle, _PartyModeID); _Title = new CText(_Theme.SongMenuList.TextTitle, _PartyModeID);
_SongLength = new CText(_Theme.SongMenuList.TextSongLength, _PartyModeID); _SongLength = new CText(_Theme.SongMenuList.TextSongLength, _PartyModeID);
_SongYear = new CText(_Theme.SongMenuList.TextSongYear, _PartyModeID);
_CoverBig = new CStatic(_Theme.SongMenuList.StaticCoverBig, _PartyModeID); _CoverBig = new CStatic(_Theme.SongMenuList.StaticCoverBig, _PartyModeID);
_TextBG = new CStatic(_Theme.SongMenuList.StaticTextBG, _PartyModeID); _TextBG = new CStatic(_Theme.SongMenuList.StaticTextBG, _PartyModeID);
_DuetIcon = new CStatic(_Theme.SongMenuList.StaticDuetIcon, _PartyModeID); _DuetIcon = new CStatic(_Theme.SongMenuList.StaticDuetIcon, _PartyModeID);
_VideoIcon = new CStatic(_Theme.SongMenuList.StaticVideoIcon, _PartyModeID); _VideoIcon = new CStatic(_Theme.SongMenuList.StaticVideoIcon, _PartyModeID);
_MedleyCalcIcon = new CStatic(_Theme.SongMenuList.StaticMedleyCalcIcon, _PartyModeID); _MedleyCalcIcon = new CStatic(_Theme.SongMenuList.StaticMedleyCalcIcon, _PartyModeID);
_MedleyTagIcon = new CStatic(_Theme.SongMenuList.StaticMedleyTagIcon, _PartyModeID); _MedleyTagIcon = new CStatic(_Theme.SongMenuList.StaticMedleyTagIcon, _PartyModeID);
_SubElements.AddRange(new IMenuElement[] {_Artist, _Title, _SongLength, _DuetIcon, _VideoIcon, _MedleyCalcIcon, _MedleyTagIcon}); _SubElements.AddRange(new IMenuElement[] {_Artist, _Title, _SongLength, _SongYear, _DuetIcon, _VideoIcon, _MedleyCalcIcon, _MedleyTagIcon});
} }
private void _ReadSubTheme() private void _ReadSubTheme()
{ {
_Theme.SongMenuList.TextArtist = (SThemeText)_Artist.GetTheme(); _Theme.SongMenuList.TextArtist = (SThemeText)_Artist.GetTheme();
_Theme.SongMenuList.TextSongLength = (SThemeText)_SongLength.GetTheme(); _Theme.SongMenuList.TextSongLength = (SThemeText)_SongLength.GetTheme();
_Theme.SongMenuList.TextSongYear = (SThemeText)_SongYear.GetTheme();
_Theme.SongMenuList.TextTitle = (SThemeText)_Title.GetTheme(); _Theme.SongMenuList.TextTitle = (SThemeText)_Title.GetTheme();
_Theme.SongMenuList.StaticCoverBig = (SThemeStatic)_CoverBig.GetTheme(); _Theme.SongMenuList.StaticCoverBig = (SThemeStatic)_CoverBig.GetTheme();
_Theme.SongMenuList.StaticDuetIcon = (SThemeStatic)_DuetIcon.GetTheme(); _Theme.SongMenuList.StaticDuetIcon = (SThemeStatic)_DuetIcon.GetTheme();
@@ -217,6 +220,7 @@ namespace VocaluxeLib.Menu.SongMenu
_Artist.Text = String.Empty; _Artist.Text = String.Empty;
_Title.Text = String.Empty; _Title.Text = String.Empty;
_SongLength.Text = String.Empty; _SongLength.Text = String.Empty;
_SongYear.Text = String.Empty;
_DuetIcon.Visible = false; _DuetIcon.Visible = false;
_VideoIcon.Visible = false; _VideoIcon.Visible = false;
_MedleyCalcIcon.Visible = false; _MedleyCalcIcon.Visible = false;
@@ -245,6 +249,7 @@ namespace VocaluxeLib.Menu.SongMenu
_CoverBig.Texture = song.CoverTextureBig; _CoverBig.Texture = song.CoverTextureBig;
_Artist.Text = song.Artist; _Artist.Text = song.Artist;
_Title.Text = song.Title; _Title.Text = song.Title;
_SongYear.Text = song.Year;
_DuetIcon.Visible = song.IsDuet; _DuetIcon.Visible = song.IsDuet;
_VideoIcon.Visible = song.VideoFileName != ""; _VideoIcon.Visible = song.VideoFileName != "";
_MedleyCalcIcon.Visible = song.Medley.Source == EDataSource.Calculated; _MedleyCalcIcon.Visible = song.Medley.Source == EDataSource.Calculated;
@@ -344,19 +349,53 @@ namespace VocaluxeLib.Menu.SongMenu
break; break;
case Keys.PageUp: case Keys.PageUp:
if (catChangePossible) if (catChangePossible && CBase.Songs.IsInCategory() && (keyEvent.Mod == EModifier.Ctrl || keyEvent.Mod == EModifier.Alt))
{ {
_PrevCategory(); _PrevCategory();
keyEvent.Handled = true; keyEvent.Handled = true;
} }
else if (moveAllowed)
{
if ((_SelectionNr - _ListLength) <= 0)
_SelectionNr = 0;
else
_SelectionNr = _SelectionNr - _ListLength;
keyEvent.Handled = true;
}
break; break;
case Keys.PageDown: case Keys.PageDown:
if (catChangePossible) if (catChangePossible && CBase.Songs.IsInCategory() && (keyEvent.Mod == EModifier.Ctrl || keyEvent.Mod == EModifier.Alt))
{ {
_NextCategory(); _NextCategory();
keyEvent.Handled = true; keyEvent.Handled = true;
} }
else if (moveAllowed)
{
int maxCount_PageDown = (CBase.Songs.GetTabs() == EOffOn.TR_CONFIG_ON && !CBase.Songs.IsInCategory() ? CBase.Songs.GetNumCategories() : CBase.Songs.GetNumSongsVisible());
if ((_SelectionNr + _ListLength) >= maxCount_PageDown)
_SelectionNr = maxCount_PageDown - 1;
else
_SelectionNr = _SelectionNr + _ListLength;
keyEvent.Handled = true;
}
break;
case Keys.Home:
if (moveAllowed)
{
_SelectionNr = 0;
keyEvent.Handled = true;
}
break;
case Keys.End:
int maxCount_End = (CBase.Songs.GetTabs() == EOffOn.TR_CONFIG_ON && !CBase.Songs.IsInCategory() ? CBase.Songs.GetNumCategories() : CBase.Songs.GetNumSongsVisible());
if (moveAllowed)
{
_SelectionNr = maxCount_End - 1;
keyEvent.Handled = true;
}
break; break;
case Keys.Left: case Keys.Left:
@@ -42,6 +42,7 @@ namespace VocaluxeLib.Menu.SongMenu
private CText _Artist; private CText _Artist;
private CText _Title; private CText _Title;
private CText _SongLength; private CText _SongLength;
private CText _SongYear;
private int _NumW; private int _NumW;
private int _NumH; private int _NumH;
@@ -113,13 +114,14 @@ namespace VocaluxeLib.Menu.SongMenu
_Artist = new CText(_Theme.SongMenuTileBoard.TextArtist, _PartyModeID); _Artist = new CText(_Theme.SongMenuTileBoard.TextArtist, _PartyModeID);
_Title = new CText(_Theme.SongMenuTileBoard.TextTitle, _PartyModeID); _Title = new CText(_Theme.SongMenuTileBoard.TextTitle, _PartyModeID);
_SongLength = new CText(_Theme.SongMenuTileBoard.TextSongLength, _PartyModeID); _SongLength = new CText(_Theme.SongMenuTileBoard.TextSongLength, _PartyModeID);
_SongYear = new CText(_Theme.SongMenuTileBoard.TextSongYear, _PartyModeID);
_CoverBig = new CStatic(_Theme.SongMenuTileBoard.StaticCoverBig, _PartyModeID); _CoverBig = new CStatic(_Theme.SongMenuTileBoard.StaticCoverBig, _PartyModeID);
_TextBG = new CStatic(_Theme.SongMenuTileBoard.StaticTextBG, _PartyModeID); _TextBG = new CStatic(_Theme.SongMenuTileBoard.StaticTextBG, _PartyModeID);
_DuetIcon = new CStatic(_Theme.SongMenuTileBoard.StaticDuetIcon, _PartyModeID); _DuetIcon = new CStatic(_Theme.SongMenuTileBoard.StaticDuetIcon, _PartyModeID);
_VideoIcon = new CStatic(_Theme.SongMenuTileBoard.StaticVideoIcon, _PartyModeID); _VideoIcon = new CStatic(_Theme.SongMenuTileBoard.StaticVideoIcon, _PartyModeID);
_MedleyCalcIcon = new CStatic(_Theme.SongMenuTileBoard.StaticMedleyCalcIcon, _PartyModeID); _MedleyCalcIcon = new CStatic(_Theme.SongMenuTileBoard.StaticMedleyCalcIcon, _PartyModeID);
_MedleyTagIcon = new CStatic(_Theme.SongMenuTileBoard.StaticMedleyTagIcon, _PartyModeID); _MedleyTagIcon = new CStatic(_Theme.SongMenuTileBoard.StaticMedleyTagIcon, _PartyModeID);
_SubElements.AddRange(new IMenuElement[] {_Artist, _Title, _SongLength, _DuetIcon, _VideoIcon, _MedleyCalcIcon, _MedleyTagIcon}); _SubElements.AddRange(new IMenuElement[] {_Artist, _Title, _SongLength, _SongYear, _DuetIcon, _VideoIcon, _MedleyCalcIcon, _MedleyTagIcon});
} }
private void _UpdateTileSelection() private void _UpdateTileSelection()
@@ -135,6 +137,7 @@ namespace VocaluxeLib.Menu.SongMenu
{ {
_Theme.SongMenuTileBoard.TextArtist = (SThemeText)_Artist.GetTheme(); _Theme.SongMenuTileBoard.TextArtist = (SThemeText)_Artist.GetTheme();
_Theme.SongMenuTileBoard.TextSongLength = (SThemeText)_SongLength.GetTheme(); _Theme.SongMenuTileBoard.TextSongLength = (SThemeText)_SongLength.GetTheme();
_Theme.SongMenuTileBoard.TextSongYear = (SThemeText)_SongYear.GetTheme();
_Theme.SongMenuTileBoard.TextTitle = (SThemeText)_Title.GetTheme(); _Theme.SongMenuTileBoard.TextTitle = (SThemeText)_Title.GetTheme();
_Theme.SongMenuTileBoard.StaticCoverBig = (SThemeStatic)_CoverBig.GetTheme(); _Theme.SongMenuTileBoard.StaticCoverBig = (SThemeStatic)_CoverBig.GetTheme();
_Theme.SongMenuTileBoard.StaticDuetIcon = (SThemeStatic)_DuetIcon.GetTheme(); _Theme.SongMenuTileBoard.StaticDuetIcon = (SThemeStatic)_DuetIcon.GetTheme();
@@ -208,6 +211,7 @@ namespace VocaluxeLib.Menu.SongMenu
_Artist.Text = String.Empty; _Artist.Text = String.Empty;
_Title.Text = String.Empty; _Title.Text = String.Empty;
_SongLength.Text = String.Empty; _SongLength.Text = String.Empty;
_SongYear.Text = String.Empty;
_DuetIcon.Visible = false; _DuetIcon.Visible = false;
_VideoIcon.Visible = false; _VideoIcon.Visible = false;
_MedleyCalcIcon.Visible = false; _MedleyCalcIcon.Visible = false;
@@ -236,6 +240,7 @@ namespace VocaluxeLib.Menu.SongMenu
_CoverBig.Texture = song.CoverTextureBig; _CoverBig.Texture = song.CoverTextureBig;
_Artist.Text = song.Artist; _Artist.Text = song.Artist;
_Title.Text = song.Title; _Title.Text = song.Title;
_SongYear.Text = song.Year;
_DuetIcon.Visible = song.IsDuet; _DuetIcon.Visible = song.IsDuet;
_VideoIcon.Visible = song.VideoFileName != ""; _VideoIcon.Visible = song.VideoFileName != "";
_MedleyCalcIcon.Visible = song.Medley.Source == EDataSource.Calculated; _MedleyCalcIcon.Visible = song.Medley.Source == EDataSource.Calculated;
@@ -335,19 +340,55 @@ namespace VocaluxeLib.Menu.SongMenu
break; break;
case Keys.PageUp: case Keys.PageUp:
if (catChangePossible) if (catChangePossible && CBase.Songs.IsInCategory() && (keyEvent.Mod == EModifier.Ctrl || keyEvent.Mod == EModifier.Alt))
{ {
_PrevCategory(); _PrevCategory();
keyEvent.Handled = true; keyEvent.Handled = true;
} }
else if (moveAllowed)
{
int numSongsPerPage = _NumH * _NumW;
if ((_SelectionNr - numSongsPerPage) <= 0)
_SelectionNr = 0;
else
_SelectionNr = _SelectionNr - numSongsPerPage;
keyEvent.Handled = true;
}
break; break;
case Keys.PageDown: case Keys.PageDown:
if (catChangePossible) if (catChangePossible && CBase.Songs.IsInCategory() && (keyEvent.Mod == EModifier.Ctrl || keyEvent.Mod == EModifier.Alt))
{ {
_NextCategory(); _NextCategory();
keyEvent.Handled = true; keyEvent.Handled = true;
} }
else if (moveAllowed)
{
int numSongsPerPage = _NumH * _NumW;
int maxCount_PageDown = (CBase.Songs.GetTabs() == EOffOn.TR_CONFIG_ON && !CBase.Songs.IsInCategory() ? CBase.Songs.GetNumCategories() : CBase.Songs.GetNumSongsVisible());
if ((_SelectionNr + numSongsPerPage) >= maxCount_PageDown)
_SelectionNr = maxCount_PageDown - 1;
else
_SelectionNr = _SelectionNr + numSongsPerPage;
keyEvent.Handled = true;
}
break;
case Keys.Home:
if (moveAllowed)
{
_SelectionNr = 0;
keyEvent.Handled = true;
}
break;
case Keys.End:
int maxCount_End = (CBase.Songs.GetTabs() == EOffOn.TR_CONFIG_ON && !CBase.Songs.IsInCategory() ? CBase.Songs.GetNumCategories() : CBase.Songs.GetNumSongsVisible());
if (moveAllowed)
{
_SelectionNr = maxCount_End - 1;
keyEvent.Handled = true;
}
break; break;
case Keys.Left: case Keys.Left:
+11
View File
@@ -288,6 +288,17 @@ namespace VocaluxeLib.Songs
return loader.ReadNotes(); return loader.ReadNotes();
} }
public bool ReloadSong(bool reloadNotes)
{
var loader = new CSongLoader(this);
bool retValue = loader.ReadHeader();
if (!retValue)
return false;
retValue = loader.ReadNotes(reloadNotes);
return retValue;
}
public bool Save() public bool Save()
{ {
return Save(Path.Combine(Folder, FileName)); return Save(Path.Combine(Folder, FileName));
+4
View File
@@ -82,12 +82,16 @@ namespace VocaluxeLib.Songs
_Song.Languages.Clear(); _Song.Languages.Clear();
_Song.Genres.Clear(); _Song.Genres.Clear();
_Song.UnknownTags.Clear(); _Song.UnknownTags.Clear();
_Song.BackgroundFileNames.Clear();
_Song._Comment = ""; _Song._Comment = "";
_Song.ManualEncoding = false; _Song.ManualEncoding = false;
_Song.Medley.Source = EDataSource.None; _Song.Medley.Source = EDataSource.None;
_Song._CalculateMedley = true; _Song._CalculateMedley = true;
_Song.Preview.Source = EDataSource.None; _Song.Preview.Source = EDataSource.None;
_Song.ShortEnd.Source = EDataSource.None; _Song.ShortEnd.Source = EDataSource.None;
_Song.Start = 0;
_Song.VideoGap = 0;
_Song.Preview.StartTime = 0;
var headerFlags = new EHeaderFlags(); var headerFlags = new EHeaderFlags();
StreamReader sr = null; StreamReader sr = null;