diff --git a/Output/Languages/English.xml b/Output/Languages/English.xml index 80fdf299..3455a91f 100644 --- a/Output/Languages/English.xml +++ b/Output/Languages/English.xml @@ -15,6 +15,7 @@ Loaded songs Mouse Memory usage + Game mode Normal Duet Medley @@ -31,6 +32,10 @@ Normal user Administrator Keyboard user + Song source + Playlist + Category + All songs Software OpenGL Direct3D diff --git a/Output/PartyModes/Challenge.xml b/Output/PartyModes/Challenge.xml index 964a589e..49873a96 100644 --- a/Output/PartyModes/Challenge.xml +++ b/Output/PartyModes/Challenge.xml @@ -15,5 +15,6 @@ CPartyScreenChallengeMain CPartyScreenChallengeConfig CPartyScreenChallengeNames + CPartyScreenChallengeSongs diff --git a/Output/PartyModes/Challenge/Languages/English.xml b/Output/PartyModes/Challenge/Languages/English.xml index 3907bf70..06b3badc 100644 --- a/Output/PartyModes/Challenge/Languages/English.xml +++ b/Output/PartyModes/Challenge/Languages/English.xml @@ -11,6 +11,7 @@ Yes No Next Round + Songs Challenge Mode: Configuration Number of players Number of mics diff --git a/Output/PartyModes/Challenge/Themes/Default/Default.xml b/Output/PartyModes/Challenge/Themes/Default/Default.xml index f4299579..52a8859e 100644 --- a/Output/PartyModes/Challenge/Themes/Default/Default.xml +++ b/Output/PartyModes/Challenge/Themes/Default/Default.xml @@ -3,14 +3,11 @@ 4 Default - brunzel + Jiiniasu 0 1 - - - - - - + + + diff --git a/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeConfig.xml b/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeConfig.xml index 64e3adad..97b70135 100644 --- a/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeConfig.xml +++ b/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeConfig.xml @@ -14,26 +14,26 @@ - - Menu - + + + - 40 + 0 40 - 1200 - 50 - 0 + 1280 + 45 + 1 - + 640 - 48 + 50 0 27 0 - + Center Center @@ -41,13 +41,13 @@ Outline TR_SCREENCONFIG_TITLE - + 75 105 0 27 0 - + Left Center @@ -55,13 +55,13 @@ Outline TR_SCREENCONFIG_NUMPLAYERS - + 75 165 0 27 0 - + Left Center @@ -69,13 +69,13 @@ Outline TR_SCREENCONFIG_NUMMICS - + 75 225 0 27 0 - + Left Center @@ -83,13 +83,13 @@ Outline TR_SCREENCONFIG_NUMROUNDS - + 75 285 0 27 0 - + Left Center @@ -97,13 +97,13 @@ Outline TR_SCREENCONFIG_NUMJOKERS - + 75 345 0 27 0 - + Left Center @@ -127,7 +127,7 @@ 75 - 10 + 12 0 27 142 @@ -162,7 +162,7 @@ 75 - 10 + 12 0 27 142 @@ -209,7 +209,7 @@ 0 - 1170 + 1155 105 40 40 @@ -219,12 +219,12 @@ - + 27 50 0 - 205.33 + 200 Outline Bold 9 @@ -251,7 +251,7 @@ 0 - 1170 + 1155 165 40 40 @@ -261,12 +261,12 @@ - + 27 50 0 - 205.33 + 200 Outline Bold 2 @@ -293,7 +293,7 @@ 0 - 1170 + 1155 225 40 40 @@ -303,12 +303,12 @@ - + 27 50 0 - 205.33 + 200 Outline Bold 10 @@ -335,7 +335,7 @@ 0 - 1170 + 1155 285 40 40 @@ -345,12 +345,12 @@ - + 27 50 0 - 205.33 + 200 Outline Bold 10 @@ -377,7 +377,7 @@ 0 - 1170 + 1155 345 40 40 @@ -387,12 +387,12 @@ - + 27 50 0 - 205.33 + 200 Outline Bold 2 diff --git a/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeMain.xml b/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeMain.xml index 1c67c701..c8752d0f 100644 --- a/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeMain.xml +++ b/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeMain.xml @@ -14,15 +14,15 @@ - - Menu - + + + - 40 + 0 40 - 1200 - 50 - 0 + 1280 + 45 + 1 @@ -49,13 +49,13 @@ - + 640 - 48 + 50 0 27 0 - + Center Center @@ -65,11 +65,11 @@ 40 - 102 + 135 0 27 0 - + Right Center @@ -79,11 +79,11 @@ 50 - 102 + 135 0 27 130 - + Left Center @@ -93,11 +93,11 @@ 260 - 102 + 135 0 27 0 - + Right Center @@ -107,11 +107,11 @@ 340 - 102 + 135 0 27 0 - + Right Center @@ -121,11 +121,11 @@ 490 - 102 + 135 0 27 0 - + Right Center @@ -135,11 +135,11 @@ 590 - 102 + 135 0 27 0 - + Right Center @@ -153,7 +153,7 @@ 0 27 100 - + Center Center @@ -163,11 +163,11 @@ 640 - 265 + 270 -1.01 27 380 - + Center Center @@ -177,11 +177,11 @@ 660 - 102 + 135 0 27 0 - + Right Center @@ -195,7 +195,7 @@ 0 27 0 - + Center Center @@ -209,7 +209,7 @@ 0 27 0 - + Center Center @@ -223,7 +223,7 @@ 0 44 0 - + Center Center @@ -237,7 +237,7 @@ 0 31 770 - + Center Center @@ -251,7 +251,7 @@ 0 27 0 - + Center Center @@ -310,7 +310,7 @@ 75 - 10 + 12 0 27 142 @@ -345,7 +345,7 @@ 75 - 10 + 12 0 27 142 @@ -380,7 +380,7 @@ 75 - 10 + 12 0 27 142 @@ -415,7 +415,7 @@ 75 - 10 + 12 0 27 142 @@ -441,7 +441,7 @@ ScrollDown 281 - 515 + 495 28 15 -0.01 @@ -468,7 +468,7 @@ ScrollUp 281 - 94 + 110 28 15 -0.01 @@ -495,7 +495,7 @@ ScrollDown 954 - 515 + 470 28 15 -0.01 @@ -522,7 +522,7 @@ ScrollUp 954 - 94 + 110 28 15 -0.01 @@ -554,4 +554,4 @@ - \ No newline at end of file + diff --git a/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeNames.xml b/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeNames.xml index 5980e6d3..2ce1d175 100644 --- a/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeNames.xml +++ b/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeNames.xml @@ -14,26 +14,26 @@ - - Menu - + + + - 40 + 0 40 - 1200 - 50 - 0 + 1280 + 45 + 1 - + 640 - 48 + 50 0 27 0 - + Center Center @@ -48,7 +48,7 @@ Button 145 - 625 + 600 150 50 0 @@ -57,7 +57,7 @@ 75 - 10 + 12 0 27 142 @@ -83,7 +83,7 @@ Button 985 - 625 + 600 150 50 0 @@ -92,7 +92,7 @@ 75 - 10 + 12 0 27 142 @@ -118,7 +118,7 @@ Button 565 - 625 + 600 150 50 0 @@ -127,7 +127,7 @@ 75 - 10 + 12 0 27 142 @@ -282,7 +282,7 @@ 0 - 1170 + 1195 105 40 40 @@ -292,12 +292,12 @@ - + 27 50 0 - 205.33 + 200 Outline Bold 2 @@ -324,7 +324,7 @@ 0 - 1170 + 1195 210 40 40 @@ -334,12 +334,12 @@ - + 27 50 5 - 205.33 + 200 Outline Bold 8 @@ -349,29 +349,24 @@ - 42 - 327 + 95 + 350 1200 393 0 CoverTile - - 1 - 1 - 1 - 0.2 - + PlayerSelector 100 100 10 2 - 20.71 - 30 + 10 + 10 - 2 + -20 17 Outline diff --git a/Output/PartyModes/TicTacToe/Themes/Genius/Screens/PartyScreenTicTacToeConfig.xml b/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeSongs.xml similarity index 83% rename from Output/PartyModes/TicTacToe/Themes/Genius/Screens/PartyScreenTicTacToeConfig.xml rename to Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeSongs.xml index a38e7694..923ffc68 100644 --- a/Output/PartyModes/TicTacToe/Themes/Genius/Screens/PartyScreenTicTacToeConfig.xml +++ b/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeSongs.xml @@ -1,7 +1,7 @@ - PartyScreenTicTacToeConfig + PartyScreenChallengeSongs 1 @@ -41,7 +41,7 @@ Outline TR_SCREENCONFIG_TITLE - + 75 105 0 @@ -53,11 +53,11 @@ Center Outline - TR_SCREENCONFIG_NUMFIELDS + TR_SONGSOURCE - + 75 - 165 + 290 0 27 0 @@ -67,21 +67,7 @@ Center Outline - TR_SCREENCONFIG_SONGSOURCE - - - 75 - 285 - 0 - 27 - 0 - - - Left - Center - - Outline - TR_SCREENCONFIG_GAMEMODE + TR_GAMEMODE @@ -159,7 +145,7 @@ - + SelectSlideArrowLeft SelectSlideArrowRight @@ -201,7 +187,7 @@ Bold 3 - + SelectSlideArrowLeft SelectSlideArrowRight @@ -238,12 +224,12 @@ 27 50 0 - 205.33 + 600 Outline Bold 3 - + SelectSlideArrowLeft SelectSlideArrowRight @@ -252,21 +238,21 @@ SelectSlideArrowRight 500 - 220 + 160 700 50 0 505 - 225 + 165 40 40 0 1155 - 225 + 165 40 40 0 @@ -280,10 +266,10 @@ 27 50 0 - 205.33 + 600 Outline Bold - 1 + 3 @@ -322,12 +308,12 @@ 27 50 0 - 205.33 + 600 Outline Bold 1 - + SelectSlideArrowLeft SelectSlideArrowRight @@ -336,21 +322,21 @@ SelectSlideArrowRight 500 - 280 + 290 700 50 0 505 - 285 + 295 40 40 0 1155 - 285 + 295 40 40 0 @@ -367,7 +353,49 @@ 205.33 Outline Bold - 1 + 2 + + + + SelectSlideArrowLeft + SelectSlideArrowRight + SelectSlide + SelectSlideArrowLeft + SelectSlideArrowRight + + 500 + 360 + 700 + 50 + 0 + + + 505 + 365 + 40 + 40 + 0 + + + 1155 + 365 + 40 + 40 + 0 + + + + + + + + 27 + 50 + 0 + 205.33 + Outline + Bold + 5 @@ -376,4 +404,4 @@ - \ No newline at end of file + diff --git a/Output/PartyModes/Challenge/Themes/Genius.xml b/Output/PartyModes/Challenge/Themes/Genius.xml deleted file mode 100644 index 7a551898..00000000 --- a/Output/PartyModes/Challenge/Themes/Genius.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - 6 - - Genius - Jiiniasu - 0 - 1 - - \ No newline at end of file diff --git a/Output/PartyModes/Challenge/Themes/Genius/Genius.xml b/Output/PartyModes/Challenge/Themes/Genius/Genius.xml deleted file mode 100644 index 2db98024..00000000 --- a/Output/PartyModes/Challenge/Themes/Genius/Genius.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - 4 - - Genius - Jiiniasu - 0 - 1 - - - - - \ No newline at end of file diff --git a/Output/PartyModes/Challenge/Themes/Genius/Screens/PartyScreenChallengeMain.xml b/Output/PartyModes/Challenge/Themes/Genius/Screens/PartyScreenChallengeMain.xml deleted file mode 100644 index c8752d0f..00000000 --- a/Output/PartyModes/Challenge/Themes/Genius/Screens/PartyScreenChallengeMain.xml +++ /dev/null @@ -1,557 +0,0 @@ - - - - PartyScreenChallengeMain - 1 - - - - Video - - - BG_Default - - - - - - - - - 0 - 40 - 1280 - 45 - 1 - - - - PopupBG - - - 0 - 0 - 1280 - 720 - -1 - - - - - - - 0 - 0 - 100 - 100 - 0 - - - - - - 640 - 50 - 0 - 27 - 0 - - - Center - Center - - Outline - TR_SCREENMAIN_TITLE - - - 40 - 135 - 0 - 27 - 0 - - - Right - Center - - Outline - TR_SCREENMAIN_TABLE_POS - - - 50 - 135 - 0 - 27 - 130 - - - Left - Center - - Outline - TR_SCREENMAIN_TABLE_PLAYERNAME - - - 260 - 135 - 0 - 27 - 0 - - - Right - Center - - Outline - TR_SCREENMAIN_TABLE_NUMPLAYED - - - 340 - 135 - 0 - 27 - 0 - - - Right - Center - - Outline - TR_SCREENMAIN_TABLE_WON - - - 490 - 135 - 0 - 27 - 0 - - - Right - Center - - Outline - TR_SCREENMAIN_TABLE_SINGPOINTS - - - 590 - 135 - 0 - 27 - 0 - - - Right - Center - - Outline - TR_SCREENMAIN_TABLE_GAMEPOINTS - - - 0 - 0 - 0 - 27 - 100 - - - Center - Center - - Outline - - - - 640 - 270 - -1.01 - 27 - 380 - - - Center - Center - - Outline - TR_SCREENMAIN_POPUP_REALLYEXIT - - - 660 - 135 - 0 - 27 - 0 - - - Right - Center - - Outline - - - - 0 - 0 - 0 - 27 - 0 - - - Center - Center - - Outline - - - - 0 - 0 - 0 - 27 - 0 - - - Center - Center - - Outline - - - - 640 - 520 - 0 - 44 - 0 - - - Center - Center - - Outline - TR_SCREENMAIN_FINISH - - - 640 - 575 - 0 - 31 - 770 - - - Center - Center - - Outline - - - - 640 - 515 - 0 - 27 - 0 - - - Center - Center - - Outline - TR_SCREENMAIN_NEXT_PLAYER - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Output/PartyModes/Challenge/Themes/Genius/Screens/PartyScreenChallengeNames.xml b/Output/PartyModes/Challenge/Themes/Genius/Screens/PartyScreenChallengeNames.xml deleted file mode 100644 index 2ce1d175..00000000 --- a/Output/PartyModes/Challenge/Themes/Genius/Screens/PartyScreenChallengeNames.xml +++ /dev/null @@ -1,382 +0,0 @@ - - - - PartyScreenChallengeNames - 1 - - - - Video - - - BG_Default - - - - - - - - - 0 - 40 - 1280 - 45 - 1 - - - - - - 640 - 50 - 0 - 27 - 0 - - - Center - Center - - Outline - TR_SCREENNAMES_TITLE - - - - - - - - - - - - - - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 40 - 100 - 1200 - 50 - 0 - - - 45 - 105 - 40 - 40 - 0 - - - 1195 - 105 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 200 - Outline - Bold - 2 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlidePlayer - SelectSlideArrowLeft - SelectSlideArrowRight - - 40 - 160 - 1200 - 150 - 0 - - - 45 - 210 - 40 - 40 - 0 - - - 1195 - 210 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 5 - 200 - Outline - Bold - 8 - - - - - - - 95 - 350 - 1200 - 393 - 0 - - CoverTile - - PlayerSelector - - 100 - 100 - 10 - 2 - 10 - 10 - - -20 - 17 - Outline - - - - - - - - - - - \ No newline at end of file diff --git a/Output/PartyModes/ChallengeMedley.xml b/Output/PartyModes/ChallengeMedley.xml deleted file mode 100644 index 8accbb0d..00000000 --- a/Output/PartyModes/ChallengeMedley.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - 2 - - TR_PARTYMODE_NAME - brunzel - TR_PARTYMODE_DESCRIPTION - ChallengeMedley - CPartyModeChallengeMedley - 0 - 2 - TR_PARTYMODE_AUDIENCE - - - CPartyScreenChallengeMedleyMain - CPartyScreenChallengeMedleyConfig - CPartyScreenChallengeMedleyNames - - diff --git a/Output/PartyModes/ChallengeMedley/Languages/Asturian.xml b/Output/PartyModes/ChallengeMedley/Languages/Asturian.xml deleted file mode 100644 index 9be65cc9..00000000 --- a/Output/PartyModes/ChallengeMedley/Languages/Asturian.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - Inglés - Mou desafíu Medley - Pa daquién tea interesáu nos duelos y Medleys. - Siguiente - Tornar - Entamar - Colar - Sí - Non - Ronda siguiente - Llista de reproducción - Estaya - Toles sones - Sones - Mou retu Medley: Configuración - Númberu de xugadores - Númberu de microfonos - Númberu de rondes - Mou retu Medley: Esbillar xugador - Mou retu Medley: Vista previa - Pos - Nome - Rondes - Victories - Puntos - Puntuación - ¿De xuru quies colar? - Xugador de la ronda siguiente: - ¡Toles rondes tan cantaes! Ya'l ganador ye... - diff --git a/Output/PartyModes/ChallengeMedley/Languages/Czech.xml b/Output/PartyModes/ChallengeMedley/Languages/Czech.xml deleted file mode 100644 index a6c0376b..00000000 --- a/Output/PartyModes/ChallengeMedley/Languages/Czech.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - Anglický - Soutěžní směskový režim - Hrajte soutěžní režim jen se směskami. - Pro všechny ty, kdož se zajímají o pěvecké souboje a mnoho kol složených ze směsek. - Další - Zpět - Spustit - Ukončit - Ano - Ne - Další kolo - Seznam skladeb - Skupina - Všechny písně - Písně - Soutěžní směskový režim: Nastavení - Počet hráčů - Počet mikrofonů - Počet kol - Počet písní na kolo - Zdroj písně - Soutěžní směskový režim: Výběr hráče - Vybrat náhodně - Soutěžní směskový režim: Přehled - Místo - Jméno - Kola - Vítězové - Body za zpívání - Výsledky - Opravdu chcete odejít? - Hráč dalšího kola: - Všechna kola byla odzpívána! A vítězem se stal... - diff --git a/Output/PartyModes/ChallengeMedley/Languages/Dutch.xml b/Output/PartyModes/ChallengeMedley/Languages/Dutch.xml deleted file mode 100644 index fac1ab63..00000000 --- a/Output/PartyModes/ChallengeMedley/Languages/Dutch.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - Engels - Uitdaging Medley - Speel een paar uitdagingsronden met alleen Medleys. - Voor iedereen geïnteresseerd in duelleren en Medleys. - Volgende - Vorige - Start - Afsluiten - Ja - Nee - Volgende Ronde - Afspeellijst - Categorie - Alle liedjes - Liedjes - Uitdaging Medley: Configuratie - Aantal spelers - Aantal microfoons - Aantal rondes - Aantal liedjes per ronde - Liedjesbron - Uitdaging Medley: Kies speler - Selecteer willekeurig - Uitdaging Medley: Overzicht - # - Naam - Rondes - Overwinningen - Zingpunten - Score - Wil je echt afsluiten? - Speler van volgende ronde: - Alle rondes zijn gezonden! De winnaar is... - diff --git a/Output/PartyModes/ChallengeMedley/Languages/English.xml b/Output/PartyModes/ChallengeMedley/Languages/English.xml deleted file mode 100644 index 51c783a4..00000000 --- a/Output/PartyModes/ChallengeMedley/Languages/English.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - English - Challenge Medley Mode - Play some challenge rounds by using Medleys only. - For all who are interested in duel fights and Medleys. - Next - Back - Start - Exit - Yes - No - Next Round - Playlist - Category - All songs - Songs - Challenge Medley Mode: Configuration - Number of players - Number of mics - Number of rounds - Number of songs per round - Song source - Challenge Medley Mode: Choose Player - Select random - Challenge Medley Mode: Overview - Pos - Name - Rounds - Wins - Sing Points - Score - Do you really want to exit? - Player of next round: - All rounds were sung! And the winner is... - diff --git a/Output/PartyModes/ChallengeMedley/Languages/French.xml b/Output/PartyModes/ChallengeMedley/Languages/French.xml deleted file mode 100644 index 1337996e..00000000 --- a/Output/PartyModes/ChallengeMedley/Languages/French.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - Français - Mode Challenge Medley - Jouer des tours en mode Challenge seulement en utilisant des Medleys. - Pour tous ceux qui sont intéressé par des combats de micro et les medleys. - Suivant - Retour - Démarrer - Quitter - Oui - Non - Tour suivant - Playlist - Catégorie - Toutes les chansons - Chansons - Mode Challenge Medley: Configuration - Nombre de joueurs - Nombre de micros - Nombre de tours - Nombre de chansons par tour - Source des chansons - Mode Challenge Medley: Choix des joueurs - Sélectionner au hasard - Mode Challenge Medley: Résumé - Pos - Nom - Tours - Victoires - Points de chant - Score - Voulez-vous vraiment quitter? - Joueurs du prochain tour: - Tous les tours on été chantés! Et le vainqueur est... - diff --git a/Output/PartyModes/ChallengeMedley/Languages/German.xml b/Output/PartyModes/ChallengeMedley/Languages/German.xml deleted file mode 100644 index 7c81ebee..00000000 --- a/Output/PartyModes/ChallengeMedley/Languages/German.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - Deutsch - Challenge Medley Modus - Spiele einen Wettkampfmodus nur mit Medleys - Für alle, die Spaß am Wettkampf und vielen Medleyrunden haben. - Weiter - Zurück - Start - Exit - Ja - Nein - Nächste Runde - Playlist - Kategorie - Alle Songs - Songs - Challenge Medley Modus: Einstellungen - Anzahl der Spieler - Anzahl der Mikrofone - Anzahl der Runden - Anzahl der Songs pro Runde - Song-Quelle - Challenge Medley Modus: Spielerwahl - Zufällig auswählen - Challenge Medley Modus: Übersicht - Pos - Name - Runden - Siege - Sing-Punkte - Punkte - Challenge Medley Modus wirklich beenden? - Spieler der nächsten Runde: - Alle Runden wurden gesungen! Und der Gewinner ist... - diff --git a/Output/PartyModes/ChallengeMedley/Languages/Hungarian.xml b/Output/PartyModes/ChallengeMedley/Languages/Hungarian.xml deleted file mode 100644 index 953b8790..00000000 --- a/Output/PartyModes/ChallengeMedley/Languages/Hungarian.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - Magyar - Bajnokság Egyveleg Mód - Azoknak akik egymás ellen szeretnének játszani és csak dalrészleteket énekelni. - Következő - Vissza - Kezdés - Kilépés - Igen - Nem - Következő Kör - Dal Lista - Kategória - Összes Dal - Dalok - Bajnokság Egyveleg Mód: Beállítások - Játékosok Száma - Mikrofonok Száma - Körök Száma - Dal-forrás - Bajnokság Egyveleg Mód: Válassz Játékost - Bajnokság Egyveleg Mód: Áttekintés - Poz - Név - Körök - Győzelmek - Énekpontok - Pontszám - Biztos hogy ki akarsz lépni? - Következik: - Véget ért a verseny, a győztes... - diff --git a/Output/PartyModes/ChallengeMedley/Languages/Italian.xml b/Output/PartyModes/ChallengeMedley/Languages/Italian.xml deleted file mode 100644 index 1c3aad44..00000000 --- a/Output/PartyModes/ChallengeMedley/Languages/Italian.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - Italiano - Sfida in Modalità Medley - Per tutti quelli interessati a scontrarsi con duelli di Medley. - Prossimo - Indietro - Inizia - Esci - Si - No - Prossimo Turno - Playlist - Categoria - Tutte le canzoni - Canzoni - Sfida in Modalità Medley: Configurazione - Numero di giocatori - Numero di microfoni - Numero di Turni - Sorgente della Canzone - Sfida in Modalità Medley: Scegli il Giocatore - Selezione casuale - Sfida in Modalità Medley: Panoramica - Pos - Nome - Turni - Vittorie - Punti Canto - Punteggio - Vuoi davvero uscire? - Giocatore del prossimo turno: - Tutti i turni di canto completati! E il vincitore è... - diff --git a/Output/PartyModes/ChallengeMedley/Languages/Portuguese.xml b/Output/PartyModes/ChallengeMedley/Languages/Portuguese.xml deleted file mode 100644 index 31a17564..00000000 --- a/Output/PartyModes/ChallengeMedley/Languages/Portuguese.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - Inglês - Modo Desafio Miscelânea - Jogar algumas rondas desafio utilizando apenas Miscelâneas - Para os interessados em duelos e miscelâneas - Seguinte - Voltar - Iniciar - Sair - Sim - Não - Ronda Seguinte - Lista de Reprodução - Categoria - Todas as Músicas - Músicas - Modo Desafio de Miscelâneas: Configuração - Número de Jogadores - Número de microfones - Número de rondas - Número de músicas por ronda - Origem da Música - Modo Desafio de Miscelâneas: Escolher Jogador - Escolha Aleatória - Modo Desafio de Miscelâneas: Resumo - Posição - Nome - Rondas - Vitórias - Pontos de Canto - Pontuação - Deseja mesmo sair? - Jogador da próxima ronda: - Todas as rondas cantadas! E o vencedor é... - diff --git a/Output/PartyModes/ChallengeMedley/Languages/Spanish.xml b/Output/PartyModes/ChallengeMedley/Languages/Spanish.xml deleted file mode 100644 index aa15b634..00000000 --- a/Output/PartyModes/ChallengeMedley/Languages/Spanish.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - Español - Modo Reto Popurrí - Jugar unas cuantas rondas de sólo Popurrí. - Para quienes estén interesados en dos cosas: duelos y Popurrí - Siguiente - Volver - Comenzar - Salir - Sí - No - Siguiente Ronda - Lista de reproducción - Categoría - Todas las canciones - Canciones - Modo Reto Popurrí: Configuración - Número de jugadores - Número de micrófonos - Número de rondas - Número de canciones por ronda - Origen de las Canciones - Modo Reto Popurrí: Elegir Jugador - Seleccionar aleatoriamente - Modo Reto Popurrí: Resumen - Posición - Nombre - Rondas - Victorias - Puntos de Canto - Puntuación - ¿De verdad quiere salir? - Jugador de la siguiente ronda: - ¡Todas las rondas fueron cantadas! Y el ganador es... - diff --git a/Output/PartyModes/ChallengeMedley/Languages/Swedish.xml b/Output/PartyModes/ChallengeMedley/Languages/Swedish.xml deleted file mode 100644 index c447ee66..00000000 --- a/Output/PartyModes/ChallengeMedley/Languages/Swedish.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - Svenska - Medleyutmanarläge - Spela några utmanaromgångar med endast medleys. - För alla som är intresserade av dueller och medleys. - Nästa - Tillbaka - Starta - Avsluta - Ja - Nej - Nästa omgång - Spellista - Kategori - Alla låtar - Låtar - Medleyutmanarläge: Konfiguration - Antal spelare - Antal mikrofoner - Antal omgångar - Antal låtar per omgång - Låtkälla - Medleyutmanarläge: Välj Spelare - Välj slumpmässiga - Medleyutmanarläge: Översikt - Pos - Namn - Omgångar - Vunna - Sångpoäng - Poäng - Vill du verkligen avsluta? - Spelare i nästa omgång: - Alla omgångar sjungna! Och vinnaren är... - diff --git a/Output/PartyModes/ChallengeMedley/Languages/Turkish.xml b/Output/PartyModes/ChallengeMedley/Languages/Turkish.xml deleted file mode 100644 index f28907f3..00000000 --- a/Output/PartyModes/ChallengeMedley/Languages/Turkish.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - Türkçe - Potpuri Yarış Modu - Düel yarışmaları ve Potpuri ile ilgilenen herkes için. - Sonraki - Önceki - Başla - Çık - Evet - Hayır - Sonraki Tur - Çalma Listesi - Kategori - Tüm Şarkılar - Şarkılar - Potpuri Yarış Modu: Yapılandırma - Oyuncu sayısı - Mikrofon sayısı - Tur sayısı - Şarkı Kaynağı - Potpuri Yarışma Modu: Oyuncu Seçimi - Potpuri Yarışma Modu: Genel Bakış - Pos - İsim - Tur - Kazanma - Şarkı Söyleme Puanı - Skor - Gerçekten çıkmak istiyor musunuz? - Sonraki tur oyuncusu: - Tüm turlar tamamlandı! Kazanan... - diff --git a/Output/PartyModes/ChallengeMedley/Themes/Default.xml b/Output/PartyModes/ChallengeMedley/Themes/Default.xml deleted file mode 100644 index 10e1c461..00000000 --- a/Output/PartyModes/ChallengeMedley/Themes/Default.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - 6 - - Default - brunzel - 0 - 1 - - \ No newline at end of file diff --git a/Output/PartyModes/ChallengeMedley/Themes/Default/Default.xml b/Output/PartyModes/ChallengeMedley/Themes/Default/Default.xml deleted file mode 100644 index f4299579..00000000 --- a/Output/PartyModes/ChallengeMedley/Themes/Default/Default.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - 4 - - Default - brunzel - 0 - 1 - - - - - - - - diff --git a/Output/PartyModes/ChallengeMedley/Themes/Default/Screens/PartyScreenChallengeMedleyConfig.xml b/Output/PartyModes/ChallengeMedley/Themes/Default/Screens/PartyScreenChallengeMedleyConfig.xml deleted file mode 100644 index 021cff22..00000000 --- a/Output/PartyModes/ChallengeMedley/Themes/Default/Screens/PartyScreenChallengeMedleyConfig.xml +++ /dev/null @@ -1,491 +0,0 @@ - - - - PartyScreenChallengeMedleyConfig - 2 - - - - Video - - - BG_Default - - - - - - Menu - - - 40 - 40 - 1200 - 50 - 0 - - - - - - 640 - 48 - 0 - 27 - 0 - - - Center - Center - - Outline - TR_SCREENCONFIG_TITLE - - - 75 - 105 - 0 - 27 - 0 - - - Left - Center - - Outline - TR_SCREENCONFIG_NUMPLAYERS - - - 75 - 165 - 0 - 27 - 0 - - - Left - Center - - Outline - TR_SCREENCONFIG_NUMMICS - - - 75 - 225 - 0 - 27 - 0 - - - Left - Center - - Outline - TR_SCREENCONFIG_NUMROUNDS - - - 75 - 285 - 0 - 27 - 0 - - - Left - Center - - Outline - TR_SCREENCONFIG_NUMSONGS - - - 75 - 345 - 0 - 27 - 0 - - - Left - Center - - Outline - TR_SCREENCONFIG_SONGSOURCE - - - - - - - - - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 500 - 100 - 700 - 50 - 0 - - - 505 - 105 - 40 - 40 - 0 - - - 1170 - 105 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 205.33 - Outline - Bold - 9 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 500 - 160 - 700 - 50 - 0 - - - 505 - 165 - 40 - 40 - 0 - - - 1170 - 165 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 205.33 - Outline - Bold - 2 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 500 - 220 - 700 - 50 - 0 - - - 505 - 225 - 40 - 40 - 0 - - - 1170 - 225 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 205.33 - Outline - Bold - 10 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 500 - 280 - 700 - 50 - 0 - - - 505 - 285 - 40 - 40 - 0 - - - 1170 - 285 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 205.33 - Outline - Bold - 10 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 500 - 340 - 700 - 50 - 0 - - - 505 - 345 - 40 - 40 - 0 - - - 1170 - 345 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 205.33 - Outline - Bold - 3 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 500 - 400 - 700 - 50 - 0 - - - 505 - 405 - 40 - 40 - 0 - - - 1170 - 405 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 700 - Outline - Bold - 1 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 500 - 400 - 700 - 50 - 0 - - - 505 - 405 - 40 - 40 - 0 - - - 1170 - 405 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 700 - Outline - Bold - 1 - - - - - - - - - diff --git a/Output/PartyModes/ChallengeMedley/Themes/Default/Screens/PartyScreenChallengeMedleyMain.xml b/Output/PartyModes/ChallengeMedley/Themes/Default/Screens/PartyScreenChallengeMedleyMain.xml deleted file mode 100644 index c1279d0d..00000000 --- a/Output/PartyModes/ChallengeMedley/Themes/Default/Screens/PartyScreenChallengeMedleyMain.xml +++ /dev/null @@ -1,557 +0,0 @@ - - - - PartyScreenChallengeMedleyMain - 1 - - - - Video - - - BG_Default - - - - - - Menu - - - 40 - 40 - 1200 - 50 - 0 - - - - PopupBG - - - 0 - 0 - 1280 - 720 - -1 - - - - - - - 0 - 0 - 100 - 100 - 0 - - - - - - 640 - 48 - 0 - 27 - 0 - - - Center - Center - - Outline - TR_SCREENMAIN_TITLE - - - 40 - 102 - 0 - 27 - 0 - - - Right - Center - - Outline - TR_SCREENMAIN_TABLE_POS - - - 50 - 102 - 0 - 27 - 130 - - - Left - Center - - Outline - TR_SCREENMAIN_TABLE_PLAYERNAME - - - 260 - 102 - 0 - 27 - 0 - - - Right - Center - - Outline - TR_SCREENMAIN_TABLE_NUMPLAYED - - - 340 - 102 - 0 - 27 - 0 - - - Right - Center - - Outline - TR_SCREENMAIN_TABLE_WON - - - 490 - 102 - 0 - 27 - 0 - - - Right - Center - - Outline - TR_SCREENMAIN_TABLE_SINGPOINTS - - - 590 - 102 - 0 - 27 - 0 - - - Right - Center - - Outline - TR_SCREENMAIN_TABLE_GAMEPOINTS - - - 0 - 0 - 0 - 27 - 100 - - - Center - Center - - Outline - - - - 640 - 265 - -1.01 - 27 - 380 - - - Center - Center - - Outline - TR_SCREENMAIN_POPUP_REALLYEXIT - - - 660 - 102 - 0 - 27 - 0 - - - Right - Center - - Outline - - - - 0 - 0 - 0 - 27 - 0 - - - Center - Center - - Outline - - - - 0 - 0 - 0 - 27 - 0 - - - Center - Center - - Outline - - - - 640 - 520 - 0 - 44 - 0 - - - Center - Center - - Outline - TR_SCREENMAIN_FINISH - - - 640 - 575 - 0 - 31 - 770 - - - Center - Center - - Outline - - - - 640 - 515 - 0 - 27 - 0 - - - Center - Center - - Outline - TR_SCREENMAIN_NEXT_PLAYER - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Output/PartyModes/ChallengeMedley/Themes/Default/Screens/PartyScreenChallengeMedleyNames.xml b/Output/PartyModes/ChallengeMedley/Themes/Default/Screens/PartyScreenChallengeMedleyNames.xml deleted file mode 100644 index 2292a076..00000000 --- a/Output/PartyModes/ChallengeMedley/Themes/Default/Screens/PartyScreenChallengeMedleyNames.xml +++ /dev/null @@ -1,387 +0,0 @@ - - - - PartyScreenChallengeMedleyNames - 1 - - - - Video - - - BG_Default - - - - - - Menu - - - 40 - 40 - 1200 - 50 - 0 - - - - - - 640 - 48 - 0 - 27 - 0 - - - Center - Center - - Outline - TR_SCREENNAMES_TITLE - - - - - - - - - - - - - - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 40 - 100 - 1200 - 50 - 0 - - - 45 - 105 - 40 - 40 - 0 - - - 1170 - 105 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 205.33 - Outline - Bold - 2 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlidePlayer - SelectSlideArrowLeft - SelectSlideArrowRight - - 40 - 160 - 1200 - 150 - 0 - - - 45 - 210 - 40 - 40 - 0 - - - 1170 - 210 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 5 - 205.33 - Outline - Bold - 8 - - - - - - - 42 - 327 - 1200 - 393 - 0 - - CoverTile - - 1 - 1 - 1 - 0.2 - - PlayerSelector - - 100 - 100 - 10 - 2 - 20.71 - 30 - - 2 - 17 - Outline - - - - - - - - - - - \ No newline at end of file diff --git a/Output/PartyModes/ChallengeMedley/Themes/Genius.xml b/Output/PartyModes/ChallengeMedley/Themes/Genius.xml deleted file mode 100644 index 7a551898..00000000 --- a/Output/PartyModes/ChallengeMedley/Themes/Genius.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - 6 - - Genius - Jiiniasu - 0 - 1 - - \ No newline at end of file diff --git a/Output/PartyModes/ChallengeMedley/Themes/Genius/Genius.xml b/Output/PartyModes/ChallengeMedley/Themes/Genius/Genius.xml deleted file mode 100644 index 2db98024..00000000 --- a/Output/PartyModes/ChallengeMedley/Themes/Genius/Genius.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - 4 - - Genius - Jiiniasu - 0 - 1 - - - - - \ No newline at end of file diff --git a/Output/PartyModes/ChallengeMedley/Themes/Genius/Screens/PartyScreenChallengeMedleyConfig.xml b/Output/PartyModes/ChallengeMedley/Themes/Genius/Screens/PartyScreenChallengeMedleyConfig.xml deleted file mode 100644 index 1ddc136c..00000000 --- a/Output/PartyModes/ChallengeMedley/Themes/Genius/Screens/PartyScreenChallengeMedleyConfig.xml +++ /dev/null @@ -1,491 +0,0 @@ - - - - PartyScreenChallengeMedleyConfig - 2 - - - - Video - - - BG_Default - - - - - - - - - 0 - 40 - 1280 - 45 - 1 - - - - - - 640 - 50 - 0 - 27 - 0 - - - Center - Center - - Outline - TR_SCREENCONFIG_TITLE - - - 75 - 105 - 0 - 27 - 0 - - - Left - Center - - Outline - TR_SCREENCONFIG_NUMPLAYERS - - - 75 - 165 - 0 - 27 - 0 - - - Left - Center - - Outline - TR_SCREENCONFIG_NUMMICS - - - 75 - 225 - 0 - 27 - 0 - - - Left - Center - - Outline - TR_SCREENCONFIG_NUMROUNDS - - - 75 - 285 - 0 - 27 - 0 - - - Left - Center - - Outline - TR_SCREENCONFIG_NUMSONGS - - - 75 - 345 - 0 - 27 - 0 - - - Left - Center - - Outline - TR_SCREENCONFIG_SONGSOURCE - - - - - - - - - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 500 - 100 - 700 - 50 - 0 - - - 505 - 105 - 40 - 40 - 0 - - - 1155 - 105 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 200 - Outline - Bold - 9 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 500 - 160 - 700 - 50 - 0 - - - 505 - 165 - 40 - 40 - 0 - - - 1155 - 165 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 200 - Outline - Bold - 2 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 500 - 220 - 700 - 50 - 0 - - - 505 - 225 - 40 - 40 - 0 - - - 1155 - 225 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 200 - Outline - Bold - 10 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 500 - 280 - 700 - 50 - 0 - - - 505 - 285 - 40 - 40 - 0 - - - 1155 - 285 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 200 - Outline - Bold - 10 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 500 - 340 - 700 - 50 - 0 - - - 505 - 345 - 40 - 40 - 0 - - - 1155 - 345 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 200 - Outline - Bold - 3 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 500 - 400 - 700 - 50 - 0 - - - 505 - 405 - 40 - 40 - 0 - - - 1155 - 405 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 700 - Outline - Bold - 1 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 500 - 400 - 700 - 50 - 0 - - - 505 - 405 - 40 - 40 - 0 - - - 1155 - 405 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 700 - Outline - Bold - 1 - - - - - - - - - \ No newline at end of file diff --git a/Output/PartyModes/ChallengeMedley/Themes/Genius/Screens/PartyScreenChallengeMedleyMain.xml b/Output/PartyModes/ChallengeMedley/Themes/Genius/Screens/PartyScreenChallengeMedleyMain.xml deleted file mode 100644 index 56371aea..00000000 --- a/Output/PartyModes/ChallengeMedley/Themes/Genius/Screens/PartyScreenChallengeMedleyMain.xml +++ /dev/null @@ -1,557 +0,0 @@ - - - - PartyScreenChallengeMedleyMain - 1 - - - - Video - - - BG_Default - - - - - - - - - 0 - 40 - 1280 - 45 - 1 - - - - PopupBG - - - 0 - 0 - 1280 - 720 - -1 - - - - - - - 0 - 0 - 100 - 100 - 0 - - - - - - 640 - 50 - 0 - 27 - 0 - - - Center - Center - - Outline - TR_SCREENMAIN_TITLE - - - 40 - 135 - 0 - 27 - 0 - - - Right - Center - - Outline - TR_SCREENMAIN_TABLE_POS - - - 50 - 135 - 0 - 27 - 130 - - - Left - Center - - Outline - TR_SCREENMAIN_TABLE_PLAYERNAME - - - 260 - 135 - 0 - 27 - 0 - - - Right - Center - - Outline - TR_SCREENMAIN_TABLE_NUMPLAYED - - - 340 - 135 - 0 - 27 - 0 - - - Right - Center - - Outline - TR_SCREENMAIN_TABLE_WON - - - 490 - 135 - 0 - 27 - 0 - - - Right - Center - - Outline - TR_SCREENMAIN_TABLE_SINGPOINTS - - - 590 - 135 - 0 - 27 - 0 - - - Right - Center - - Outline - TR_SCREENMAIN_TABLE_GAMEPOINTS - - - 0 - 0 - 0 - 27 - 100 - - - Center - Center - - Outline - - - - 640 - 270 - -1.01 - 27 - 380 - - - Center - Center - - Outline - TR_SCREENMAIN_POPUP_REALLYEXIT - - - 660 - 135 - 0 - 27 - 0 - - - Right - Center - - Outline - - - - 0 - 0 - 0 - 27 - 0 - - - Center - Center - - Outline - - - - 0 - 0 - 0 - 27 - 0 - - - Center - Center - - Outline - - - - 640 - 520 - 0 - 44 - 0 - - - Center - Center - - Outline - TR_SCREENMAIN_FINISH - - - 640 - 575 - 0 - 31 - 770 - - - Center - Center - - Outline - - - - 640 - 515 - 0 - 27 - 0 - - - Center - Center - - Outline - TR_SCREENMAIN_NEXT_PLAYER - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Output/PartyModes/ChallengeMedley/Themes/Genius/Screens/PartyScreenChallengeMedleyNames.xml b/Output/PartyModes/ChallengeMedley/Themes/Genius/Screens/PartyScreenChallengeMedleyNames.xml deleted file mode 100644 index 0b00f1de..00000000 --- a/Output/PartyModes/ChallengeMedley/Themes/Genius/Screens/PartyScreenChallengeMedleyNames.xml +++ /dev/null @@ -1,382 +0,0 @@ - - - - PartyScreenChallengMedleyNames - 1 - - - - Video - - - BG_Default - - - - - - - - - 0 - 40 - 1280 - 45 - 1 - - - - - - 640 - 50 - 0 - 27 - 0 - - - Center - Center - - Outline - TR_SCREENNAMES_TITLE - - - - - - - - - - - - - - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 40 - 100 - 1200 - 50 - 0 - - - 45 - 105 - 40 - 40 - 0 - - - 1195 - 105 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 200 - Outline - Bold - 2 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlidePlayer - SelectSlideArrowLeft - SelectSlideArrowRight - - 40 - 160 - 1200 - 150 - 0 - - - 45 - 210 - 40 - 40 - 0 - - - 1195 - 210 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 5 - 200 - Outline - Bold - 8 - - - - - - - 95 - 350 - 1200 - 393 - 0 - - CoverTile - - PlayerSelector - - 100 - 100 - 10 - 2 - 10 - 10 - - -20 - 17 - Outline - - - - - - - - - - - \ No newline at end of file diff --git a/Output/PartyModes/TicTacToe.xml b/Output/PartyModes/TicTacToe.xml index 2f25da4e..000e7386 100644 --- a/Output/PartyModes/TicTacToe.xml +++ b/Output/PartyModes/TicTacToe.xml @@ -15,5 +15,6 @@ CPartyScreenTicTacToeMain CPartyScreenTicTacToeConfig CPartyScreenTicTacToeNames + CPartyScreenTicTacToeSongs diff --git a/Output/PartyModes/TicTacToe/Languages/English.xml b/Output/PartyModes/TicTacToe/Languages/English.xml index 9dda8f3c..24397b29 100644 --- a/Output/PartyModes/TicTacToe/Languages/English.xml +++ b/Output/PartyModes/TicTacToe/Languages/English.xml @@ -13,15 +13,11 @@ Start Songs Team - Playlist - Category - All songs Tic-Tac-Toe: Configuration Number of players in team 1 Number of players in team 2 Number of fields - Song-Source - Game-Mode + Refill jokers every round Tic-Tac-Toe: Choose Player Team 1 Team 2 diff --git a/Output/PartyModes/TicTacToe/Themes/Default/Default.xml b/Output/PartyModes/TicTacToe/Themes/Default/Default.xml index f4299579..52a8859e 100644 --- a/Output/PartyModes/TicTacToe/Themes/Default/Default.xml +++ b/Output/PartyModes/TicTacToe/Themes/Default/Default.xml @@ -3,14 +3,11 @@ 4 Default - brunzel + Jiiniasu 0 1 - - - - - - + + + diff --git a/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeConfig.xml b/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeConfig.xml index bf570d8d..a5ad9fa9 100644 --- a/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeConfig.xml +++ b/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeConfig.xml @@ -2,7 +2,7 @@ PartyScreenTicTacToeConfig - 1 + 2 @@ -14,26 +14,26 @@ - - Menu - + + + - 40 + 0 40 - 1200 - 50 - 0 + 1280 + 45 + 1 - + 640 - 48 + 50 0 27 0 - + Center Center @@ -41,13 +41,13 @@ Outline TR_SCREENCONFIG_TITLE - + 75 105 0 27 0 - + Left Center @@ -55,33 +55,19 @@ Outline TR_SCREENCONFIG_NUMFIELDS - + 75 165 0 27 0 - + Left Center Outline - TR_SCREENCONFIG_SONGSOURCE - - - 75 - 285 - 0 - 27 - 0 - - - Left - Center - - Outline - TR_SCREENCONFIG_GAMEMODE + TR_SCREENCONFIG_REFILLJOKERS @@ -99,7 +85,7 @@ 75 - 10 + 12 0 27 142 @@ -134,7 +120,7 @@ 75 - 10 + 12 0 27 142 @@ -181,7 +167,7 @@ 0 - 1170 + 1155 105 40 40 @@ -191,7 +177,7 @@ - + 27 50 @@ -201,7 +187,7 @@ Bold 3 - + SelectSlideArrowLeft SelectSlideArrowRight @@ -223,7 +209,7 @@ 0 - 1170 + 1155 165 40 40 @@ -233,7 +219,7 @@ - + 27 50 @@ -241,133 +227,7 @@ 205.33 Outline Bold - 3 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 500 - 220 - 700 - 50 - 0 - - - 505 - 225 - 40 - 40 - 0 - - - 1170 - 225 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 205.33 - Outline - Bold - 1 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 500 - 220 - 700 - 50 - 0 - - - 505 - 225 - 40 - 40 - 0 - - - 1170 - 225 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 205.33 - Outline - Bold - 1 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 500 - 280 - 700 - 50 - 0 - - - 505 - 285 - 40 - 40 - 0 - - - 1170 - 285 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 205.33 - Outline - Bold - 1 + 2 @@ -376,4 +236,4 @@ - \ No newline at end of file + diff --git a/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeMain.xml b/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeMain.xml index f4dd7cad..471a2294 100644 --- a/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeMain.xml +++ b/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeMain.xml @@ -14,15 +14,15 @@ - - Menu - + + + - 40 + 0 40 - 1200 - 50 - 0 + 1280 + 45 + 1 @@ -60,13 +60,13 @@ - + 640 - 48 + 50 0 27 0 - + Center Center @@ -76,11 +76,11 @@ 640 - 265 + 270 -2.01 27 380 - + Center Center @@ -94,7 +94,7 @@ 0 35 0 - + Center Center @@ -108,7 +108,7 @@ 0 35 0 - + Center Center @@ -188,7 +188,7 @@ 75 - 10 + 12 0 27 142 @@ -223,7 +223,7 @@ 75 - 10 + 12 0 27 142 @@ -258,7 +258,7 @@ 75 - 10 + 12 0 27 142 @@ -293,7 +293,7 @@ 75 - 10 + 12 0 27 142 @@ -328,7 +328,7 @@ 75 - 10 + 12 0 27 142 @@ -363,7 +363,7 @@ 75 - 10 + 12 0 27 142 @@ -494,4 +494,4 @@ - \ No newline at end of file + diff --git a/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeNames.xml b/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeNames.xml index 583ea0bc..1e27c09c 100644 --- a/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeNames.xml +++ b/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeNames.xml @@ -14,26 +14,26 @@ - - Menu - + + + - 40 + 0 40 - 1200 - 50 - 0 + 1280 + 45 + 1 - + 640 - 48 + 50 0 27 0 - + Center Center @@ -57,7 +57,7 @@ 75 - 10 + 12 0 27 142 @@ -92,7 +92,7 @@ 75 - 10 + 12 0 27 142 @@ -127,7 +127,7 @@ 75 - 10 + 12 0 27 142 @@ -206,7 +206,7 @@ Plus Plus - 1210 + 1180 210 40 40 @@ -233,7 +233,7 @@ Minus Minus - 1160 + 1130 210 40 40 @@ -270,7 +270,7 @@ 40 100 - 1100 + 1055 50 0 @@ -292,12 +292,12 @@ - + 27 50 0 - 205.33 + 200 Outline Bold 2 @@ -312,7 +312,7 @@ 40 160 - 1100 + 1055 150 0 @@ -334,12 +334,12 @@ - + 27 50 5 - 205.33 + 200 Outline Bold 8 @@ -349,29 +349,24 @@ - 42 - 327 + 95 + 350 1200 393 0 CoverTile - - 1 - 1 - 1 - 0.2 - + PlayerSelector 100 100 10 2 - 20.71 - 30 + 10 + 10 - 2 + -20 17 Outline diff --git a/Output/PartyModes/Challenge/Themes/Genius/Screens/PartyScreenChallengeConfig.xml b/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeSongs.xml similarity index 81% rename from Output/PartyModes/Challenge/Themes/Genius/Screens/PartyScreenChallengeConfig.xml rename to Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeSongs.xml index 97b70135..e79a08d7 100644 --- a/Output/PartyModes/Challenge/Themes/Genius/Screens/PartyScreenChallengeConfig.xml +++ b/Output/PartyModes/TicTacToe/Themes/Default/Screens/PartyScreenTicTacToeSongs.xml @@ -1,8 +1,8 @@ - PartyScreenChallengeConfig - 3 + PartyScreenTicTacToeSongs + 1 @@ -41,7 +41,7 @@ Outline TR_SCREENCONFIG_TITLE - + 75 105 0 @@ -53,11 +53,11 @@ Center Outline - TR_SCREENCONFIG_NUMPLAYERS + TR_SONGSOURCE - + 75 - 165 + 290 0 27 0 @@ -67,49 +67,7 @@ Center Outline - TR_SCREENCONFIG_NUMMICS - - - 75 - 225 - 0 - 27 - 0 - - - Left - Center - - Outline - TR_SCREENCONFIG_NUMROUNDS - - - 75 - 285 - 0 - 27 - 0 - - - Left - Center - - Outline - TR_SCREENCONFIG_NUMJOKERS - - - 75 - 345 - 0 - 27 - 0 - - - Left - Center - - Outline - TR_SCREENCONFIG_REFILLJOKERS + TR_GAMEMODE @@ -187,7 +145,7 @@ - + SelectSlideArrowLeft SelectSlideArrowRight @@ -224,12 +182,12 @@ 27 50 0 - 200 + 205.33 Outline Bold - 9 + 3 - + SelectSlideArrowLeft SelectSlideArrowRight @@ -266,12 +224,54 @@ 27 50 0 - 200 + 600 Outline Bold - 2 + 3 - + + + SelectSlideArrowLeft + SelectSlideArrowRight + SelectSlide + SelectSlideArrowLeft + SelectSlideArrowRight + + 500 + 160 + 700 + 50 + 0 + + + 505 + 165 + 40 + 40 + 0 + + + 1155 + 165 + 40 + 40 + 0 + + + + + + + + 27 + 50 + 0 + 600 + Outline + Bold + 3 + + SelectSlideArrowLeft SelectSlideArrowRight @@ -308,12 +308,12 @@ 27 50 0 - 200 + 600 Outline Bold - 10 + 1 - + SelectSlideArrowLeft SelectSlideArrowRight @@ -322,21 +322,21 @@ SelectSlideArrowRight 500 - 280 + 290 700 50 0 505 - 285 + 295 40 40 0 1155 - 285 + 295 40 40 0 @@ -350,53 +350,53 @@ 27 50 0 - 200 - Outline - Bold - 10 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 500 - 340 - 700 - 50 - 0 - - - 505 - 345 - 40 - 40 - 0 - - - 1155 - 345 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 200 + 205.33 Outline Bold 2 + + + SelectSlideArrowLeft + SelectSlideArrowRight + SelectSlide + SelectSlideArrowLeft + SelectSlideArrowRight + + 500 + 360 + 700 + 50 + 0 + + + 505 + 365 + 40 + 40 + 0 + + + 1155 + 365 + 40 + 40 + 0 + + + + + + + + 27 + 50 + 0 + 205.33 + Outline + Bold + 5 + @@ -404,4 +404,4 @@ - \ No newline at end of file + diff --git a/Output/PartyModes/TicTacToe/Themes/Genius.xml b/Output/PartyModes/TicTacToe/Themes/Genius.xml deleted file mode 100644 index 7a551898..00000000 --- a/Output/PartyModes/TicTacToe/Themes/Genius.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - 6 - - Genius - Jiiniasu - 0 - 1 - - \ No newline at end of file diff --git a/Output/PartyModes/TicTacToe/Themes/Genius/Genius.xml b/Output/PartyModes/TicTacToe/Themes/Genius/Genius.xml deleted file mode 100644 index e556735e..00000000 --- a/Output/PartyModes/TicTacToe/Themes/Genius/Genius.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - 4 - - Genius - Jiiniasu - 0 - 1 - - - - - diff --git a/Output/PartyModes/TicTacToe/Themes/Genius/Screens/PartyScreenTicTacToeMain.xml b/Output/PartyModes/TicTacToe/Themes/Genius/Screens/PartyScreenTicTacToeMain.xml deleted file mode 100644 index 471a2294..00000000 --- a/Output/PartyModes/TicTacToe/Themes/Genius/Screens/PartyScreenTicTacToeMain.xml +++ /dev/null @@ -1,497 +0,0 @@ - - - - PartyScreenTicTacToeMain - 1 - - - - Video - - - BG_Default - - - - - - - - - 0 - 40 - 1280 - 45 - 1 - - - - PopupBG - - - 0 - 0 - 1280 - 720 - -2 - - - - PopupBG - - - 10 - 200 - 100 - 100 - -1 - - - - PopupBG - - - 1170 - 200 - 100 - 100 - -1 - - - - - - 640 - 50 - 0 - 27 - 0 - - - Center - Center - - Outline - TR_SCREENMAIN_TITLE - - - 640 - 270 - -2.01 - 27 - 380 - - - Center - Center - - Outline - TR_SCREENMAIN_POPUP_REALLYEXIT - - - 640 - 90 - 0 - 35 - 0 - - - Center - Center - - Outline - - - - 640 - 90 - 0 - 35 - 0 - - - Center - Center - - Outline - - - - 160 - 150 - 0 - 35 - 0 - - - Center - Center - - Outline - TR_SCREENMAIN_NEXT_PLAYER - - - 1120 - 150 - 0 - 35 - 0 - - - Center - Center - - Outline - TR_SCREENMAIN_NEXT_PLAYER - - - 120 - 230 - 0 - 35 - 0 - - - Left - Center - - Outline - - - - 1160 - 230 - 0 - 40 - 0 - - - Right - Center - - Outline - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Output/PartyModes/TicTacToe/Themes/Genius/Screens/PartyScreenTicTacToeNames.xml b/Output/PartyModes/TicTacToe/Themes/Genius/Screens/PartyScreenTicTacToeNames.xml deleted file mode 100644 index 1e27c09c..00000000 --- a/Output/PartyModes/TicTacToe/Themes/Genius/Screens/PartyScreenTicTacToeNames.xml +++ /dev/null @@ -1,382 +0,0 @@ - - - - PartyScreenTicTacToeNames - 1 - - - - Video - - - BG_Default - - - - - - - - - 0 - 40 - 1280 - 45 - 1 - - - - - - 640 - 50 - 0 - 27 - 0 - - - Center - Center - - Outline - TR_SCREENNAMES_TITLE - - - - - - - - - - - - - - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlide - SelectSlideArrowLeft - SelectSlideArrowRight - - 40 - 100 - 1055 - 50 - 0 - - - 45 - 105 - 40 - 40 - 0 - - - 1050 - 105 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 0 - 200 - Outline - Bold - 2 - - - - SelectSlideArrowLeft - SelectSlideArrowRight - SelectSlidePlayer - SelectSlideArrowLeft - SelectSlideArrowRight - - 40 - 160 - 1055 - 150 - 0 - - - 45 - 210 - 40 - 40 - 0 - - - 1050 - 210 - 40 - 40 - 0 - - - - - - - - 27 - 50 - 5 - 200 - Outline - Bold - 8 - - - - - - - 95 - 350 - 1200 - 393 - 0 - - CoverTile - - PlayerSelector - - 100 - 100 - 10 - 2 - 10 - 10 - - -20 - 17 - Outline - - - - - - - - - - - \ No newline at end of file diff --git a/Output/Readme.txt b/Output/Readme.txt index 2cdffb4b..13d36037 100644 --- a/Output/Readme.txt +++ b/Output/Readme.txt @@ -105,9 +105,6 @@ or from the console: load playlist from this path. Example: Vocaluxe.exe -PlaylistFolder D:\MyPlaylists - --OldTheme yes : Try to load theme that is created for vocaluxe 0.2 or older (or some pre-release version of 0.3). Enter theme editor and save your theme to convert every file to new syntax. This will be removed in a future version. - Complete example: Vocaluxe.exe -ConfigFile MyConfig.xml -ScoreFile C:\Vocaluxe\Highscores\MyHighscoreDB.sqlite -SongFolder D:\MySongCollection -PlaylistFolder D:\MyPlaylists diff --git a/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs b/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs index e336d4de..b37636e3 100644 --- a/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs +++ b/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs @@ -17,8 +17,11 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; using System.Runtime.InteropServices; using VocaluxeLib.Menu; +using VocaluxeLib.Songs; [assembly: ComVisible(false)] @@ -103,9 +106,11 @@ namespace VocaluxeLib.PartyModes.Challenge private enum EStage { Config, + Songs, Names, Main, - Singing + Singing, + MedleySinging } public struct SData @@ -118,6 +123,14 @@ namespace VocaluxeLib.PartyModes.Challenge public int[] Jokers; public List ProfileIDs; + public ESongSource SongSource; + public ESongSorting Sorting; + public int CategoryIndex; + public int PlaylistID; + + public EGameMode GameMode; + public int NumMedleySongs; + public CChallengeRounds Rounds; public List ResultTable; public int[,] Results; @@ -125,6 +138,7 @@ namespace VocaluxeLib.PartyModes.Challenge public int CurrentRoundNr; public int[] CatSongIndices; + public List Songs; } private struct SStats @@ -149,8 +163,27 @@ namespace VocaluxeLib.PartyModes.Challenge _ScreenSongOptions.Sorting.SearchString = String.Empty; _ScreenSongOptions.Sorting.SearchActive = false; _ScreenSongOptions.Sorting.DuetOptions = EDuetOptions.NoDuets; + _ScreenSongOptions.Sorting.FilterPlaylistID = -1; - GameData = new SData {NumPlayer = 4, NumPlayerAtOnce = 2, NumRounds = 12, NumJokers = 5, RefillJokers = true, CurrentRoundNr = 1, ProfileIDs = new List(), CatSongIndices = null, Results = null}; + GameData = new SData + { + NumPlayer = 4, + NumPlayerAtOnce = 2, + NumRounds = 12, + NumJokers = 5, + RefillJokers = true, + CurrentRoundNr = 1, + ProfileIDs = new List(), + Sorting = CBase.Config.GetSongSorting(), + SongSource = ESongSource.TR_SONGSOURCE_ALLSONGS, + PlaylistID = 0, + CategoryIndex = 0, + GameMode = EGameMode.TR_GAMEMODE_NORMAL, + NumMedleySongs = 5, + CatSongIndices = null, + Results = null, + Songs = new List() + }; } public override void SetDefaults() @@ -193,12 +226,16 @@ namespace VocaluxeLib.PartyModes.Challenge { case EStage.Config: return _Screens["CPartyScreenChallengeConfig"]; + case EStage.Songs: + return _Screens["CPartyScreenChallengeSongs"]; case EStage.Names: return _Screens["CPartyScreenChallengeNames"]; case EStage.Main: return _Screens["CPartyScreenChallengeMain"]; case EStage.Singing: return CBase.Graphics.GetScreen(EScreen.Song); + case EStage.MedleySinging: + return CBase.Graphics.GetScreen(EScreen.Sing); default: throw new ArgumentException("Invalid stage: " + _Stage); } @@ -214,6 +251,9 @@ namespace VocaluxeLib.PartyModes.Challenge switch (_Stage) { case EStage.Config: + _Stage = EStage.Songs; + break; + case EStage.Songs: _Stage = EStage.Names; break; case EStage.Names: @@ -225,9 +265,13 @@ namespace VocaluxeLib.PartyModes.Challenge GameData.Jokers = null; break; case EStage.Main: - _Stage = EStage.Singing; + if (GameData.GameMode == EGameMode.TR_GAMEMODE_MEDLEY) + _Stage = EStage.MedleySinging; + else + _Stage = EStage.Singing; _StartNextRound(); break; + case EStage.MedleySinging: case EStage.Singing: _Stage = EStage.Main; _UpdateScores(); @@ -245,9 +289,12 @@ namespace VocaluxeLib.PartyModes.Challenge case EStage.Config: CBase.Graphics.FadeTo(EScreen.Party); return; - case EStage.Names: + case EStage.Songs: _Stage = EStage.Config; break; + case EStage.Names: + _Stage = EStage.Songs; + break; case EStage.Main: _Stage = EStage.Names; break; @@ -264,8 +311,38 @@ namespace VocaluxeLib.PartyModes.Challenge public override SScreenSongOptions GetScreenSongOptions() { - _ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting(); - _ScreenSongOptions.Sorting.Tabs = CBase.Config.GetTabs(); + switch(GameData.SongSource) + { + case ESongSource.TR_SONGSOURCE_ALLSONGS: + _ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting(); + _ScreenSongOptions.Sorting.Tabs = CBase.Config.GetTabs(); + _ScreenSongOptions.Sorting.FilterPlaylistID = -1; + + _ScreenSongOptions.Selection.CategoryChangeAllowed = true; + break; + + case ESongSource.TR_SONGSOURCE_CATEGORY: + _ScreenSongOptions.Sorting.SongSorting = GameData.Sorting; + _ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_ON; + _ScreenSongOptions.Sorting.FilterPlaylistID = -1; + + if (GameData.CatSongIndices == null) + _CreateCatSongIndices(); + + _ScreenSongOptions.Selection.SongIndex = GameData.CatSongIndices[GameData.CategoryIndex]; + + _ScreenSongOptions.Selection.CategoryChangeAllowed = false; + break; + + case ESongSource.TR_SONGSOURCE_PLAYLIST: + _ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting(); + _ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_OFF; + _ScreenSongOptions.Sorting.FilterPlaylistID = GameData.PlaylistID; + + _ScreenSongOptions.Selection.CategoryChangeAllowed = false; + break; + } + _ScreenSongOptions.Sorting.IgnoreArticles = CBase.Config.GetIgnoreArticles(); return _ScreenSongOptions; @@ -342,30 +419,7 @@ namespace VocaluxeLib.PartyModes.Challenge public override void SongSelected(int songID) { - const EGameMode gm = EGameMode.TR_GAMEMODE_NORMAL; - - CBase.Game.Reset(); - CBase.Game.ClearSongs(); - CBase.Game.AddSong(songID, gm); - CBase.Game.SetNumPlayer(GameData.NumPlayerAtOnce); - - SPlayer[] players = CBase.Game.GetPlayers(); - if (players == null) - return; - - if (players.Length < GameData.NumPlayerAtOnce) - return; - - CRound c = GameData.Rounds[GameData.CurrentRoundNr - 1]; - - for (int i = 0; i < GameData.NumPlayerAtOnce; i++) - { - //try to fill with the right data - if (c != null) - players[i].ProfileID = GameData.ProfileIDs[c.Players[i]]; - else - players[i].ProfileID = -1; - } + _PrepareGame(new int[] { songID }); CBase.Graphics.FadeTo(EScreen.Sing); } @@ -379,11 +433,63 @@ namespace VocaluxeLib.PartyModes.Challenge private void _StartNextRound() { - _ScreenSongOptions.Selection.RandomOnly = _ScreenSongOptions.Sorting.Tabs != EOffOn.TR_CONFIG_ON; - _ScreenSongOptions.Selection.CategoryChangeAllowed = _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_ON; - _SetNumJokers(); - _SetTeamNames(); - GameData.CatSongIndices = null; + if (GameData.GameMode == EGameMode.TR_GAMEMODE_MEDLEY) + { + int[] songIDs = new int[GameData.NumMedleySongs]; + for (int i = 0; i < GameData.NumMedleySongs; i++) + { + if (GameData.Songs.Count == 0) + _UpdateSongList(); + + songIDs[i] = GameData.Songs[0]; + GameData.Songs.RemoveAt(0); + } + + _PrepareGame(songIDs); + } + else + { + _ScreenSongOptions.Selection.RandomOnly = _ScreenSongOptions.Sorting.Tabs != EOffOn.TR_CONFIG_ON; + _ScreenSongOptions.Selection.CategoryChangeAllowed = false; + _SetNumJokers(); + _SetTeamNames(); + GameData.CatSongIndices = null; + } + } + + private bool _PrepareGame(int[] songIDs) + { + CBase.Game.Reset(); + CBase.Game.ClearSongs(); + + #region PlayerNames + CBase.Game.SetNumPlayer(GameData.NumPlayerAtOnce); + SPlayer[] players = CBase.Game.GetPlayers(); + if (players == null) + return false; + + if (players.Length < GameData.NumPlayerAtOnce) + return false; + + CRound c = GameData.Rounds[GameData.CurrentRoundNr - 1]; + + for (int i = 0; i < GameData.NumPlayerAtOnce; i++) + { + //try to fill with the right data + if (c != null) + players[i].ProfileID = GameData.ProfileIDs[c.Players[i]]; + else + players[i].ProfileID = -1; + } + #endregion PlayerNames + + #region SongQueue + for (int i = 0; i < songIDs.Length; i++) + CBase.Game.AddSong(songIDs[i], GameData.GameMode); + #endregion SongQueue + + return true; + } private void _SetNumJokers() @@ -428,6 +534,38 @@ namespace VocaluxeLib.PartyModes.Challenge _ScreenSongOptions.Selection.TeamNames[i] = CBase.Profiles.GetPlayerName(GameData.ProfileIDs[c.Players[i]]); } + private void _UpdateSongList() + { + if (GameData.Songs.Count > 0) + return; + + switch (GameData.SongSource) + { + case ESongSource.TR_SONGSOURCE_PLAYLIST: + for (int i = 0; i < CBase.Playlist.GetSongCount(GameData.PlaylistID); i++) + { + int id = CBase.Playlist.GetSong(GameData.PlaylistID, i).SongID; + if (CBase.Songs.GetSongByID(id).AvailableGameModes.Contains(EGameMode.TR_GAMEMODE_MEDLEY)) + GameData.Songs.Add(id); + } + break; + + case ESongSource.TR_SONGSOURCE_ALLSONGS: + ReadOnlyCollection avSongs = CBase.Songs.GetSongs(); + GameData.Songs.AddRange(avSongs.Where(song => song.AvailableGameModes.Contains(EGameMode.TR_GAMEMODE_MEDLEY)).Select(song => song.ID)); + break; + + case ESongSource.TR_SONGSOURCE_CATEGORY: + CBase.Songs.SetCategory(GameData.CategoryIndex); + avSongs = CBase.Songs.GetVisibleSongs(); + GameData.Songs.AddRange(avSongs.Where(song => song.AvailableGameModes.Contains(EGameMode.TR_GAMEMODE_MEDLEY)).Select(song => song.ID)); + + CBase.Songs.SetCategory(-1); + break; + } + GameData.Songs.Shuffle(); + } + private void _UpdateScores() { if (GameData.ResultTable.Count == 0) diff --git a/PartyModes/PartyModeChallenge/CPartyScreenChallengeSongs.cs b/PartyModes/PartyModeChallenge/CPartyScreenChallengeSongs.cs new file mode 100644 index 00000000..f7261c4e --- /dev/null +++ b/PartyModes/PartyModeChallenge/CPartyScreenChallengeSongs.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using VocaluxeLib.Menu; + +namespace VocaluxeLib.PartyModes.Challenge +{ + class CPartyScreenChallengeSongs : CMenuPartySongSelection + { + protected override int _ScreenVersion + { + get { return 1; } + } + + private new CPartyModeChallenge _PartyMode; + + public override void Init() + { + base.Init(); + _PartyMode = (CPartyModeChallenge)base._PartyMode; + } + + public override void OnShow() + { + Source = _PartyMode.GameData.SongSource; + Sorting = _PartyMode.GameData.Sorting; + Category = _PartyMode.GameData.CategoryIndex; + Playlist = _PartyMode.GameData.PlaylistID; + SongMode = _PartyMode.GameData.GameMode; + NumMedleySongs = _PartyMode.GameData.NumMedleySongs; + + base.OnShow(); + } + + public override void Back() + { + _SaveConfig(); + _PartyMode.Back(); + } + + public override void Next() + { + _SaveConfig(); + _PartyMode.Next(); + } + + public override bool UpdateGame() + { + return true; + } + + protected override void _SetAllowedOptions() + { + base._SetAllowedOptions(); + + AllowedSongModes = new EGameMode[] { EGameMode.TR_GAMEMODE_NORMAL, EGameMode.TR_GAMEMODE_SHORTSONG, EGameMode.TR_GAMEMODE_MEDLEY }; + } + + private void _SaveConfig() + { + _PartyMode.GameData.SongSource = Source; + _PartyMode.GameData.Sorting = Sorting; + _PartyMode.GameData.CategoryIndex = Category; + _PartyMode.GameData.PlaylistID = Playlist; + _PartyMode.GameData.GameMode = SongMode; + _PartyMode.GameData.NumMedleySongs = NumMedleySongs; + } + } +} diff --git a/PartyModes/PartyModeChallenge/PartyModeChallenge.csproj b/PartyModes/PartyModeChallenge/PartyModeChallenge.csproj index 1d0a49a9..c2ecf5b3 100644 --- a/PartyModes/PartyModeChallenge/PartyModeChallenge.csproj +++ b/PartyModes/PartyModeChallenge/PartyModeChallenge.csproj @@ -71,6 +71,7 @@ + @@ -109,4 +110,4 @@ rm -f "$(SolutionDir)Output\PartyModes\$(TargetName)\Code\GlobalSuppressions.cs" --> - + \ No newline at end of file diff --git a/PartyModes/PartyModeChallengeMedley/CChallengeRounds.cs b/PartyModes/PartyModeChallengeMedley/CChallengeRounds.cs deleted file mode 100644 index 92e5438f..00000000 --- a/PartyModes/PartyModeChallengeMedley/CChallengeRounds.cs +++ /dev/null @@ -1,152 +0,0 @@ -#region license -// This file is part of Vocaluxe. -// -// Vocaluxe is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Vocaluxe is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Vocaluxe. If not, see . -#endregion - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using VocaluxeLib.Utils.Combinatorics; - -namespace VocaluxeLib.PartyModes.ChallengeMedley -{ - public class CChallengeRounds - { - private readonly List _Rounds = new List(); - - public int Count - { - get { return _Rounds.Count; } - } - - public CRound this[int index] - { - get { return _Rounds[index]; } - } - - public CChallengeRounds(int numRounds, int numPlayer, int playersPerRound) - { - if (numRounds < 1 || numPlayer < 1 || playersPerRound < 1) - throw new ArgumentException("Invalid paramters for the rounds"); - - if (playersPerRound > numPlayer) - playersPerRound = numPlayer; - - _BuildRounds(numRounds, numPlayer, playersPerRound); - if (Count > numRounds) - { - //Try again and take the better one - List old = new List(_Rounds); - _Rounds.Clear(); - _BuildRounds(numRounds, numPlayer, playersPerRound); - if (Count > old.Count) - { - _Rounds.Clear(); - _Rounds.AddRange(old); - } - } - } - - /// - /// Divides players in 2 categories: Those how sung the most and the others - /// - /// List matching the playerIndex to the number of songs sung - private static List _GetPlayersForRound(IList numSung) - { - List mustSing = new List(); - int max = numSung.Max(); - for (int i = 0; i < numSung.Count; i++) - { - if (numSung[i] < max) - mustSing.Add(i); - } - return mustSing; - } - - private static void _AddCombinations(int numPlayer, int playersPerRound, List combinations) - { - List input = new List(numPlayer); - for (int i = 0; i < numPlayer; i++) - input.Add(i); - CCombinations combs = new CCombinations(input, playersPerRound); - combinations.AddRange(combs.Select(combination => new CRound(combination))); - combinations.Shuffle(); - } - - private static CRound _GetMatchingCombination(List playersInRound, List numSung, List combinations) - { - foreach (CRound round in combinations) - { - int matching = round.Players.Count(playersInRound.Contains); - // A valid round contains only players from playersInRound or all players from playersInRound (and some others) - if (matching == round.Players.Count || matching == playersInRound.Count) - return round; - } - // It may happen, that there are only players that already sung against each other. So create a 2nd best option with the most number of players that should sing in it - int maxMatching = combinations.Max(c => c.Players.Count(playersInRound.Contains)); - List nextOptions = combinations.Where(c => c.Players.Count(playersInRound.Contains) == maxMatching).ToList(); - // And select the combination that minimizes the sum of the number of songs sung (--> favor rounds with players that sung less than others) - CRound result = null; - int minSung = int.MaxValue; - foreach (CRound round in nextOptions) - { - int curNumSung = round.Players.Sum(pl => numSung[pl]); - if (curNumSung < minSung) - { - minSung = curNumSung; - result = round; - } - } - Debug.Assert(result != null); - return result; - } - - private void _BuildRounds(int numRounds, int numPlayer, int playersPerRound) - { - // What we want is that every player sung the same amount of songs - // So we keep track how many songs each palyer sung - List numSung = new List(numPlayer); - for (int i = 0; i < numPlayer; i++) - numSung.Add(0); - List combinations = new List(); - // Posibly add more rounds than requested if the song count per player is unequal - for (int i = 0; i < numRounds * 10; i++) - { - if (combinations.Count == 0) - _AddCombinations(numPlayer, playersPerRound, combinations); - List playersInRound = _GetPlayersForRound(numSung); - CRound curRound = _GetMatchingCombination(playersInRound, numSung, combinations); - foreach (int player in curRound.Players) - numSung[player]++; - _Rounds.Add(curRound); - combinations.Remove(curRound); - //Stop if we have enough rounds and all players sung the same amount of songs - if (_Rounds.Count >= numRounds && numSung.All(ct => ct == numSung[0])) - break; - } - } - } - - public class CRound - { - public readonly List Players; - - public CRound(List players) - { - Players = players.Shuffle(); - } - } -} \ No newline at end of file diff --git a/PartyModes/PartyModeChallengeMedley/CPartyModeChallengeMedley.cs b/PartyModes/PartyModeChallengeMedley/CPartyModeChallengeMedley.cs deleted file mode 100644 index 78da5f05..00000000 --- a/PartyModes/PartyModeChallengeMedley/CPartyModeChallengeMedley.cs +++ /dev/null @@ -1,562 +0,0 @@ -#region license -// This file is part of Vocaluxe. -// -// Vocaluxe is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Vocaluxe is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Vocaluxe. If not, see . -#endregion - -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Runtime.InteropServices; -using VocaluxeLib.Game; -using VocaluxeLib.Menu; -using VocaluxeLib.Profile; -using VocaluxeLib.Songs; - -[assembly: ComVisible(false)] - -namespace VocaluxeLib.PartyModes.ChallengeMedley -{ - public enum ESongSource - { - TR_ALLSONGS, - TR_CATEGORY, - TR_PLAYLIST - } - - public class CResultTableRow : IComparable - { - public int Position; - public int PlayerID; - public int NumPlayed; - public int NumWon; - public int NumSingPoints; - public int NumGamePoints; - - public int CompareTo(object obj) - { - var row = obj as CResultTableRow; - if (row != null) - { - int res = row.NumGamePoints.CompareTo(NumGamePoints); - if (res == 0) - { - res = row.NumSingPoints.CompareTo(NumSingPoints); - if (res == 0) - res = row.NumWon.CompareTo(NumWon); - } - return res; - } - - throw new ArgumentException("object is not a ResultTableRow"); - } - } - - public abstract class CPartyScreenChallengeMedley : CMenuParty - { - protected new CPartyModeChallengeMedley _PartyMode; - - public override void Init() - { - base.Init(); - _PartyMode = (CPartyModeChallengeMedley)base._PartyMode; - } - } - - // ReSharper disable ClassNeverInstantiated.Global - public sealed class CPartyModeChallengeMedley : CPartyMode - // ReSharper restore ClassNeverInstantiated.Global - { - public override int MinMics - { - get { return 1; } - } - public override int MaxMics - { - get { return CBase.Config.GetMaxNumMics(); } - } - public override int MinPlayers - { - get { return 1; } - } - public override int MaxPlayers - { - get { return 12; } - } - public override int MinTeams - { - get { return 1; } - } - public override int MaxTeams - { - get { return 1; } - } - public override int MinPlayersPerTeam - { - get { return MinPlayers; } - } - public override int MaxPlayersPerTeam - { - get { return MaxPlayers; } - } - - public int MinSongs - { - get { return 1; } - } - - public int MaxSongs - { - get { return 10; } - } - - private enum EStage - { - Config, - Names, - Main, - Singing - } - - public struct SData - { - public int NumPlayer; - public int NumPlayerAtOnce; - public int NumRounds; - public List ProfileIDs; - public int NumSongs; - public List Songs; - - public CChallengeRounds Rounds; - public List ResultTable; - public int[,] Results; - - public int CurrentRoundNr; - - public int[] CatSongIndices; - - public ESongSource SongSource; - public int CategoryIndex; - public int PlaylistID; - } - - private struct SStats - { - public int ProfileID; - public int SingPoints; - public int GamePoints; - public int Won; - } - - public SData GameData; - private EStage _Stage; - - public CPartyModeChallengeMedley(int id) : base(id) - { - GameData = new SData {NumPlayer = 4, NumPlayerAtOnce = 2, NumRounds = 12, CurrentRoundNr = 1, ProfileIDs = new List(), NumSongs = 5, Songs = new List(), SongSource = ESongSource.TR_ALLSONGS, CatSongIndices = null, Results = null}; - } - - public override void SetDefaults() - { - _Stage = EStage.Config; - GameData.CurrentRoundNr = 1; - GameData.ResultTable = new List(); - } - - public override bool Init() - { - if (!base.Init()) - return false; - - SetDefaults(); - return true; - } - - public override void UpdateGame() - { - /* - if (CBase.Songs.IsInCategory() || _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_OFF) - _ScreenSongOptions.Selection.RandomOnly = true; - else - _ScreenSongOptions.Selection.RandomOnly = false;*/ - } - - private IMenu _GetNextScreen() - { - switch (_Stage) - { - case EStage.Config: - return _Screens["CPartyScreenChallengeMedleyConfig"]; - case EStage.Names: - return _Screens["CPartyScreenChallengeMedleyNames"]; - case EStage.Main: - return _Screens["CPartyScreenChallengeMedleyMain"]; - case EStage.Singing: - return CBase.Graphics.GetScreen(EScreen.Sing); - default: - throw new ArgumentException("Invalid stage: " + _Stage); - } - } - - private void _FadeToScreen() - { - CBase.Graphics.FadeTo(_GetNextScreen()); - } - - public void Next() - { - switch (_Stage) - { - case EStage.Config: - _Stage = EStage.Names; - break; - case EStage.Names: - _Stage = EStage.Main; - CBase.Songs.ResetSongSung(); - GameData.ResultTable = new List(); - GameData.Rounds = new CChallengeRounds(GameData.NumRounds, GameData.NumPlayer, GameData.NumPlayerAtOnce); - GameData.CurrentRoundNr = 1; - break; - case EStage.Main: - _Stage = EStage.Singing; - if (!_StartNextRound()) - CBase.Graphics.FadeTo(EScreen.Party); - break; - case EStage.Singing: - _Stage = EStage.Main; - _UpdateScores(); - break; - default: - throw new ArgumentException("Invalid stage: " + _Stage); - } - _FadeToScreen(); - } - - public void Back() - { - switch (_Stage) - { - case EStage.Config: - CBase.Graphics.FadeTo(EScreen.Party); - return; - case EStage.Names: - _Stage = EStage.Config; - break; - case EStage.Main: - _Stage = EStage.Names; - break; - default: // Rest is not allowed - throw new ArgumentException("Invalid stage: " + _Stage); - } - _FadeToScreen(); - } - - public override IMenu GetStartScreen() - { - return _Screens["CPartyScreenChallengeMedleyConfig"]; - } - public override SScreenSongOptions GetScreenSongOptions() - { - throw new ArgumentException("Not required!"); - } - - public override void OnSongChange(int songIndex, ref SScreenSongOptions screenSongOptions) - { - throw new ArgumentException("Not required!"); - } - - public override void OnCategoryChange(int categoryIndex, ref SScreenSongOptions screenSongOptions) - { - throw new ArgumentException("Not required!"); - } - - public override void SetSearchString(string searchString, bool visible) - { - throw new ArgumentException("Not required!"); - } - - public override void JokerUsed(int teamNr) { } - - public override void SongSelected(int songID) {} - - public override void LeavingHighscore() - { - GameData.CurrentRoundNr++; - Next(); - } - - private bool _StartNextRound() - { - _SetTeamNames(); - GameData.CatSongIndices = null; - - return _PrepareGame(); - } - - private bool _PrepareGame() - { - CBase.Game.Reset(); - CBase.Game.ClearSongs(); - - #region PlayerNames - CBase.Game.SetNumPlayer(GameData.NumPlayerAtOnce); - SPlayer[] players = CBase.Game.GetPlayers(); - if (players == null) - return false; - - if (players.Length < GameData.NumPlayerAtOnce) - return false; - - CRound c = GameData.Rounds[GameData.CurrentRoundNr - 1]; - - for (int i = 0; i < GameData.NumPlayerAtOnce; i++) - { - //try to fill with the right data - if (c != null) - players[i].ProfileID = GameData.ProfileIDs[c.Players[i]]; - else - players[i].ProfileID = -1; - } - #endregion PlayerNames - - #region SongQueue - for (int i = 0; i < GameData.NumSongs; i++) - { - if (GameData.Songs.Count == 0) - _UpdateSongList(); - CBase.Game.AddSong(GameData.Songs[0], EGameMode.TR_GAMEMODE_MEDLEY); - GameData.Songs.RemoveAt(0); - } - return true; - #endregion SongQueue - } - - private void _UpdateSongList() - { - if (GameData.Songs.Count > 0) - return; - - switch (GameData.SongSource) - { - case ESongSource.TR_PLAYLIST: - for (int i = 0; i < CBase.Playlist.GetSongCount(GameData.PlaylistID); i++) - { - int id = CBase.Playlist.GetSong(GameData.PlaylistID, i).SongID; - if (CBase.Songs.GetSongByID(id).AvailableGameModes.Contains(EGameMode.TR_GAMEMODE_MEDLEY)) - GameData.Songs.Add(id); - } - break; - - case ESongSource.TR_ALLSONGS: - ReadOnlyCollection avSongs = CBase.Songs.GetSongs(); - GameData.Songs.AddRange(avSongs.Where(song => song.AvailableGameModes.Contains(EGameMode.TR_GAMEMODE_MEDLEY)).Select(song => song.ID)); - break; - - case ESongSource.TR_CATEGORY: - CBase.Songs.SetCategory(GameData.CategoryIndex); - avSongs = CBase.Songs.GetVisibleSongs(); - GameData.Songs.AddRange(avSongs.Where(song => song.AvailableGameModes.Contains(EGameMode.TR_GAMEMODE_MEDLEY)).Select(song => song.ID)); - - CBase.Songs.SetCategory(-1); - break; - } - GameData.Songs.Shuffle(); - } - - - private void _SetTeamNames() - { - CProfile[] profiles = CBase.Profiles.GetProfiles(); - - if (profiles == null) - { - _ScreenSongOptions.Selection.TeamNames = new string[] {"foo", "bar"}; - return; - } - - if (GameData.NumPlayerAtOnce < 1 || GameData.ProfileIDs.Count < GameData.NumPlayerAtOnce || profiles.Length < GameData.NumPlayerAtOnce) - { - _ScreenSongOptions.Selection.TeamNames = new string[] {"foo", "bar"}; - return; - } - - _ScreenSongOptions.Selection.TeamNames = new string[GameData.NumPlayerAtOnce]; - CRound c = GameData.Rounds[GameData.CurrentRoundNr - 1]; - - for (int i = 0; i < GameData.NumPlayerAtOnce; i++) - { - if (c != null) - { - if (GameData.ProfileIDs[c.Players[i]] < profiles.Length) - _ScreenSongOptions.Selection.TeamNames[i] = profiles[GameData.ProfileIDs[c.Players[i]]].PlayerName; - else - _ScreenSongOptions.Selection.TeamNames[i] = "foobar"; - } - else - _ScreenSongOptions.Selection.TeamNames[i] = "foobar"; - } - } - - private void _UpdateScores() - { - if (GameData.ResultTable.Count == 0) - { - for (int i = 0; i < GameData.NumPlayer; i++) - { - CResultTableRow row = new CResultTableRow {PlayerID = GameData.ProfileIDs[i], NumPlayed = 0, NumWon = 0, NumSingPoints = 0, NumGamePoints = 0}; - GameData.ResultTable.Add(row); - } - - GameData.Results = new int[GameData.NumRounds,GameData.NumPlayerAtOnce]; - for (int i = 0; i < GameData.NumRounds; i++) - { - for (int j = 0; j < GameData.NumPlayerAtOnce; j++) - GameData.Results[i, j] = 0; - } - } - - CPoints gamePoints = CBase.Game.GetPoints(); - if (gamePoints == null || gamePoints.NumPlayer < GameData.NumPlayerAtOnce) - return; - - SPlayer[] results = gamePoints.GetPlayer(0, GameData.NumPlayerAtOnce); - if (results == null) - return; - - if (results.Length < GameData.NumPlayerAtOnce) - return; - - if (gamePoints.NumRounds == 0) - return; - - for (int i = 1; i < gamePoints.NumRounds; i++) - { - SPlayer[] temp = gamePoints.GetPlayer(i, GameData.NumPlayerAtOnce); - for (int p = 0; p < GameData.NumPlayerAtOnce; p++) - results[p].Points += temp[p].Points; - } - - for (int j = 0; j < GameData.NumPlayerAtOnce; j++) - { - results[j].Points = results[j].Points / gamePoints.NumRounds; - GameData.Results[GameData.CurrentRoundNr - 2, j] = (int)Math.Round(results[j].Points); - } - - List points = _GetPointsForPlayer(results); - - for (int i = 0; i < GameData.NumPlayerAtOnce; i++) - { - int index = -1; - for (int j = 0; j < GameData.ResultTable.Count; j++) - { - if (points[i].ProfileID == GameData.ResultTable[j].PlayerID) - { - index = j; - break; - } - } - - if (index != -1) - { - CResultTableRow row = GameData.ResultTable[index]; - - row.NumPlayed++; - row.NumWon += points[i].Won; - row.NumSingPoints += points[i].SingPoints; - row.NumGamePoints += points[i].GamePoints; - - GameData.ResultTable[index] = row; - } - } - - GameData.ResultTable.Sort(); - - //Update position-number - int pos = 1; - int lastPoints = 0; - int lastSingPoints = 0; - foreach (CResultTableRow resultRow in GameData.ResultTable) - { - if (lastPoints > resultRow.NumGamePoints || lastSingPoints > resultRow.NumSingPoints) - pos++; - resultRow.Position = pos; - lastPoints = resultRow.NumGamePoints; - lastSingPoints = resultRow.NumSingPoints; - } - } - - private List _GetPointsForPlayer(SPlayer[] results) - { - var result = new List(); - for (int i = 0; i < GameData.NumPlayerAtOnce; i++) - { - var stat = new SStats {ProfileID = results[i].ProfileID, SingPoints = (int)Math.Round(results[i].Points), Won = 0, GamePoints = 0}; - result.Add(stat); - } - - result.Sort((s1, s2) => s1.SingPoints.CompareTo(s2.SingPoints)); - - int current = result[result.Count - 1].SingPoints; - int points = result.Count; - bool wonset = false; - - for (int i = result.Count - 1; i >= 0; i--) - { - SStats res = result[i]; - - if (i < result.Count - 1) - { - if (current > res.SingPoints) - { - res.GamePoints = i * 2; - wonset = true; - points = res.GamePoints; - } - else - { - if (!wonset) - res.Won = 1; - res.GamePoints = points; - } - } - else - { - res.GamePoints = i * 2; - res.Won = 1; - } - - current = res.SingPoints; - - result[i] = res; - } - - - return result; - } - - private void _CreateCatSongIndices() - { - if (GameData.CatSongIndices == null && CBase.Songs.GetNumCategories() > 0 && _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_ON) - { - GameData.CatSongIndices = new int[CBase.Songs.GetNumCategories()]; - for (int i = 0; i < GameData.CatSongIndices.Length; i++) - GameData.CatSongIndices[i] = -1; - } - - if (CBase.Songs.GetNumCategories() == 0 || _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_OFF) - GameData.CatSongIndices = null; - } - } -} \ No newline at end of file diff --git a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyConfig.cs b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyConfig.cs deleted file mode 100644 index 88c5e688..00000000 --- a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyConfig.cs +++ /dev/null @@ -1,290 +0,0 @@ -#region license -// This file is part of Vocaluxe. -// -// Vocaluxe is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Vocaluxe is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Vocaluxe. If not, see . -#endregion - -using System; -using System.Linq; -using System.Collections.Generic; -using System.Windows.Forms; -using VocaluxeLib.Songs; - -namespace VocaluxeLib.PartyModes.ChallengeMedley -{ - // ReSharper disable UnusedMember.Global - public class CPartyScreenChallengeMedleyConfig : CPartyScreenChallengeMedley - // ReSharper restore UnusedMember.Global - { - // Version number for theme files. Increment it, if you've changed something on the theme files! - protected override int _ScreenVersion - { - get { return 2; } - } - - private const string _SelectSlideNumPlayers = "SelectSlideNumPlayers"; - private const string _SelectSlideNumMics = "SelectSlideNumMics"; - private const string _SelectSlideNumRounds = "SelectSlideNumRounds"; - private const string _SelectSlideNumSongs = "SelectSlideNumSongs"; - private const string _SelectSlideSongSource = "SelectSlideSongSource"; - private const string _SelectSlidePlaylist = "SelectSlidePlaylist"; - private const string _SelectSlideCategory = "SelectSlideCategory"; - private const string _ButtonNext = "ButtonNext"; - private const string _ButtonBack = "ButtonBack"; - - private const int _MaxNumRounds = 100; - private int _RoundSteps = 1; - private bool _ConfigOk; - - public override void Init() - { - base.Init(); - - _ThemeSelectSlides = new string[] {_SelectSlideNumPlayers, _SelectSlideNumMics, _SelectSlideNumRounds, _SelectSlideNumSongs, _SelectSlideSongSource, _SelectSlidePlaylist, _SelectSlideCategory}; - _ThemeButtons = new string[] {_ButtonNext, _ButtonBack}; - } - - public override bool HandleInput(SKeyEvent keyEvent) - { - base.HandleInput(keyEvent); - - if (keyEvent.KeyPressed) {} - else - { - switch (keyEvent.Key) - { - case Keys.Back: - case Keys.Escape: - _PartyMode.Back(); - break; - - case Keys.Enter: - _UpdateSlides(); - - if (_Buttons[_ButtonBack].Selected) - _PartyMode.Back(); - - if (_Buttons[_ButtonNext].Selected) - _PartyMode.Next(); - break; - - case Keys.Left: - _UpdateSlides(); - break; - - case Keys.Right: - _UpdateSlides(); - break; - } - } - return true; - } - - public override bool HandleMouse(SMouseEvent mouseEvent) - { - base.HandleMouse(mouseEvent); - - if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent)) - { - _UpdateSlides(); - if (_Buttons[_ButtonBack].Selected) - _PartyMode.Back(); - - if (_Buttons[_ButtonNext].Selected) - _PartyMode.Next(); - } - - if (mouseEvent.RB) - _PartyMode.Back(); - - return true; - } - - public override void OnShow() - { - base.OnShow(); - - _RebuildSlides(); - _UpdateSlides(); - } - - public override bool UpdateGame() - { - _Buttons[_ButtonNext].Visible = _ConfigOk; - return true; - } - - private void _RebuildSlides() - { - // build num player slide (min player ... max player); - _SelectSlides[_SelectSlideNumPlayers].Clear(); - for (int i = _PartyMode.MinPlayers; i <= _PartyMode.MaxPlayers; i++) - _SelectSlides[_SelectSlideNumPlayers].AddValue(i.ToString()); - _SelectSlides[_SelectSlideNumPlayers].Selection = _PartyMode.GameData.NumPlayer - _PartyMode.MinPlayers; - - _SelectSlides[_SelectSlideNumSongs].Clear(); - for (int i = _PartyMode.MinSongs; i <= _PartyMode.MaxSongs; i++) - _SelectSlides[_SelectSlideNumSongs].AddValue(i.ToString()); - _SelectSlides[_SelectSlideNumSongs].Selection = _PartyMode.GameData.NumSongs - _PartyMode.MinSongs; - - _SelectSlides[_SelectSlideSongSource].Clear(); - _SelectSlides[_SelectSlideSongSource].SetValues((int)_PartyMode.GameData.SongSource); - - List playlists = CBase.Playlist.GetNames(); - _SelectSlides[_SelectSlidePlaylist].Clear(); - for (int i = 0; i < playlists.Count; i++) - { - string value = playlists[i] + " (" + CBase.Playlist.GetSongCount(i) + " " + CBase.Language.Translate("TR_SONGS", PartyModeID) + ")"; - _SelectSlides[_SelectSlidePlaylist].AddValue(value); - } - _SelectSlides[_SelectSlidePlaylist].Selection = _PartyMode.GameData.PlaylistID; - _SelectSlides[_SelectSlidePlaylist].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_PLAYLIST; - - _SelectSlides[_SelectSlideCategory].Clear(); - for (int i = 0; i < CBase.Songs.GetNumCategories(); i++) - { - CCategory cat = CBase.Songs.GetCategory(i); - string value = cat.Name + " (" + cat.GetNumSongsNotSung() + " " + CBase.Language.Translate("TR_SONGS", PartyModeID) + ")"; - _SelectSlides[_SelectSlideCategory].AddValue(value); - } - _SelectSlides[_SelectSlideCategory].Selection = _PartyMode.GameData.CategoryIndex; - _SelectSlides[_SelectSlideCategory].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_CATEGORY; - - _UpdateMicsAtOnce(); - _SetRoundSteps(); - _UpdateSlideRounds(); - } - - private void _UpdateSlides() - { - int player = _PartyMode.GameData.NumPlayer; - int mics = _PartyMode.GameData.NumPlayerAtOnce; - _PartyMode.GameData.NumPlayer = _SelectSlides[_SelectSlideNumPlayers].Selection + _PartyMode.MinPlayers; - _PartyMode.GameData.NumPlayerAtOnce = _SelectSlides[_SelectSlideNumMics].Selection + _PartyMode.MinPlayers; - _PartyMode.GameData.NumRounds = (_SelectSlides[_SelectSlideNumRounds].Selection + 1) * _RoundSteps; - _PartyMode.GameData.NumSongs = _SelectSlides[_SelectSlideNumSongs].Selection + _PartyMode.MinSongs; - _PartyMode.GameData.SongSource = (ESongSource)_SelectSlides[_SelectSlideSongSource].Selection; - _PartyMode.GameData.PlaylistID = _SelectSlides[_SelectSlidePlaylist].Selection; - _PartyMode.GameData.CategoryIndex = _SelectSlides[_SelectSlideCategory].Selection; - - _UpdateMicsAtOnce(); - _SetRoundSteps(); - - if (player != _PartyMode.GameData.NumPlayer || mics != _PartyMode.GameData.NumPlayerAtOnce) - { - int num = CHelper.CombinationCount(_PartyMode.GameData.NumPlayer, _PartyMode.GameData.NumPlayerAtOnce); - while (num > _MaxNumRounds) - num -= _RoundSteps; - _PartyMode.GameData.NumRounds = num; - } - - if (_PartyMode.GameData.SongSource == ESongSource.TR_PLAYLIST) - { - if (CBase.Playlist.GetNumPlaylists() > 0) - { - if (CBase.Playlist.GetSongCount(_PartyMode.GameData.PlaylistID) > 0) - { - _ConfigOk = false; - for (int i = 0; i < CBase.Playlist.GetSongCount(_PartyMode.GameData.PlaylistID); i++) - { - int id = CBase.Playlist.GetSong(_PartyMode.GameData.PlaylistID, i).SongID; - _ConfigOk = CBase.Songs.GetSongByID(id).AvailableGameModes.Any(mode => mode == EGameMode.TR_GAMEMODE_MEDLEY); - if (_ConfigOk) - break; - } - } - else - _ConfigOk = false; - } - else - _ConfigOk = false; - } - if (_PartyMode.GameData.SongSource == ESongSource.TR_CATEGORY) - { - if (CBase.Songs.GetNumCategories() == 0) - _ConfigOk = false; - else if (CBase.Songs.GetNumSongsNotSungInCategory(_PartyMode.GameData.CategoryIndex) <= 0) - _ConfigOk = false; - else - { - CBase.Songs.SetCategory(_PartyMode.GameData.CategoryIndex); - _ConfigOk = false; - foreach (CSong song in CBase.Songs.GetVisibleSongs()) - { - _ConfigOk = song.AvailableGameModes.Any(mode => mode == EGameMode.TR_GAMEMODE_MEDLEY); - if (_ConfigOk) - break; - } - CBase.Songs.SetCategory(-1); - } - } - if (_PartyMode.GameData.SongSource == ESongSource.TR_ALLSONGS) - { - if (CBase.Songs.GetNumSongs() > 0) - { - for (int i = 0; i < CBase.Songs.GetNumSongs(); i++) - { - _ConfigOk = CBase.Songs.GetSongByID(i).AvailableGameModes.Any(mode => mode == EGameMode.TR_GAMEMODE_MEDLEY); - if (_ConfigOk) - break; - } - } - else - _ConfigOk = false; - } - - _SelectSlides[_SelectSlideCategory].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_CATEGORY; - _SelectSlides[_SelectSlidePlaylist].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_PLAYLIST; - - _UpdateSlideRounds(); - } - - private void _UpdateMicsAtOnce() - { - int maxNum = Math.Min(_PartyMode.MaxMics, _PartyMode.GameData.NumPlayer); - - if (_PartyMode.GameData.NumPlayerAtOnce > maxNum) - _PartyMode.GameData.NumPlayerAtOnce = maxNum; - - // build mics at once slide - _SelectSlides[_SelectSlideNumMics].Clear(); - for (int i = 1; i <= maxNum; i++) - _SelectSlides[_SelectSlideNumMics].AddValue(i.ToString()); - _SelectSlides[_SelectSlideNumMics].Selection = _PartyMode.GameData.NumPlayerAtOnce - _PartyMode.MinPlayers; - } - - private void _UpdateSlideRounds() - { - // build num rounds slide - _SelectSlides[_SelectSlideNumRounds].Clear(); - for (int i = _RoundSteps; i <= _MaxNumRounds; i += _RoundSteps) - _SelectSlides[_SelectSlideNumRounds].AddValue(i.ToString()); - _SelectSlides[_SelectSlideNumRounds].Selection = _PartyMode.GameData.NumRounds / _RoundSteps - 1; - } - - private void _SetRoundSteps() - { - if (_PartyMode.GameData.NumPlayerAtOnce < 1 || _PartyMode.GameData.NumPlayer < 1 || _PartyMode.GameData.NumPlayerAtOnce > _PartyMode.GameData.NumPlayer) - { - _RoundSteps = 1; - return; - } - - int res = _PartyMode.GameData.NumPlayer / _PartyMode.GameData.NumPlayerAtOnce; - int mod = _PartyMode.GameData.NumPlayer % _PartyMode.GameData.NumPlayerAtOnce; - - _RoundSteps = mod == 0 ? res : _PartyMode.GameData.NumPlayer; - } - } -} \ No newline at end of file diff --git a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyMain.cs b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyMain.cs deleted file mode 100644 index 8e2841b1..00000000 --- a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyMain.cs +++ /dev/null @@ -1,630 +0,0 @@ -#region license -// This file is part of Vocaluxe. -// -// Vocaluxe is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Vocaluxe is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Vocaluxe. If not, see . -#endregion - -using System; -using System.Collections.Generic; -using System.Windows.Forms; -using VocaluxeLib.Menu; - -namespace VocaluxeLib.PartyModes.ChallengeMedley -{ - struct STableRow - { - public CText Pos; - public CText Name; - public CText Rounds; - public CText Won; - public CText SingPoints; - public CText GamePoints; - } - - class CRoundsTableRow - { - public CText Number; - public List TextPlayer; - public List TextScores; - } - - // ReSharper disable UnusedMember.Global - public class CPartyScreenChallengeMedleyMain : CPartyScreenChallengeMedley - // ReSharper restore UnusedMember.Global - { - // Version number for theme files. Increment it, if you've changed something on the theme files! - protected override int _ScreenVersion - { - get { return 1; } - } - - private const string _TextPosition = "TextPosition"; - private const string _TextPlayerName = "TextPlayerName"; - private const string _TextNumPlayed = "TextNumPlayed"; - private const string _TextWon = "TextWon"; - private const string _TextSingPoints = "TextSingPoints"; - private const string _TextGamePoints = "TextGamePoints"; - private const string _TextNextPlayer = "TextNextPlayer"; - private const string _TextPopupReallyExit = "TextPopupReallyExit"; - private const string _TextRoundPlayer = "TextRoundPlayer"; - private const string _TextRoundScore = "TextRoundScore"; - private const string _TextRoundNumber = "TextRoundNumber"; - private const string _TextFinishMessage = "TextFinishMessage"; - private const string _TextFinishPlayerWin = "TextFinishPlayerWin"; - private const string _TextNextPlayerMessage = "TextNextPlayerMessage"; - - private const string _ButtonNextRound = "ButtonNextRound"; - private const string _ButtonBack = "ButtonBack"; - private const string _ButtonExit = "ButtonExit"; - private const string _ButtonPopupYes = "ButtonPopupYes"; - private const string _ButtonPopupNo = "ButtonPopupNo"; - private const string _ButtonPlayerScrollUp = "ButtonPlayerScrollUp"; - private const string _ButtonPlayerScrollDown = "ButtonPlayerScrollDown"; - private const string _ButtonRoundsScrollUp = "ButtonRoundsScrollUp"; - private const string _ButtonRoundsScrollDown = "ButtonRoundsScrollDown"; - - private const string _StaticPopupBG = "StaticPopupBG"; - private const string _StaticNextPlayer = "StaticNextPlayer"; - - private bool _ExitPopupVisible; - - private List _PlayerTable; - private List _RoundsTable; - - private List _NextPlayerTexts; - private List _NextPlayerStatics; - - private SRectF _RoundsTableScrollArea; - private SRectF _PlayerTableScrollArea; - private int _RoundsTableOffset; - private int _PlayerTableOffset; - private const int _NumPlayerVisible = 10; - private int _NumRoundsVisible = 3; - - public override void Init() - { - base.Init(); - - _ThemeTexts = new string[] - { - _TextPosition, _TextPlayerName, _TextNumPlayed, _TextWon, _TextSingPoints, _TextGamePoints, _TextNextPlayer, _TextPopupReallyExit, _TextRoundNumber, - _TextRoundPlayer, - _TextRoundScore, _TextFinishMessage, _TextFinishPlayerWin, _TextNextPlayerMessage - }; - _ThemeButtons = new string[] - { - _ButtonNextRound, _ButtonBack, _ButtonExit, _ButtonPopupYes, _ButtonPopupNo, _ButtonPlayerScrollDown, _ButtonPlayerScrollUp, _ButtonRoundsScrollDown, - _ButtonRoundsScrollUp - }; - _ThemeStatics = new string[] {_StaticPopupBG, _StaticNextPlayer}; - } - - public override void LoadTheme(string xmlPath) - { - base.LoadTheme(xmlPath); - - _BuildPlayerTable(); - _CreateRoundsTable(); - _NextPlayerTexts = new List(); - _NextPlayerStatics = new List(); - - for (int i = 0; i < _PartyMode.MaxPlayers; i++) - { - _NextPlayerTexts.Add(GetNewText(_Texts[_TextNextPlayer])); - _AddText(_NextPlayerTexts[_NextPlayerTexts.Count - 1]); - _NextPlayerStatics.Add(GetNewStatic(_Statics[_StaticNextPlayer])); - _AddStatic(_NextPlayerStatics[_NextPlayerStatics.Count - 1]); - } - _Statics[_StaticNextPlayer].Visible = false; - } - - public override bool HandleInput(SKeyEvent keyEvent) - { - base.HandleInput(keyEvent); - - if (keyEvent.KeyPressed) {} - else - { - switch (keyEvent.Key) - { - case Keys.Back: - case Keys.Escape: - if (!_ExitPopupVisible) - { - if (_PartyMode.GameData.CurrentRoundNr == 1) - _PartyMode.Back(); - else - _ShowPopup(true); - } - else - _ShowPopup(false); - break; - - case Keys.Enter: - if (!_ExitPopupVisible) - { - if (_Buttons[_ButtonNextRound].Selected) - _PartyMode.Next(); - if (_Buttons[_ButtonBack].Selected && _PartyMode.GameData.CurrentRoundNr == 1) - _PartyMode.Back(); - if (_Buttons[_ButtonExit].Selected && _PartyMode.GameData.CurrentRoundNr > 1) - _ShowPopup(true); - if (_Buttons[_ButtonPlayerScrollUp].Selected) - _ScrollPlayerTable(-1); - if (_Buttons[_ButtonPlayerScrollDown].Selected) - _ScrollPlayerTable(1); - if (_Buttons[_ButtonRoundsScrollUp].Selected) - _ScrollRoundsTable(-1); - if (_Buttons[_ButtonRoundsScrollDown].Selected) - _ScrollRoundsTable(1); - } - else - { - if (_Buttons[_ButtonPopupYes].Selected) - _EndParty(); - if (_Buttons[_ButtonPopupNo].Selected) - _ShowPopup(false); - } - break; - } - } - return true; - } - - public override bool HandleMouse(SMouseEvent mouseEvent) - { - base.HandleMouse(mouseEvent); - - if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent)) - { - if (!_ExitPopupVisible) - { - if (_Buttons[_ButtonNextRound].Selected) - _PartyMode.Next(); - if (_Buttons[_ButtonBack].Selected && _PartyMode.GameData.CurrentRoundNr == 1) - _PartyMode.Back(); - if (_Buttons[_ButtonExit].Selected && _PartyMode.GameData.CurrentRoundNr > 1) - _ShowPopup(true); - if (_Buttons[_ButtonPlayerScrollUp].Selected) - _ScrollPlayerTable(-1); - if (_Buttons[_ButtonPlayerScrollDown].Selected) - _ScrollPlayerTable(1); - if (_Buttons[_ButtonRoundsScrollUp].Selected) - _ScrollRoundsTable(-1); - if (_Buttons[_ButtonRoundsScrollDown].Selected) - _ScrollRoundsTable(1); - } - else - { - if (_Buttons[_ButtonPopupYes].Selected) - _EndParty(); - if (_Buttons[_ButtonPopupNo].Selected) - _ShowPopup(false); - } - } - - if (mouseEvent.RB) - { - if (!_ExitPopupVisible) - { - if (_PartyMode.GameData.CurrentRoundNr == 1) - _PartyMode.Back(); - else - _ShowPopup(true); - } - else - _ShowPopup(false); - } - - if (mouseEvent.Wheel != 0) - { - if (CHelper.IsInBounds(_RoundsTableScrollArea, mouseEvent)) - _ScrollRoundsTable(mouseEvent.Wheel); - if (CHelper.IsInBounds(_PlayerTableScrollArea, mouseEvent)) - _ScrollPlayerTable(mouseEvent.Wheel); - } - - return true; - } - - public override void OnShow() - { - base.OnShow(); - - _PlayerTableOffset = 0; - _RoundsTableOffset = 0; - - _UpdatePlayerTable(); - _UpdateNextPlayerPositions(); - _UpdateNextPlayerContents(); - if (_PartyMode.GameData.CurrentRoundNr == 1) - _BuildRoundsTable(); - else - _ScrollRoundsTable(_PartyMode.GameData.CurrentRoundNr - 2); - _UpdateRoundsTable(); - - if (_PartyMode.GameData.CurrentRoundNr == 1) - { - _Buttons[_ButtonBack].Visible = true; - _Buttons[_ButtonExit].Visible = false; - } - else - { - _Buttons[_ButtonBack].Visible = false; - _Buttons[_ButtonExit].Visible = true; - } - - if (_PartyMode.GameData.CurrentRoundNr <= _PartyMode.GameData.Rounds.Count) - { - _Buttons[_ButtonNextRound].Visible = true; - _Texts[_TextFinishMessage].Visible = false; - _Texts[_TextFinishPlayerWin].Visible = false; - _SelectElement(_Buttons[_ButtonNextRound]); - } - else - { - _Buttons[_ButtonNextRound].Visible = false; - _Texts[_TextFinishMessage].Visible = true; - _Texts[_TextFinishPlayerWin].Visible = true; - _Texts[_TextFinishPlayerWin].Text = _GetPlayerWinString(); - _SelectElement(_Buttons[_ButtonExit]); - } - - _ShowPopup(false); - } - - public override bool UpdateGame() - { - return true; - } - - private void _EndParty() - { - CBase.Graphics.FadeTo(EScreen.Party); - } - - private void _ShowPopup(bool visible) - { - _ExitPopupVisible = visible; - - _Statics[_StaticPopupBG].Visible = _ExitPopupVisible; - _Texts[_TextPopupReallyExit].Visible = _ExitPopupVisible; - _Buttons[_ButtonPopupYes].Visible = _ExitPopupVisible; - _Buttons[_ButtonPopupNo].Visible = _ExitPopupVisible; - - if (_ExitPopupVisible) - _SelectElement(_Buttons[_ButtonPopupNo]); - } - - private void _UpdateNextPlayerPositions() - { - float x = (float)CBase.Settings.GetRenderW() / 2 - - ((_PartyMode.GameData.NumPlayerAtOnce * _Statics[_StaticNextPlayer].Rect.W) + ((_PartyMode.GameData.NumPlayerAtOnce - 1) * 15)) / 2; - const float staticY = 590; - const float textY = 550; - for (int i = 0; i < _PartyMode.GameData.NumPlayerAtOnce; i++) - { - //static - _NextPlayerStatics[i].X = x; - _NextPlayerStatics[i].Y = staticY; - _NextPlayerStatics[i].Visible = true; - //text - _NextPlayerTexts[i].X = x + _Statics[_StaticNextPlayer].Rect.W / 2; - _NextPlayerTexts[i].Y = textY; - _NextPlayerTexts[i].Visible = true; - - x += _Statics[_StaticNextPlayer].Rect.W + 15; - } - for (int i = _PartyMode.GameData.NumPlayerAtOnce; i < _PartyMode.MaxPlayers; i++) - { - _NextPlayerStatics[i].Visible = false; - _NextPlayerTexts[i].Visible = false; - } - } - - private void _UpdateNextPlayerContents() - { - if (_PartyMode.GameData.CurrentRoundNr <= _PartyMode.GameData.Rounds.Count) - { - _Texts[_TextNextPlayerMessage].Visible = true; - for (int i = 0; i < _PartyMode.GameData.NumPlayerAtOnce; i++) - { - int id = _PartyMode.GameData.ProfileIDs[_PartyMode.GameData.Rounds[_PartyMode.GameData.CurrentRoundNr - 1].Players[i]]; - _NextPlayerStatics[i].Texture = CBase.Profiles.GetAvatar(id); - _NextPlayerTexts[i].Text = CBase.Profiles.GetPlayerName(id); - _NextPlayerTexts[i].Color = CBase.Themes.GetPlayerColor(i + 1); - } - } - else - { - _Texts[_TextNextPlayerMessage].Visible = false; - for (int i = 0; i < _PartyMode.GameData.NumPlayerAtOnce; i++) - { - _NextPlayerStatics[i].Visible = false; - _NextPlayerTexts[i].Visible = false; - } - } - } - - private void _CreateRoundsTable() - { - //Create lists - _RoundsTable = new List(); - for (int i = 0; i < 5; i++) - { - var rtr = new CRoundsTableRow {TextPlayer = new List(), TextScores = new List()}; - _RoundsTable.Add(rtr); - } - //Create statics and texts for rounds - foreach (CRoundsTableRow roundRow in _RoundsTable) - { - //Round-number - CText text = GetNewText(_Texts[_TextRoundNumber]); - _AddText(text); - roundRow.Number = text; - for (int row = 0; row < 2; row++) - { - for (int column = 0; column < 3; column++) - { - //Player - text = GetNewText(_Texts[_TextRoundPlayer]); - _AddText(text); - roundRow.TextPlayer.Add(text); - //Score - text = GetNewText(_Texts[_TextRoundScore]); - _AddText(text); - roundRow.TextScores.Add(text); - } - } - } - } - - private void _BuildRoundsTable() - { - _RoundsTableScrollArea = new SRectF(); - - const int numPlayerInOneRow = 3; - _NumRoundsVisible = _PartyMode.GameData.NumPlayerAtOnce <= numPlayerInOneRow ? 5 : 3; - - if (_NumRoundsVisible > _PartyMode.GameData.Rounds.Count) - _NumRoundsVisible = _PartyMode.GameData.Rounds.Count; - - float numberX = _Texts[_TextRoundNumber].X; - float numberY = _Texts[_TextRoundNumber].Y; - - _RoundsTableScrollArea.X = numberX; - _RoundsTableScrollArea.Y = numberY; - _RoundsTableScrollArea.W = CBase.Settings.GetRenderW() - _Texts[_TextRoundNumber].X - 20; - - float delta = _Texts[_TextRoundNumber].Rect.H; - - //Update statics and texts for rounds - foreach (CRoundsTableRow roundRow in _RoundsTable) - { - //Round-number - roundRow.Number.X = numberX; - roundRow.Number.Y = numberY; - var numInnerRows = (int)Math.Ceiling(_PartyMode.GameData.NumPlayerAtOnce / ((double)numPlayerInOneRow)); - for (int row = 0; row < numInnerRows; row++) - { - int num = (row + 1) * numPlayerInOneRow; - int numPlayerInThisRow = numPlayerInOneRow; - if (num > _PartyMode.GameData.NumPlayerAtOnce) - { - num = _PartyMode.GameData.NumPlayerAtOnce; - numPlayerInThisRow = _PartyMode.GameData.NumPlayerAtOnce - (row * numPlayerInOneRow); - } - for (int column = row * numPlayerInOneRow; column < num; column++) - { - //Player - float x = numberX + 15 + (CBase.Settings.GetRenderW() - _Texts[_TextRoundNumber].X - 20) / numPlayerInThisRow * (column - row * numPlayerInOneRow) + - ((CBase.Settings.GetRenderW() - _Texts[_TextRoundNumber].X - 20) / numPlayerInThisRow) / 2; - float maxw = ((CBase.Settings.GetRenderW() - _Texts[_TextRoundNumber].X - 20) / numPlayerInThisRow) / 2 - 5; - roundRow.TextPlayer[column].X = x; - roundRow.TextPlayer[column].Y = numberY; - roundRow.TextPlayer[column].W = maxw; - //Score - roundRow.TextScores[column].X = x; - roundRow.TextScores[column].Y = numberY + delta; - roundRow.TextScores[column].W = maxw; - } - numberY = numberY + 2 * delta; - } - numberY = numberY + delta / 2; - } - _RoundsTableScrollArea.H = numberY - _RoundsTableScrollArea.Y; - } - - private void _UpdateRoundsTable() - { - for (int i = 0; i < _RoundsTable.Count; i++) - { - for (int p = 0; p < _RoundsTable[i].TextPlayer.Count; p++) - { - if (_PartyMode.GameData.Rounds.Count > i + _RoundsTableOffset && _PartyMode.GameData.Rounds[i + _RoundsTableOffset].Players.Count > p) - { - _RoundsTable[i].Number.Visible = true; - _RoundsTable[i].TextPlayer[p].Visible = true; - _RoundsTable[i].TextScores[p].Visible = true; - _RoundsTable[i].Number.Text = (i + 1 + _RoundsTableOffset) + ")"; - _RoundsTable[i].TextPlayer[p].Text = - CBase.Profiles.GetPlayerName(_PartyMode.GameData.ProfileIDs[_PartyMode.GameData.Rounds[i + _RoundsTableOffset].Players[p]]); - // ReSharper disable ConvertIfStatementToConditionalTernaryExpression - if ((_PartyMode.GameData.CurrentRoundNr - 1) > i + _RoundsTableOffset) - // ReSharper restore ConvertIfStatementToConditionalTernaryExpression - _RoundsTable[i].TextScores[p].Text = _PartyMode.GameData.Results[i + _RoundsTableOffset, p].ToString(); - else - _RoundsTable[i].TextScores[p].Text = ""; - } - else - { - _RoundsTable[i].TextPlayer[p].Visible = false; - _RoundsTable[i].TextScores[p].Visible = false; - } - } - if (_PartyMode.GameData.Rounds.Count < i + _RoundsTableOffset || i + 1 > _NumRoundsVisible) - { - _RoundsTable[i].Number.Visible = false; - for (int p = 0; p < _RoundsTable[i].TextPlayer.Count; p++) - { - _RoundsTable[i].TextPlayer[p].Visible = false; - _RoundsTable[i].TextScores[p].Visible = false; - } - } - } - - _Buttons[_ButtonRoundsScrollUp].Visible = _RoundsTableOffset > 0; - _Buttons[_ButtonRoundsScrollDown].Visible = _PartyMode.GameData.Rounds.Count - _NumRoundsVisible - _RoundsTableOffset > 0; - } - - private void _BuildPlayerTable() - { - _PlayerTableScrollArea = new SRectF {X = _Texts[_TextPosition].X, Y = _Texts[_TextPosition].Y, W = _Texts[_TextGamePoints].X - _Texts[_TextPosition].X}; - - _PlayerTable = new List(); - float delta = _Texts[_TextPosition].Rect.H * 1.2f; - - float h = 0; - - for (int i = 0; i < 10; i++) - { - var row = new STableRow - { - Pos = GetNewText(_Texts[_TextPosition]), - Name = GetNewText(_Texts[_TextPlayerName]), - Rounds = GetNewText(_Texts[_TextNumPlayed]), - Won = GetNewText(_Texts[_TextWon]), - SingPoints = GetNewText(_Texts[_TextSingPoints]), - GamePoints = GetNewText(_Texts[_TextGamePoints]) - }; - - row.Pos.Y += delta * (i + 1); - row.Name.Y += delta * (i + 1); - row.Rounds.Y += delta * (i + 1); - row.Won.Y += delta * (i + 1); - row.SingPoints.Y += delta * (i + 1); - row.GamePoints.Y += delta * (i + 1); - - row.Pos.Text = (i + 1) + "."; - - row.Pos.Visible = false; - row.Name.Visible = false; - row.Rounds.Visible = false; - row.Won.Visible = false; - row.SingPoints.Visible = false; - row.GamePoints.Visible = false; - - _AddText(row.Pos); - _AddText(row.Name); - _AddText(row.Rounds); - _AddText(row.Won); - _AddText(row.SingPoints); - _AddText(row.GamePoints); - - _PlayerTable.Add(row); - - h = delta * (i + 1); - } - _PlayerTableScrollArea.H = h + delta; - } - - private void _UpdatePlayerTable() - { - for (int i = 0; i < _PlayerTable.Count; i++) - { - STableRow row = _PlayerTable[i]; - - if (i + _PlayerTableOffset < _PartyMode.GameData.ResultTable.Count) - { - row.Pos.Visible = true; - row.Name.Visible = true; - row.Rounds.Visible = true; - row.Won.Visible = true; - row.SingPoints.Visible = true; - row.GamePoints.Visible = true; - - row.Pos.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].Position + "."; - row.Name.Text = CBase.Profiles.GetPlayerName(_PartyMode.GameData.ResultTable[i + _PlayerTableOffset].PlayerID); - row.Rounds.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumPlayed.ToString(); - row.Won.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumWon.ToString(); - row.SingPoints.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumSingPoints.ToString(); - row.GamePoints.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumGamePoints.ToString(); - } - else - { - row.Pos.Visible = false; - row.Name.Visible = false; - row.Rounds.Visible = false; - row.Won.Visible = false; - row.SingPoints.Visible = false; - row.GamePoints.Visible = false; - } - } - - _Buttons[_ButtonPlayerScrollUp].Visible = _PlayerTableOffset > 0; - _Buttons[_ButtonPlayerScrollDown].Visible = _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible - _PlayerTableOffset > 0; - } - - private void _ScrollPlayerTable(int offset) - { - if (_PartyMode.GameData.ProfileIDs.Count <= _NumPlayerVisible) - _PlayerTableOffset = 0; - else if (offset < 0 && _PlayerTableOffset + offset >= 0) - _PlayerTableOffset += offset; - else if (offset < 0 && _PlayerTableOffset + offset < 0) - _PlayerTableOffset = 0; - else if (offset > 0 && _PlayerTableOffset + offset <= _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible) - _PlayerTableOffset += offset; - else if (offset > 0 && _PlayerTableOffset + offset > _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible) - _PlayerTableOffset = _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible; - - _UpdatePlayerTable(); - } - - private void _ScrollRoundsTable(int offset) - { - if (_PartyMode.GameData.Rounds.Count <= _NumRoundsVisible) - _RoundsTableOffset = 0; - else if (offset < 0 && _RoundsTableOffset + offset >= 0) - _RoundsTableOffset += offset; - else if (offset < 0 && _RoundsTableOffset + offset < 0) - _RoundsTableOffset = 0; - else if (offset > 0 && _RoundsTableOffset + offset <= _PartyMode.GameData.Rounds.Count - _NumRoundsVisible) - _RoundsTableOffset += offset; - else if (offset > 0 && _RoundsTableOffset + offset > _PartyMode.GameData.Rounds.Count - _NumRoundsVisible) - _RoundsTableOffset = _PartyMode.GameData.Rounds.Count - _NumRoundsVisible; - - _UpdateRoundsTable(); - } - - private string _GetPlayerWinString() - { - string s = ""; - - for (int i = 0; i < _PartyMode.GameData.ResultTable.Count; i++) - { - if (_PartyMode.GameData.ResultTable[i].Position == 1) - { - if (i > 0) - s += ", "; - s += CBase.Profiles.GetPlayerName(_PartyMode.GameData.ResultTable[i].PlayerID); - } - else - break; - } - - return s; - } - } -} \ No newline at end of file diff --git a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs deleted file mode 100644 index a95bfc53..00000000 --- a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs +++ /dev/null @@ -1,68 +0,0 @@ -#region license -// This file is part of Vocaluxe. -// -// Vocaluxe is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Vocaluxe is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Vocaluxe. If not, see . -#endregion - -using System.Collections.Generic; -using VocaluxeLib.Menu; - -namespace VocaluxeLib.PartyModes.ChallengeMedley -{ - // ReSharper disable UnusedMember.Global - public class CPartyScreenChallengeMedleyNames : CMenuPartyNameSelection - // ReSharper restore UnusedMember.Global - { - // Version number for theme files. Increment it, if you've changed something on the theme files! - protected override int _ScreenVersion - { - get { return 1; } - } - - private new CPartyModeChallengeMedley _PartyMode; - - public override void Init() - { - base.Init(); - _PartyMode = (CPartyModeChallengeMedley)base._PartyMode; - _AllowChangePlayerNum = false; - _Teams = false; - } - - public override void OnShow() - { - base.OnShow(); - SetPartyModeData(_PartyMode.GameData.NumPlayer); - while (_PartyMode.GameData.ProfileIDs.Count > _NumPlayer) - _PartyMode.GameData.ProfileIDs.RemoveAt(_PartyMode.GameData.ProfileIDs.Count - 1); - - List[] ids = new List[] {_PartyMode.GameData.ProfileIDs}; - SetPartyModeProfiles(ids); - } - - public override void Back() - { - if (_TeamList.Length == 1) - _PartyMode.GameData.ProfileIDs = _TeamList[0]; - _PartyMode.Back(); - } - - public override void Next() - { - if (_TeamList.Length == 1) - _PartyMode.GameData.ProfileIDs = _TeamList[0]; - _PartyMode.Next(); - } - } -} \ No newline at end of file diff --git a/PartyModes/PartyModeChallengeMedley/GlobalSuppressions.cs b/PartyModes/PartyModeChallengeMedley/GlobalSuppressions.cs deleted file mode 100644 index e661ff03..00000000 Binary files a/PartyModes/PartyModeChallengeMedley/GlobalSuppressions.cs and /dev/null differ diff --git a/PartyModes/PartyModeChallengeMedley/PartyModeChallengeMedley.csproj b/PartyModes/PartyModeChallengeMedley/PartyModeChallengeMedley.csproj deleted file mode 100644 index d4ddbb68..00000000 --- a/PartyModes/PartyModeChallengeMedley/PartyModeChallengeMedley.csproj +++ /dev/null @@ -1,112 +0,0 @@ - - - - DebugWin - AnyCPU - 8.0.30703 - 2.0 - {6F3E1874-F28A-40E9-AFBD-31934D593678} - Library - Properties - VocaluxeLib.PartyModes.ChallengeMedley - ChallengeMedley - v4.0 - Client - 512 - - - AnyCPU - true - full - false - bin - TRACE;DEBUG;WIN - prompt - 4 - Off - ..\..\CheckingRules.ruleset - - - AnyCPU - none - true - bin - prompt - 4 - false - WIN - Off - - - AnyCPU - true - full - false - bin - TRACE;DEBUG;LINUX - prompt - 4 - Off - - - AnyCPU - none - true - bin - prompt - 4 - false - LINUX - Off - - - bin - WIN - true - AnyCPU - false - Off - prompt - ManagedMinimumRules.ruleset - - - - - - - - - - - - {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC} - VocaluxeLib - False - - - - - - - - - - - - if exist "$(SolutionDir)Output\PartyModes\$(TargetName)\Code" rd "$(SolutionDir)Output\PartyModes\$(TargetName)\Code" /S /Q -cd $(SolutionDir)Partymodes\ -xcopy "$(ProjectDir)*.cs" "$(SolutionDir)Output\PartyModes\$(TargetName)\Code\" /EXCLUDE:Excludes.txt /I /Y - rm -rf "$(SolutionDir)Output\PartyModes\$(TargetName)\Code" -mkdir -p "$(SolutionDir)Output\PartyModes\$(TargetName)\Code\" -cp -R $(ProjectDir)*.cs "$(SolutionDir)Output\PartyModes\$(TargetName)\Code\" -rm -f "$(SolutionDir)Output\PartyModes\$(TargetName)\Code\GlobalSuppressions.cs" - - - - diff --git a/PartyModes/PartyModeChallengeMedley/Settings.StyleCop b/PartyModes/PartyModeChallengeMedley/Settings.StyleCop deleted file mode 100644 index 72ed49f9..00000000 --- a/PartyModes/PartyModeChallengeMedley/Settings.StyleCop +++ /dev/null @@ -1,809 +0,0 @@ - - - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - False - - - - - - - \ No newline at end of file diff --git a/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs b/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs index 636e3cfe..fa99918c 100644 --- a/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs +++ b/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs @@ -27,18 +27,9 @@ using VocaluxeLib.Songs; namespace VocaluxeLib.PartyModes.TicTacToe { - public enum ESongSource - { - // ReSharper disable InconsistentNaming - TR_ALLSONGS, - TR_CATEGORY, - TR_PLAYLIST - // ReSharper restore InconsistentNaming - } - public class CRound { - public int SongID; + public int[] SongIDs; public int SingerTeam1; public int SingerTeam2; public int PointsTeam1; @@ -101,6 +92,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe private enum EStage { Config, + Songs, Names, Main, Singing @@ -118,10 +110,12 @@ namespace VocaluxeLib.PartyModes.TicTacToe public List PlayerTeam2; public ESongSource SongSource; + public ESongSorting Sorting; public int CategoryIndex; public int PlaylistID; - public int GameMode; + public EGameMode GameMode; + public int NumMedleySongs; public List Rounds; public List Songs; @@ -131,6 +125,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe public int[] NumJokerRandom; public int[] NumJokerRetry; + public EOffOn RefillJokers; } public SData GameData; @@ -159,14 +154,17 @@ namespace VocaluxeLib.PartyModes.TicTacToe PlayerTeam2 = new List(), CurrentRoundNr = 0, FieldNr = 0, - SongSource = ESongSource.TR_ALLSONGS, + Sorting = CBase.Config.GetSongSorting(), + SongSource = ESongSource.TR_SONGSOURCE_ALLSONGS, PlaylistID = 0, CategoryIndex = 0, - GameMode = 0, + GameMode = EGameMode.TR_GAMEMODE_NORMAL, + NumMedleySongs = 5, Rounds = new List(), Songs = new List(), NumJokerRandom = new int[2], - NumJokerRetry = new int[2] + NumJokerRetry = new int[2], + RefillJokers = EOffOn.TR_CONFIG_OFF }; } @@ -212,6 +210,8 @@ namespace VocaluxeLib.PartyModes.TicTacToe { case EStage.Config: return _Screens["CPartyScreenTicTacToeConfig"]; + case EStage.Songs: + return _Screens["CPartyScreenTicTacToeSongs"]; case EStage.Names: return _Screens["CPartyScreenTicTacToeNames"]; case EStage.Main: @@ -234,6 +234,9 @@ namespace VocaluxeLib.PartyModes.TicTacToe switch (_Stage) { case EStage.Config: + _Stage = EStage.Songs; + break; + case EStage.Songs: _Stage = EStage.Names; break; case EStage.Names: @@ -253,6 +256,8 @@ namespace VocaluxeLib.PartyModes.TicTacToe _Stage = EStage.Main; GameData.Team = GameData.Team == 1 ? 0 : 1; _UpdatePlayerList(); + if (GameData.RefillJokers == EOffOn.TR_CONFIG_ON) + _SetNumJokers(); break; default: throw new ArgumentException("Invalid stage: " + _Stage); @@ -267,9 +272,12 @@ namespace VocaluxeLib.PartyModes.TicTacToe case EStage.Config: CBase.Graphics.FadeTo(EScreen.Party); return; - case EStage.Names: + case EStage.Songs: _Stage = EStage.Config; break; + case EStage.Names: + _Stage = EStage.Songs; + break; case EStage.Main: _Stage = EStage.Names; break; @@ -430,24 +438,25 @@ namespace VocaluxeLib.PartyModes.TicTacToe switch (GameData.SongSource) { - case ESongSource.TR_PLAYLIST: + case ESongSource.TR_SONGSOURCE_PLAYLIST: for (int i = 0; i < CBase.Playlist.GetSongCount(GameData.PlaylistID); i++) { int id = CBase.Playlist.GetSong(GameData.PlaylistID, i).SongID; - if (CBase.Songs.GetSongByID(id).AvailableGameModes.Contains(AvailableGameModes[GameData.GameMode])) + if (CBase.Songs.GetSongByID(id).AvailableGameModes.Contains(GameData.GameMode)) GameData.Songs.Add(id); } break; - case ESongSource.TR_ALLSONGS: + case ESongSource.TR_SONGSOURCE_ALLSONGS: ReadOnlyCollection avSongs = CBase.Songs.GetSongs(); - GameData.Songs.AddRange(avSongs.Where(song => song.AvailableGameModes.Contains(AvailableGameModes[GameData.GameMode])).Select(song => song.ID)); + GameData.Songs.AddRange(avSongs.Where(song => song.AvailableGameModes.Contains(GameData.GameMode)).Select(song => song.ID)); break; - case ESongSource.TR_CATEGORY: + case ESongSource.TR_SONGSOURCE_CATEGORY: + CBase.Songs.SortSongs(GameData.Sorting, EOffOn.TR_CONFIG_ON, CBase.Config.GetIgnoreArticles(), "", EDuetOptions.All, -1); CBase.Songs.SetCategory(GameData.CategoryIndex); avSongs = CBase.Songs.GetVisibleSongs(); - GameData.Songs.AddRange(avSongs.Where(song => song.AvailableGameModes.Contains(AvailableGameModes[GameData.GameMode])).Select(song => song.ID)); + GameData.Songs.AddRange(avSongs.Where(song => song.AvailableGameModes.Contains(GameData.GameMode)).Select(song => song.ID)); CBase.Songs.SetCategory(-1); break; @@ -478,7 +487,6 @@ namespace VocaluxeLib.PartyModes.TicTacToe return; CRound round = GameData.Rounds[roundNr]; - bool isDuet = CBase.Songs.GetSongByID(round.SongID).IsDuet; for (int i = 0; i < 2; i++) { @@ -488,14 +496,10 @@ namespace VocaluxeLib.PartyModes.TicTacToe //try to fill with the right data players[0].ProfileID = GameData.ProfileIDsTeam1[round.SingerTeam1]; - if (isDuet) - players[0].VoiceNr = 0; - players[1].ProfileID = GameData.ProfileIDsTeam2[round.SingerTeam2]; - if (isDuet) - players[1].VoiceNr = 1; - CBase.Game.AddSong(round.SongID, AvailableGameModes[GameData.GameMode]); + foreach(int song in round.SongIDs) + CBase.Game.AddSong(song, GameData.GameMode); } private void _SetNumJokers() diff --git a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeConfig.cs b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeConfig.cs index feeda81b..640fffbf 100644 --- a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeConfig.cs +++ b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeConfig.cs @@ -15,6 +15,7 @@ // along with Vocaluxe. If not, see . #endregion +using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; @@ -30,14 +31,12 @@ namespace VocaluxeLib.PartyModes.TicTacToe // Version number for theme files. Increment it, if you've changed something on the theme files! protected override int _ScreenVersion { - get { return 1; } + get { return 2; } } private const string _SelectSlideNumFields = "SelectSlideNumFields"; - private const string _SelectSlideSongSource = "SelectSlideSongSource"; - private const string _SelectSlidePlaylist = "SelectSlidePlaylist"; - private const string _SelectSlideCategory = "SelectSlideCategory"; - private const string _SelectSlideGameMode = "SelectSlideGameMode"; + private const string _SelectSlideRefillJokers = "SelectSlideRefillJokers"; + private const string _ButtonNext = "ButtonNext"; private const string _ButtonBack = "ButtonBack"; @@ -47,10 +46,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe { base.Init(); - _ThemeSelectSlides = new string[] - { - _SelectSlideNumFields, _SelectSlideSongSource, _SelectSlidePlaylist, _SelectSlideCategory, _SelectSlideGameMode - }; + _ThemeSelectSlides = new string[] { _SelectSlideNumFields }; _ThemeButtons = new string[] {_ButtonNext, _ButtonBack}; } @@ -135,102 +131,14 @@ namespace VocaluxeLib.PartyModes.TicTacToe _SelectSlides[_SelectSlideNumFields].SelectedTag = _PartyMode.GameData.NumFields; - _SelectSlides[_SelectSlideSongSource].Clear(); - _SelectSlides[_SelectSlideSongSource].SetValues((int)_PartyMode.GameData.SongSource); - - List playlists = CBase.Playlist.GetNames(); - _SelectSlides[_SelectSlidePlaylist].Clear(); - for (int i = 0; i < playlists.Count; i++) - { - string value = playlists[i] + " (" + CBase.Playlist.GetSongCount(i) + " " + CBase.Language.Translate("TR_SONGS", PartyModeID) + ")"; - _SelectSlides[_SelectSlidePlaylist].AddValue(value); - } - _SelectSlides[_SelectSlidePlaylist].Selection = _PartyMode.GameData.PlaylistID; - _SelectSlides[_SelectSlidePlaylist].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_PLAYLIST; - - _SelectSlides[_SelectSlideCategory].Clear(); - for (int i = 0; i < CBase.Songs.GetNumCategories(); i++) - { - CCategory cat = CBase.Songs.GetCategory(i); - string value = cat.Name + " (" + cat.GetNumSongsNotSung() + " " + CBase.Language.Translate("TR_SONGS", PartyModeID) + ")"; - _SelectSlides[_SelectSlideCategory].AddValue(value); - } - _SelectSlides[_SelectSlideCategory].Selection = _PartyMode.GameData.CategoryIndex; - _SelectSlides[_SelectSlideCategory].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_CATEGORY; - - _SelectSlides[_SelectSlideGameMode].Visible = true; - _SelectSlides[_SelectSlideGameMode].Clear(); - _SelectSlides[_SelectSlideGameMode].AddValues(_PartyMode.AvailableGameModes.Select(gm => gm.ToString())); - _SelectSlides[_SelectSlideGameMode].Selection = _PartyMode.GameData.GameMode; + _SelectSlides[_SelectSlideRefillJokers].AddValues(Enum.GetNames(typeof(EOffOn))); + _SelectSlides[_SelectSlideRefillJokers].Selection = (int)_PartyMode.GameData.RefillJokers; } private void _UpdateSlides() { _PartyMode.GameData.NumFields = _SelectSlides[_SelectSlideNumFields].SelectedTag; - - _PartyMode.GameData.SongSource = (ESongSource)_SelectSlides[_SelectSlideSongSource].Selection; - _PartyMode.GameData.PlaylistID = _SelectSlides[_SelectSlidePlaylist].Selection; - _PartyMode.GameData.CategoryIndex = _SelectSlides[_SelectSlideCategory].Selection; - _PartyMode.GameData.GameMode = _SelectSlides[_SelectSlideGameMode].Selection; - - EGameMode gm = _PartyMode.AvailableGameModes[_PartyMode.GameData.GameMode]; - - if (_PartyMode.GameData.SongSource == ESongSource.TR_PLAYLIST) - { - if (CBase.Playlist.GetNumPlaylists() > 0) - { - if (CBase.Playlist.GetSongCount(_PartyMode.GameData.PlaylistID) > 0) - { - _ConfigOk = false; - for (int i = 0; i < CBase.Playlist.GetSongCount(_PartyMode.GameData.PlaylistID); i++) - { - int id = CBase.Playlist.GetSong(_PartyMode.GameData.PlaylistID, i).SongID; - _ConfigOk = CBase.Songs.GetSongByID(id).AvailableGameModes.Any(mode => mode == gm); - if (_ConfigOk) - break; - } - } - else - _ConfigOk = false; - } - else - _ConfigOk = false; - } - if (_PartyMode.GameData.SongSource == ESongSource.TR_CATEGORY) - { - if (CBase.Songs.GetNumCategories() == 0) - _ConfigOk = false; - else if (CBase.Songs.GetNumSongsNotSungInCategory(_PartyMode.GameData.CategoryIndex) <= 0) - _ConfigOk = false; - else - { - CBase.Songs.SetCategory(_PartyMode.GameData.CategoryIndex); - _ConfigOk = false; - foreach (CSong song in CBase.Songs.GetVisibleSongs()) - { - _ConfigOk = song.AvailableGameModes.Any(mode => mode == gm); - if (_ConfigOk) - break; - } - CBase.Songs.SetCategory(-1); - } - } - if (_PartyMode.GameData.SongSource == ESongSource.TR_ALLSONGS) - { - if (CBase.Songs.GetNumSongs() > 0) - { - for (int i = 0; i < CBase.Songs.GetNumSongs(); i++) - { - _ConfigOk = CBase.Songs.GetSongByID(i).AvailableGameModes.Any(mode => mode == gm); - if (_ConfigOk) - break; - } - } - else - _ConfigOk = false; - } - _SelectSlides[_SelectSlideCategory].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_CATEGORY; - _SelectSlides[_SelectSlidePlaylist].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_PLAYLIST; + _PartyMode.GameData.RefillJokers = (EOffOn)_SelectSlides[_SelectSlideRefillJokers].Selection; } } } \ No newline at end of file diff --git a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeMain.cs b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeMain.cs index 35f45351..6f7eab3c 100644 --- a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeMain.cs +++ b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeMain.cs @@ -394,13 +394,13 @@ namespace VocaluxeLib.PartyModes.TicTacToe if (_PartyMode.GameData.Rounds[i].Finished) { _Fields[i].Selectable = false; - _Fields[i].Texture = CBase.Songs.GetSongByID(_PartyMode.GameData.Rounds[i].SongID).CoverTextureBig; + _Fields[i].Texture = CBase.Songs.GetSongByID(_PartyMode.GameData.Rounds[i].SongIDs[0]).CoverTextureBig; _Fields[i].Color = CBase.Themes.GetPlayerColor(_PartyMode.GameData.Rounds[i].Winner); _Fields[i].SelColor = CBase.Themes.GetPlayerColor(_PartyMode.GameData.Rounds[i].Winner); } if (_Status == EStatus.FieldSelected && _PartyMode.GameData.FieldNr == i) { - _Fields[i].Texture = CBase.Songs.GetSongByID(_PartyMode.GameData.Rounds[i].SongID).CoverTextureBig; + _Fields[i].Texture = CBase.Songs.GetSongByID(_PartyMode.GameData.Rounds[i].SongIDs[0]).CoverTextureBig; _Fields[i].Color = new SColorF(1, 1, 1, 1); _Fields[i].SelColor = new SColorF(1, 1, 1, 1); _Fields[i].Selectable = false; @@ -441,12 +441,16 @@ namespace VocaluxeLib.PartyModes.TicTacToe _UpdatePlayerInformation(); } _PartyMode.UpdateSongList(); - int songID = _PartyMode.GameData.Songs[0]; - _PartyMode.GameData.Songs.RemoveAt(0); + int[] songIDs = new int[_PartyMode.GameData.GameMode == EGameMode.TR_GAMEMODE_MEDLEY ? _PartyMode.GameData.NumMedleySongs : 1]; + for(int i = 0; i < songIDs.Length; i++) + { + songIDs[i] = _PartyMode.GameData.Songs[0]; + _PartyMode.GameData.Songs.RemoveAt(0); + } - _StartPreview(songID); + _StartPreview(songIDs[0]); _Status = EStatus.FieldSelected; - _PartyMode.GameData.Rounds[_PartyMode.GameData.FieldNr].SongID = songID; + _PartyMode.GameData.Rounds[_PartyMode.GameData.FieldNr].SongIDs = songIDs; _UpdateFieldContents(); _UpdateJokerButtons(); @@ -459,10 +463,10 @@ namespace VocaluxeLib.PartyModes.TicTacToe private void _FieldSelectedAgain() { - int songID = _PartyMode.GameData.Rounds[_OldSelectedField].SongID; - _StartPreview(songID); + int[] songIDs = _PartyMode.GameData.Rounds[_OldSelectedField].SongIDs; + _StartPreview(songIDs[0]); _Status = EStatus.FieldSelected; - _PartyMode.GameData.Rounds[_PartyMode.GameData.FieldNr].SongID = songID; + _PartyMode.GameData.Rounds[_PartyMode.GameData.FieldNr].SongIDs = songIDs; _PartyMode.GameData.Rounds[_PartyMode.GameData.FieldNr].SingerTeam1 = _PartyMode.GameData.Rounds[_OldSelectedField].SingerTeam1; _PartyMode.GameData.Rounds[_PartyMode.GameData.FieldNr].SingerTeam2 = _PartyMode.GameData.Rounds[_OldSelectedField].SingerTeam2; _UpdateFieldContents(); diff --git a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeSongs.cs b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeSongs.cs new file mode 100644 index 00000000..a899cc61 --- /dev/null +++ b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeSongs.cs @@ -0,0 +1,84 @@ +#region license +// This file is part of Vocaluxe. +// +// Vocaluxe is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Vocaluxe is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Vocaluxe. If not, see . +#endregion + +using System.Collections.Generic; +using VocaluxeLib.Menu; + +namespace VocaluxeLib.PartyModes.TicTacToe +{ + class CPartyScreenTicTacToeSongs : CMenuPartySongSelection + { + protected override int _ScreenVersion + { + get { return 1; } + } + + private new CPartyModeTicTacToe _PartyMode; + + public override void Init() + { + base.Init(); + _PartyMode = (CPartyModeTicTacToe)base._PartyMode; + } + + public override void OnShow() + { + Source = _PartyMode.GameData.SongSource; + Sorting = _PartyMode.GameData.Sorting; + Category = _PartyMode.GameData.CategoryIndex; + Playlist = _PartyMode.GameData.PlaylistID; + SongMode = _PartyMode.GameData.GameMode; + NumMedleySongs = _PartyMode.GameData.NumMedleySongs; + + base.OnShow(); + } + + public override void Back() + { + _SaveConfig(); + _PartyMode.Back(); + } + + public override void Next() + { + _SaveConfig(); + _PartyMode.Next(); + } + + public override bool UpdateGame() + { + return true; + } + + protected override void _SetAllowedOptions() + { + base._SetAllowedOptions(); + + AllowedSongModes = new EGameMode[] { EGameMode.TR_GAMEMODE_NORMAL, EGameMode.TR_GAMEMODE_SHORTSONG, EGameMode.TR_GAMEMODE_MEDLEY }; + } + + private void _SaveConfig() + { + _PartyMode.GameData.SongSource = Source; + _PartyMode.GameData.Sorting = Sorting; + _PartyMode.GameData.CategoryIndex = Category; + _PartyMode.GameData.PlaylistID = Playlist; + _PartyMode.GameData.GameMode = SongMode; + _PartyMode.GameData.NumMedleySongs = NumMedleySongs; + } + } +} diff --git a/PartyModes/PartyModeTicTacToe/PartyModeTicTacToe.csproj b/PartyModes/PartyModeTicTacToe/PartyModeTicTacToe.csproj index 599cfeec..2c6f46d4 100644 --- a/PartyModes/PartyModeTicTacToe/PartyModeTicTacToe.csproj +++ b/PartyModes/PartyModeTicTacToe/PartyModeTicTacToe.csproj @@ -70,6 +70,7 @@ ManagedMinimumRules.ruleset + @@ -108,4 +109,4 @@ rm -f "$(SolutionDir)Output\PartyModes\$(TargetName)\Code\GlobalSuppressions.cs" --> - + \ No newline at end of file diff --git a/Vocaluxe.sln b/Vocaluxe.sln index 3a32f864..a9b3384d 100644 --- a/Vocaluxe.sln +++ b/Vocaluxe.sln @@ -1,10 +1,10 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -VisualStudioVersion = 12.0.31101.0 +# Visual Studio 15 +VisualStudioVersion = 15.0.26730.10 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Vocaluxe", "Vocaluxe\Vocaluxe.csproj", "{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}" ProjectSection(ProjectDependencies) = postProject {55F89808-4E79-4FFE-BC13-48258913F5C9} = {55F89808-4E79-4FFE-BC13-48258913F5C9} - {6F3E1874-F28A-40E9-AFBD-31934D593678} = {6F3E1874-F28A-40E9-AFBD-31934D593678} {6F3E1874-F28A-40E9-AFBD-31934D593679} = {6F3E1874-F28A-40E9-AFBD-31934D593679} {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC} = {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC} {5A4053F1-5AD5-441F-B254-D97A088127B6} = {5A4053F1-5AD5-441F-B254-D97A088127B6} @@ -17,8 +17,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PartyModeTicTacToe", "Party EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PartyModeChallenge", "PartyModes\PartyModeChallenge\PartyModeChallenge.csproj", "{5A4053F1-5AD5-441F-B254-D97A088127B6}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PartyModeChallengeMedley", "PartyModes\PartyModeChallengeMedley\PartyModeChallengeMedley.csproj", "{6F3E1874-F28A-40E9-AFBD-31934D593678}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebserverInitalConfig", "WebserverInitalConfig\WebserverInitalConfig.csproj", "{55F89808-4E79-4FFE-BC13-48258913F5C9}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PitchTracker", "PitchTracker\PitchTracker.vcxproj", "{54A48AF7-515C-4EDD-B395-2BFFA096050A}" @@ -124,26 +122,6 @@ Global {5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseWin|x64.Build.0 = ReleaseWin|Any CPU {5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseWin|x86.ActiveCfg = ReleaseWin|Any CPU {5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseWin|x86.Build.0 = ReleaseWin|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.DebugLinux|x64.ActiveCfg = DebugLinux|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.DebugLinux|x64.Build.0 = DebugLinux|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.DebugLinux|x86.ActiveCfg = DebugLinux|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.DebugLinux|x86.Build.0 = DebugLinux|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.DebugWin|x64.ActiveCfg = DebugWin|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.DebugWin|x64.Build.0 = DebugWin|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.DebugWin|x86.ActiveCfg = DebugWin|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.DebugWin|x86.Build.0 = DebugWin|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.InstallerWin|x64.ActiveCfg = InstallerWin|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.InstallerWin|x64.Build.0 = InstallerWin|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.InstallerWin|x86.ActiveCfg = InstallerWin|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.InstallerWin|x86.Build.0 = InstallerWin|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.ReleaseLinux|x64.ActiveCfg = ReleaseLinux|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.ReleaseLinux|x64.Build.0 = ReleaseLinux|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.ReleaseLinux|x86.ActiveCfg = ReleaseLinux|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.ReleaseLinux|x86.Build.0 = ReleaseLinux|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.ReleaseWin|x64.ActiveCfg = ReleaseWin|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.ReleaseWin|x64.Build.0 = ReleaseWin|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.ReleaseWin|x86.ActiveCfg = ReleaseWin|Any CPU - {6F3E1874-F28A-40E9-AFBD-31934D593678}.ReleaseWin|x86.Build.0 = ReleaseWin|Any CPU {55F89808-4E79-4FFE-BC13-48258913F5C9}.DebugLinux|x64.ActiveCfg = Debug|Any CPU {55F89808-4E79-4FFE-BC13-48258913F5C9}.DebugLinux|x86.ActiveCfg = Debug|Any CPU {55F89808-4E79-4FFE-BC13-48258913F5C9}.DebugWin|x64.ActiveCfg = Debug|Any CPU @@ -204,4 +182,7 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {5545CBA7-F7A7-4E72-B230-F6A6C3AD0A09} + EndGlobalSection EndGlobal diff --git a/Vocaluxe/Base/CConfig.cs b/Vocaluxe/Base/CConfig.cs index 3cc7d685..f39398f9 100644 --- a/Vocaluxe/Base/CConfig.cs +++ b/Vocaluxe/Base/CConfig.cs @@ -186,7 +186,6 @@ namespace Vocaluxe.Base } public static SConfig Config; - public static bool LoadOldThemeFiles; public static event OnSongMenuChanged SongMenuChanged; //Folders @@ -705,11 +704,6 @@ namespace Vocaluxe.Base ProfileFolders.Clear(); ProfileFolders.Add(value); break; - - case "oldtheme": - if (value == "yes") - LoadOldThemeFiles = true; - break; } } } diff --git a/Vocaluxe/Base/CMain.cs b/Vocaluxe/Base/CMain.cs index 3a131649..dc0167dc 100644 --- a/Vocaluxe/Base/CMain.cs +++ b/Vocaluxe/Base/CMain.cs @@ -156,11 +156,6 @@ namespace Vocaluxe.Base return CConfig.GetMaxNumMics(); } - public bool GetLoadOldThemeFiles() - { - return CConfig.LoadOldThemeFiles; - } - public void AddSongMenuListener(OnSongMenuChanged onSongMenuChanged) { CConfig.SongMenuChanged += onSongMenuChanged; @@ -782,9 +777,9 @@ namespace Vocaluxe.Base CSongs.ResetPartySongSung(catIndex); } - public void SortSongs(ESongSorting sorting, EOffOn tabs, EOffOn ignoreArticles, String searchString, EDuetOptions duetOptions) + public void SortSongs(ESongSorting sorting, EOffOn tabs, EOffOn ignoreArticles, String searchString, EDuetOptions duetOptions, int playlistID) { - CSongs.Sort(sorting, tabs, ignoreArticles, searchString, duetOptions); + CSongs.Sort(sorting, tabs, ignoreArticles, searchString, duetOptions, playlistID); } public void NextCategory() @@ -1014,5 +1009,10 @@ namespace Vocaluxe.Base { return CPlaylists.GetSong(playlistID, songIndex); } + + public bool ContainsSong(int playlistID, int songID) + { + return CPlaylists.ContainsSong(playlistID, songID); + } } } \ No newline at end of file diff --git a/Vocaluxe/Base/CPlaylists.cs b/Vocaluxe/Base/CPlaylists.cs index 9cc3201a..881d3ccb 100644 --- a/Vocaluxe/Base/CPlaylists.cs +++ b/Vocaluxe/Base/CPlaylists.cs @@ -204,6 +204,12 @@ namespace Vocaluxe.Base return pl.Songs[songIndex]; } + public static bool ContainsSong(int playlistID, int songID) + { + CPlaylistFile pl = Get(playlistID); + return pl != null && pl.Songs.Find((x) => x.SongID == songID) != null; + } + #region private methods private static void _SortByName() { diff --git a/Vocaluxe/Base/CSongFilter.cs b/Vocaluxe/Base/CSongFilter.cs index 4c4f014e..20596803 100644 --- a/Vocaluxe/Base/CSongFilter.cs +++ b/Vocaluxe/Base/CSongFilter.cs @@ -29,6 +29,7 @@ namespace Vocaluxe.Base private String _SearchString = String.Empty; private EDuetOptions _DuetOptions = EDuetOptions.All; + private int _PlaylistID = -1; public List FilteredSongs { @@ -67,10 +68,16 @@ namespace Vocaluxe.Base public void SetOptions(String searchString, EDuetOptions duetOptions) { - if (searchString != _SearchString || duetOptions != _DuetOptions) + SetOptions(searchString, duetOptions, -1); + } + + public void SetOptions(String searchString, EDuetOptions duetOptions, int playlistID) + { + if (searchString != _SearchString || duetOptions != _DuetOptions || playlistID != _PlaylistID) { _SearchString = searchString; _DuetOptions = duetOptions; + _PlaylistID = playlistID; _SetChanged(); } } @@ -88,6 +95,9 @@ namespace Vocaluxe.Base foreach (CSong song in CSongs.Songs) { + if (_PlaylistID != -1 && !CBase.Playlist.ContainsSong(_PlaylistID, song.ID)) + continue; + if ((song.IsDuet && _DuetOptions != EDuetOptions.NoDuets) || (!song.IsDuet && _DuetOptions != EDuetOptions.Duets)) { if (searchStrings == null) diff --git a/Vocaluxe/Base/CSongs.cs b/Vocaluxe/Base/CSongs.cs index 3216d620..ce0fbb66 100644 --- a/Vocaluxe/Base/CSongs.cs +++ b/Vocaluxe/Base/CSongs.cs @@ -324,9 +324,9 @@ namespace Vocaluxe.Base _CategoriesForRandom.Clear(); } - public static void Sort(ESongSorting sorting, EOffOn tabs, EOffOn ignoreArticles, String searchString, EDuetOptions duetOptions) + public static void Sort(ESongSorting sorting, EOffOn tabs, EOffOn ignoreArticles, String searchString, EDuetOptions duetOptions, int playlistID) { - Filter.SetOptions(searchString, duetOptions); + Filter.SetOptions(searchString, duetOptions, playlistID); Sorter.SetOptions(sorting, ignoreArticles); Categorizer.Tabs = tabs; } diff --git a/Vocaluxe/Screens/CScreenSong.cs b/Vocaluxe/Screens/CScreenSong.cs index ad8c73d0..6d2d8be6 100644 --- a/Vocaluxe/Screens/CScreenSong.cs +++ b/Vocaluxe/Screens/CScreenSong.cs @@ -643,7 +643,12 @@ namespace Vocaluxe.Screens _SelectedCategoryIndex = -2; _Sso = CParty.GetSongSelectionOptions(); - CSongs.Sort(_Sso.Sorting.SongSorting, _Sso.Sorting.Tabs, _Sso.Sorting.IgnoreArticles, _Sso.Sorting.SearchString, _Sso.Sorting.DuetOptions); + CSongs.Sort(_Sso.Sorting.SongSorting, _Sso.Sorting.Tabs, _Sso.Sorting.IgnoreArticles, _Sso.Sorting.SearchString, _Sso.Sorting.DuetOptions, _Sso.Sorting.FilterPlaylistID); + if (_Sso.Selection.CategoryIndex != CBase.Songs.GetCurrentCategoryIndex()) + { + _SelectedCategoryIndex = _Sso.Selection.CategoryIndex; + _SongMenu.EnterSelectedCategory(); + } _SearchActive = _Sso.Sorting.SearchActive; _SearchText = _Sso.Sorting.SearchString; @@ -774,7 +779,7 @@ namespace Vocaluxe.Screens if (_Sso.Selection.PartyMode) { - CSongs.Sort(_Sso.Sorting.SongSorting, _Sso.Sorting.Tabs, _Sso.Sorting.IgnoreArticles, _Sso.Sorting.SearchString, _Sso.Sorting.DuetOptions); + CSongs.Sort(_Sso.Sorting.SongSorting, _Sso.Sorting.Tabs, _Sso.Sorting.IgnoreArticles, _Sso.Sorting.SearchString, _Sso.Sorting.DuetOptions, _Sso.Sorting.FilterPlaylistID); _SearchActive = _Sso.Sorting.SearchActive; _SearchText = _Sso.Sorting.SearchString; @@ -1134,7 +1139,7 @@ namespace Vocaluxe.Screens refresh = true; } - CSongs.Sort(_Sso.Sorting.SongSorting, _Sso.Sorting.Tabs, _Sso.Sorting.IgnoreArticles, newFilterString, _Sso.Sorting.DuetOptions); + CSongs.Sort(_Sso.Sorting.SongSorting, _Sso.Sorting.Tabs, _Sso.Sorting.IgnoreArticles, newFilterString, _Sso.Sorting.DuetOptions, _Sso.Sorting.FilterPlaylistID); if (songID == -1 || CSongs.NumSongsVisible <= songIndex || CSongs.GetVisibleSongByIndex(songIndex).ID != songID) refresh = true; diff --git a/VocaluxeLib/Enums.cs b/VocaluxeLib/Enums.cs index 39e8399f..8ba2a416 100644 --- a/VocaluxeLib/Enums.cs +++ b/VocaluxeLib/Enums.cs @@ -214,6 +214,13 @@ namespace VocaluxeLib NoDuets } + public enum ESongSource + { + TR_SONGSOURCE_ALLSONGS, + TR_SONGSOURCE_CATEGORY, + TR_SONGSOURCE_PLAYLIST + } + public enum ESongSorting { // ReSharper disable InconsistentNaming diff --git a/VocaluxeLib/IBasic.cs b/VocaluxeLib/IBasic.cs index 0e35883e..1ec80d1f 100644 --- a/VocaluxeLib/IBasic.cs +++ b/VocaluxeLib/IBasic.cs @@ -61,7 +61,6 @@ namespace VocaluxeLib bool IsMicConfigured(int playerNr); int GetMaxNumMics(); - bool GetLoadOldThemeFiles(); void AddSongMenuListener(OnSongMenuChanged onSongMenuChanged); void RemoveSongMenuListener(OnSongMenuChanged onSongMenuChanged); } @@ -251,7 +250,7 @@ namespace VocaluxeLib void AddPartySongSung(int songID); void ResetSongSung(int catIndex = -1); - void SortSongs(ESongSorting sorting, EOffOn tabs, EOffOn ignoreArticles, String searchString, EDuetOptions duetOptions); + void SortSongs(ESongSorting sorting, EOffOn tabs, EOffOn ignoreArticles, String searchString, EDuetOptions duetOptions, int playlistID); void NextCategory(); void PrevCategory(); @@ -325,6 +324,7 @@ namespace VocaluxeLib int GetSongCount(int playlistID); CPlaylistSong GetSong(int playlistID, int songIndex); + bool ContainsSong(int playlistID, int songIndex); } public interface IPreviewPlayer diff --git a/VocaluxeLib/Menu/CBackground.cs b/VocaluxeLib/Menu/CBackground.cs index 611aa382..2035612e 100644 --- a/VocaluxeLib/Menu/CBackground.cs +++ b/VocaluxeLib/Menu/CBackground.cs @@ -20,7 +20,6 @@ using System.Xml.Serialization; using System.Diagnostics; using System.Collections.Generic; using VocaluxeLib.Draw; -using VocaluxeLib.Xml; namespace VocaluxeLib.Menu { @@ -88,51 +87,6 @@ namespace VocaluxeLib.Menu #endregion Constructors #region public - public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) - { - string item = xmlPath + "/" + elementName; - ThemeLoaded = true; - - ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Type", ref _Theme.Type); - - bool vid = xmlReader.GetValue(item + "/Video", out _Theme.VideoName, String.Empty); - bool tex = xmlReader.GetValue(item + "/Skin", out _Theme.Skin, String.Empty); - ThemeLoaded &= vid || tex || _Theme.Type == EBackgroundTypes.None; - - if (xmlReader.GetValue(item + "/Color", out _Theme.Color.Name, String.Empty)) - ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out Color); - else - { - bool success = true; - success &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); - success &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); - success &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); - success &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); - - if (_Theme.Type != EBackgroundTypes.None) - ThemeLoaded &= success; - } - - _Theme.Color.Color = Color; - - int i = 1; - - while (xmlReader.ItemExists(item + "/SlideShow" + i)) - { - string slideShow; - xmlReader.GetValue(item + "/SlideShow" + i, out slideShow, String.Empty); - if (slideShow != "") - _Theme.SlideShowTextures.Add(slideShow); - i++; - } - - if (ThemeLoaded) - { - _Theme.Name = elementName; - LoadSkin(); - } - return ThemeLoaded; - } public void Resume() { diff --git a/VocaluxeLib/Menu/CButton.cs b/VocaluxeLib/Menu/CButton.cs index b0ca4a48..19c62d98 100644 --- a/VocaluxeLib/Menu/CButton.cs +++ b/VocaluxeLib/Menu/CButton.cs @@ -15,11 +15,9 @@ // along with Vocaluxe. If not, see . #endregion -using System; using System.Diagnostics; using System.Xml.Serialization; using VocaluxeLib.Draw; -using VocaluxeLib.Xml; namespace VocaluxeLib.Menu { @@ -154,92 +152,6 @@ namespace VocaluxeLib.Menu _SelReflectionSpace = button._SelReflectionSpace; } - public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) - { - string item = xmlPath + "/" + elementName; - ThemeLoaded = true; - - ThemeLoaded &= xmlReader.GetValue(item + "/Skin", out _Theme.Skin, String.Empty); - ThemeLoaded &= xmlReader.GetValue(item + "/SkinSelected", out _Theme.SkinSelected, String.Empty); - - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); - - if (xmlReader.GetValue(item + "/Color", out _Theme.Color.Name, String.Empty)) - ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out Color); - else - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); - } - - if (xmlReader.GetValue(item + "/SColor", out _Theme.SelColor.Name, String.Empty)) - ThemeLoaded &= _Theme.SelColor.Get(_PartyModeID, out SelColor); - else - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SR", ref SelColor.R); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SG", ref SelColor.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SB", ref SelColor.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SA", ref SelColor.A); - } - - ThemeLoaded &= Text.LoadTheme(item, "Text", xmlReader, true); - Text.Z = Rect.Z; - if (xmlReader.ItemExists(item + "/SText")) - { - ThemeLoaded &= _SelText.LoadTheme(item, "SText", xmlReader, true); - _SelText.Z = Rect.Z; - } - else - _SelText = null; - - - //Reflections - if (xmlReader.ItemExists(item + "/Reflection")) - { - _Reflection = true; - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Space", ref _ReflectionSpace); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Height", ref _ReflectionHeight); - - _Theme.Reflection = new SReflection(_ReflectionHeight, _ReflectionSpace); - } - else - { - _Reflection = false; - _Theme.Reflection = null; - } - - if (xmlReader.ItemExists(item + "/SReflection")) - { - _SelReflection = true; - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SReflection/Space", ref _SelReflectionSpace); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SReflection/Height", ref _SelReflectionHeight); - - _Theme.SelReflection = new SReflection(_SelReflectionHeight, _SelReflectionSpace); - } - else - { - _SelReflection = false; - _Theme.SelReflection = null; - } - - if (ThemeLoaded) - { - _Theme.Name = elementName; - _Theme.Color.Color = Color; - _Theme.SelColor.Color = SelColor; - _ReadSubThemeElements(); - - LoadSkin(); - } - return ThemeLoaded; - } - private void _ReadSubThemeElements() { _Theme.Text = (SThemeText)Text.GetTheme(); diff --git a/VocaluxeLib/Menu/CEqualizer.cs b/VocaluxeLib/Menu/CEqualizer.cs index 6b14778d..cb4f6afe 100644 --- a/VocaluxeLib/Menu/CEqualizer.cs +++ b/VocaluxeLib/Menu/CEqualizer.cs @@ -15,10 +15,8 @@ // along with Vocaluxe. If not, see . #endregion -using System; using System.Diagnostics; using System.Xml.Serialization; -using VocaluxeLib.Xml; namespace VocaluxeLib.Menu { @@ -97,72 +95,6 @@ namespace VocaluxeLib.Menu ThemeLoaded = true; } - public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) - { - string item = xmlPath + "/" + elementName; - ThemeLoaded = true; - - ThemeLoaded &= xmlReader.GetValue(item + "/Skin", out _Theme.Skin, String.Empty); - - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); - - ThemeLoaded &= xmlReader.TryGetIntValue(item + "/NumBars", ref _Theme.NumBars); - - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Space", ref _Theme.Space); - - ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Style", ref _Theme.Style); - - ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/DrawNegative", ref _Theme.DrawNegative); - - if (xmlReader.GetValue(item + "/Color", out _Theme.Color.Name, String.Empty)) - ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out Color); - else - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); - } - - if (xmlReader.GetValue(item + "/MaxColor", out _Theme.MaxColor.Name, String.Empty)) - ThemeLoaded &= _Theme.MaxColor.Get(_PartyModeID, out MaxColor); - else - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/MaxR", ref MaxColor.R); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/MaxG", ref MaxColor.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/MaxB", ref MaxColor.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/MaxA", ref MaxColor.A); - } - - //Reflection - if (xmlReader.ItemExists(item + "/Reflection")) - { - Reflection = true; - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Space", ref ReflectionSpace); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Height", ref ReflectionHeight); - - _Theme.Reflection = new SReflection(ReflectionHeight, ReflectionSpace); - } - else - { - Reflection = false; - _Theme.Reflection = null; - } - - if (ThemeLoaded) - { - _Theme.Name = elementName; - _Theme.Color.Color = Color; - _Theme.MaxColor.Color = MaxColor; - LoadSkin(); - } - return ThemeLoaded; - } - public void Update(float[] weights, float volume) { if (weights == null || weights.Length == 0 || _Bars == null) diff --git a/VocaluxeLib/Menu/CLyric.cs b/VocaluxeLib/Menu/CLyric.cs index 1fa29533..97a5e60a 100644 --- a/VocaluxeLib/Menu/CLyric.cs +++ b/VocaluxeLib/Menu/CLyric.cs @@ -18,7 +18,6 @@ using System; using System.Xml.Serialization; using VocaluxeLib.Songs; -using VocaluxeLib.Xml; namespace VocaluxeLib.Menu { @@ -105,47 +104,6 @@ namespace VocaluxeLib.Menu ThemeLoaded = true; } - public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) - { - string item = xmlPath + "/" + elementName; - ThemeLoaded = true; - - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); - - if (xmlReader.GetValue(item + "/Color", out _Theme.Color.Name, String.Empty)) - ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out _Color); - else - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref _Color.R); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref _Color.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref _Color.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref _Color.A); - } - - if (xmlReader.GetValue(item + "/SColor", out _Theme.ProcessedColor.Name, String.Empty)) - ThemeLoaded &= _Theme.ProcessedColor.Get(_PartyModeID, out _ColorProcessed); - else - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SR", ref _ColorProcessed.R); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SG", ref _ColorProcessed.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SB", ref _ColorProcessed.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SA", ref _ColorProcessed.A); - } - - if (ThemeLoaded) - { - _Theme.Name = elementName; - _Theme.Color.Color = _Color; - _Theme.ProcessedColor.Color = _ColorProcessed; - LoadSkin(); - } - return ThemeLoaded; - } - public void SetLine(CSongLine line) { _Line = line; diff --git a/VocaluxeLib/Menu/CMenu.cs b/VocaluxeLib/Menu/CMenu.cs index 1dd7d049..3ea5af46 100644 --- a/VocaluxeLib/Menu/CMenu.cs +++ b/VocaluxeLib/Menu/CMenu.cs @@ -141,20 +141,6 @@ namespace VocaluxeLib.Menu private delegate void AddElementHandler(T element, String key); - private void _LoadThemeElement(IEnumerable elements, AddElementHandler addElementHandler, CXmlReader xmlReader) where T : IThemeable - { - if (elements != null) - { - foreach (string elName in elements) - { - var element = (T)Activator.CreateInstance(typeof(T), PartyModeID); - if (element.LoadTheme("//root/" + ThemeName, elName, xmlReader)) - addElementHandler(element, elName); - else - CBase.Log.LogError("Can't load " + typeof(T).Name.Substring(1) + " \"" + elName + "\" in screen " + ThemeName); - } - } - } private class CLoadThemeErrorHandler : CXmlDeserializer.CXmlDefaultErrorHandler { @@ -178,12 +164,6 @@ namespace VocaluxeLib.Menu public virtual void LoadTheme(string xmlPath) { - if (CBase.Config.GetLoadOldThemeFiles()) - { - LoadThemeOld(xmlPath); - return; - } - ThemePath = xmlPath; string file = Path.Combine(xmlPath, ThemeName + ".xml"); @@ -268,61 +248,6 @@ namespace VocaluxeLib.Menu _ScreenSettings.Add(name, screenSetting); } - public void LoadThemeOld(string xmlPath) - { - string file = Path.Combine(xmlPath, ThemeName + ".xml"); - - CXmlReader xmlReader = CXmlReader.OpenFile(file); - if (xmlReader == null) - return; - - bool versionCheck = _CheckVersion(_ScreenVersion, xmlReader); - - if (versionCheck) - { - ThemePath = xmlPath; - _LoadThemeBasics(xmlReader); - - _LoadThemeElement(_ThemeBackgrounds, _AddBackground, xmlReader); - _LoadThemeElement(_ThemeStatics, _AddStatic, xmlReader); - _LoadThemeElement(_ThemeTexts, _AddText, xmlReader); - _LoadThemeElement(_ThemeButtons, _AddButton, xmlReader); - _LoadThemeElement(_ThemeSelectSlides, _AddSelectSlide, xmlReader); - foreach (string elName in _ThemeSongMenus) - { - ISongMenu element = CSongMenuFactory.CreateSongMenu(PartyModeID); - if (element.LoadTheme("//root/" + ThemeName, elName, xmlReader)) - _AddSongMenu(element, elName); - else - CBase.Log.LogError("Can't load songmenu \"" + elName + "\" in screen " + ThemeName); - } - _LoadThemeElement(_ThemeSongMenus, _AddSongMenu, xmlReader); - _LoadThemeElement(_ThemeLyrics, _AddLyric, xmlReader); - _LoadThemeElement(_ThemeSingNotes, _AddSingNote, xmlReader); - _LoadThemeElement(_ThemeNameSelections, _AddNameSelection, xmlReader); - _LoadThemeElement(_ThemeEqualizers, _AddEqualizer, xmlReader); - _LoadThemeElement(_ThemePlaylists, _AddPlaylist, xmlReader); - _LoadThemeElement(_ThemeParticleEffects, _AddParticleEffect, xmlReader); - _LoadThemeElement(_ThemeScreenSettings, _AddScreenSetting, xmlReader); - } - - Theme.Informations.ScreenName = ThemeName; - Theme.Informations.ScreenVersion = _ScreenVersion; - Theme.Backgrounds = new List(); - Theme.Statics = new List(); - Theme.Texts = new List(); - Theme.Buttons = new List(); - Theme.SongMenus = new List(); - Theme.Lyrics = new List(); - Theme.SelectSlides = new List(); - Theme.SingNotes = new List(); - Theme.NameSelections = new List(); - Theme.Equalizers = new List(); - Theme.Playlists = new List(); - Theme.ParticleEffects = new List(); - Theme.ScreenSettings = new List(); - } - private static void _AddThemeablesToList(ICollection themeList, IEnumerable objects) where T : IThemeable { themeList.Clear(); @@ -553,67 +478,6 @@ namespace VocaluxeLib.Menu } #region Theme Handling - private bool _CheckVersion(int reqVersion, CXmlReader xmlReader) - { - int actualVersion = 0; - xmlReader.TryGetIntValue("//root/" + ThemeName + "/ScreenVersion", ref actualVersion); - - if (actualVersion == reqVersion) - return true; - string msg = "Can't load screen file of screen \"" + ThemeName + "\", "; - if (actualVersion < reqVersion) - msg += "the file ist outdated! "; - else - msg += "the file is for newer program versions! "; - - msg += "Current screen version is " + reqVersion; - CBase.Log.LogError(msg); - return false; - } - - private void _LoadThemeBasics(CXmlReader xmlReader) - { - // Backgrounds - var background = new CBackground(PartyModeID); - int i = 1; - while (background.LoadTheme("//root/" + ThemeName, "Background" + i, xmlReader)) - { - _AddBackground(background); - background = new CBackground(PartyModeID); - i++; - } - - // Statics - var stat = new CStatic(PartyModeID); - i = 1; - while (stat.LoadTheme("//root/" + ThemeName, "Static" + i, xmlReader)) - { - _AddStatic(stat); - stat = new CStatic(PartyModeID); - i++; - } - - // Texts - var text = new CText(PartyModeID); - i = 1; - while (text.LoadTheme("//root/" + ThemeName, "Text" + i, xmlReader)) - { - _AddText(text); - text = new CText(PartyModeID); - i++; - } - - // ParticleEffects - var partef = new CParticleEffect(PartyModeID); - i = 1; - while (partef.LoadTheme("//root/" + ThemeName, "ParticleEffect" + i, xmlReader)) - { - _AddParticleEffect(partef); - partef = new CParticleEffect(PartyModeID); - i++; - } - } - private void _ReloadThemeEditMode() { CBase.Themes.Reload(); diff --git a/VocaluxeLib/Menu/CMenuPartySongSelection.cs b/VocaluxeLib/Menu/CMenuPartySongSelection.cs new file mode 100644 index 00000000..815d4ded --- /dev/null +++ b/VocaluxeLib/Menu/CMenuPartySongSelection.cs @@ -0,0 +1,262 @@ +#region license +// This file is part of Vocaluxe. +// +// Vocaluxe is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Vocaluxe is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Vocaluxe. If not, see . +#endregion + +using System; +using System.Collections.Generic; +using System.Windows.Forms; +using VocaluxeLib.Draw; +using VocaluxeLib.Songs; + +namespace VocaluxeLib.Menu +{ + public abstract class CMenuPartySongSelection : CMenuParty + { + private const string _ButtonNext = "ButtonNext"; + private const string _ButtonBack = "ButtonBack"; + + private const string _SelectSlideSongMode = "SelectSlideSongMode"; + private const string _SelectSlideSource = "SelectSlideSource"; + private const string _SelectSlidePlaylist = "SelectSlidePlaylist"; + private const string _SelectSlideSorting = "SelectSlideSorting"; + private const string _SelectSlideCategory = "SelectSlideCategory"; + private const string _SelectSlideNumMedleySongs = "SelectSlideNumMedleySongs"; + + protected int Playlist; + protected EGameMode SongMode + { + get { return AllowedSongModes[_SongMode]; } + set + { + _SongMode = 0; + for (int i = 0; i < AllowedSongModes.Length; i++) + { + if (AllowedSongModes[i] == value) + { + _SongMode = i; + break; + } + } + } + } + private int _SongMode; + + protected ESongSource Source + { + get { return AllowedSongSources[_Source]; } + set + { + _Source = 0; + for (int i = 0; i < AllowedSongSources.Length; i++) + { + if (AllowedSongSources[i] == value) + { + _Source = i; + break; + } + } + } + } + private int _Source; + + protected ESongSorting Sorting + { + get { return AllowedSongSorting[_Sorting]; } + set + { + _Sorting = 0; + for (int i = 0; i < AllowedSongSorting.Length; i++) + { + if (AllowedSongSorting[i] == value) + { + _Sorting = i; + break; + } + } + } + } + private int _Sorting; + + protected int Category; + + protected EGameMode[] AllowedSongModes; + protected ESongSource[] AllowedSongSources; + protected ESongSorting[] AllowedSongSorting; + + protected int NumMedleySongs = 5; + protected int NumMinMedleySongs = 3; + protected int NumMaxMedleySongs = 10; + + public override void Init() + { + base.Init(); + + _ThemeButtons = new string[]{ _ButtonNext, _ButtonBack}; + _ThemeSelectSlides = new string[] { _SelectSlideSongMode, _SelectSlideSource, _SelectSlidePlaylist, _SelectSlideSorting, _SelectSlideCategory, _SelectSlideNumMedleySongs }; + + _SetAllowedOptions(); + } + + public override bool HandleInput(SKeyEvent keyEvent) + { + base.HandleInput(keyEvent); + + switch (keyEvent.Key) + { + case Keys.Back: + case Keys.Escape: + Back(); + break; + case Keys.Enter: + if (_Buttons[_ButtonNext].Selected) + Next(); + else if (_Buttons[_ButtonBack].Selected) + Back(); + break; + + case Keys.Left: + case Keys.Right: + _GetSelectedOptions(); + _UpdateSelectSlideVisibility(); + break; + } + + return true; + } + + public override bool HandleMouse(SMouseEvent mouseEvent) + { + base.HandleMouse(mouseEvent); + + if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent)) + { + if (_Buttons[_ButtonBack].Selected) + Back(); + else if (_Buttons[_ButtonNext].Selected) + Next(); + else + { + _GetSelectedOptions(); + _UpdateSelectSlideVisibility(); + } + } + else if (mouseEvent.RB) + Back(); + + return true; + } + + public abstract void Back(); + public abstract void Next(); + + public override void OnShow() + { + base.OnShow(); + + CBase.Songs.SortSongs(Sorting, EOffOn.TR_CONFIG_ON, CBase.Config.GetIgnoreArticles(), "", EDuetOptions.All, -1); + + _FillSlides(); + _SetSelectedOptions(); + _UpdateSelectSlideVisibility(); + } + + private void _FillSlides() + { + _SelectSlides[_SelectSlideSongMode].Clear(); + foreach (EGameMode gm in AllowedSongModes) + _SelectSlides[_SelectSlideSongMode].AddValue(gm.ToString()); + + _SelectSlides[_SelectSlideSource].Clear(); + foreach (ESongSource ss in AllowedSongSources) + _SelectSlides[_SelectSlideSource].AddValue(ss.ToString()); + + _SelectSlides[_SelectSlideSorting].Clear(); + foreach (ESongSorting ss in AllowedSongSorting) + _SelectSlides[_SelectSlideSorting].AddValue(ss.ToString()); + + _SelectSlides[_SelectSlidePlaylist].Clear(); + List playlists = CBase.Playlist.GetNames(); + for (int i = 0; i < playlists.Count; i++) + { + string value = playlists[i] + " (" + CBase.Playlist.GetSongCount(i) + " " + CBase.Language.Translate("TR_SONGS", PartyModeID) + ")"; + _SelectSlides[_SelectSlidePlaylist].AddValue(value); + } + + _SelectSlides[_SelectSlideNumMedleySongs].Clear(); + for(int num = NumMinMedleySongs; num <= NumMaxMedleySongs; num++) + { + _SelectSlides[_SelectSlideNumMedleySongs].AddValue(num + " " + CBase.Language.Translate("TR_SONGS", PartyModeID)); + } + + _FillCategorySlide(); + } + + private void _FillCategorySlide() + { + _SelectSlides[_SelectSlideCategory].Clear(); + for (int i = 0; i < CBase.Songs.GetNumCategories(); i++) + { + CCategory cat = CBase.Songs.GetCategory(i); + string value = cat.Name + " (" + cat.GetNumSongsNotSung() + " " + CBase.Language.Translate("TR_SONGS", PartyModeID) + ")"; + _SelectSlides[_SelectSlideCategory].AddValue(value); + } + } + + private void _GetSelectedOptions() + { + _SongMode = _SelectSlides[_SelectSlideSongMode].Selection; + _Source = _SelectSlides[_SelectSlideSource].Selection; + NumMedleySongs = NumMinMedleySongs + _SelectSlides[_SelectSlideNumMedleySongs].Selection; + Playlist = _SelectSlides[_SelectSlidePlaylist].Selection; + + if (_SelectSlides[_SelectSlideSorting].Selection != _Sorting) + { + _Sorting = _SelectSlides[_SelectSlideSorting].Selection; + CBase.Songs.SortSongs(Sorting, EOffOn.TR_CONFIG_ON, CBase.Config.GetIgnoreArticles(), "", EDuetOptions.All, -1); + _FillCategorySlide(); + + _SelectSlides[_SelectSlideCategory].Selection = 0; + } + + Category = _SelectSlides[_SelectSlideCategory].Selection; + } + + private void _SetSelectedOptions() + { + _SelectSlides[_SelectSlideSongMode].Selection = _SongMode; + _SelectSlides[_SelectSlideSource].Selection = _Source; + _SelectSlides[_SelectSlideNumMedleySongs].Selection = NumMedleySongs - NumMinMedleySongs; + _SelectSlides[_SelectSlidePlaylist].Selection = Playlist; + _SelectSlides[_SelectSlideSorting].Selection = _Sorting; + _SelectSlides[_SelectSlideCategory].Selection = Category; + } + + private void _UpdateSelectSlideVisibility() + { + _SelectSlides[_SelectSlideNumMedleySongs].Visible = SongMode == EGameMode.TR_GAMEMODE_MEDLEY; + _SelectSlides[_SelectSlidePlaylist].Visible = Source == ESongSource.TR_SONGSOURCE_PLAYLIST; + _SelectSlides[_SelectSlideSorting].Visible = Source == ESongSource.TR_SONGSOURCE_CATEGORY; + _SelectSlides[_SelectSlideCategory].Visible = Source == ESongSource.TR_SONGSOURCE_CATEGORY; + } + + protected virtual void _SetAllowedOptions() + { + AllowedSongModes = (EGameMode[])Enum.GetValues(typeof(EGameMode)); + AllowedSongSources = (ESongSource[])Enum.GetValues(typeof(ESongSource)); + AllowedSongSorting = (ESongSorting[])Enum.GetValues(typeof(ESongSorting)); + } + } +} diff --git a/VocaluxeLib/Menu/CNameSelection.cs b/VocaluxeLib/Menu/CNameSelection.cs index 1718d047..dae50da6 100644 --- a/VocaluxeLib/Menu/CNameSelection.cs +++ b/VocaluxeLib/Menu/CNameSelection.cs @@ -15,13 +15,11 @@ // along with Vocaluxe. If not, see . #endregion -using System; using System.Collections.Generic; using System.Windows.Forms; using System.Xml.Serialization; using VocaluxeLib.Draw; using VocaluxeLib.Profile; -using VocaluxeLib.Xml; namespace VocaluxeLib.Menu { @@ -152,64 +150,6 @@ namespace VocaluxeLib.Menu UpdateList(0); } - public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) - { - string item = xmlPath + "/" + elementName; - ThemeLoaded = true; - - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); - - ThemeLoaded &= xmlReader.GetValue(item + "/SkinEmptyTile", out _Theme.SkinEmptyTile, String.Empty); - - if (xmlReader.GetValue(item + "/ColorEmptyTile", out _Theme.ColorEmptyTile.Name, String.Empty)) - ThemeLoaded &= _Theme.ColorEmptyTile.Get(_PartyModeID, out _ColorEmptyTile); - else - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref _ColorEmptyTile.R); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref _ColorEmptyTile.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref _ColorEmptyTile.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref _ColorEmptyTile.A); - } - - ThemeLoaded &= xmlReader.GetValue(item + "/SkinTileSelected", out _Theme.SkinTileSelected, String.Empty); - - ThemeLoaded &= xmlReader.TryGetIntValue(item + "/Tiles/W", ref _Theme.Tiles.W); - ThemeLoaded &= xmlReader.TryGetIntValue(item + "/Tiles/H", ref _Theme.Tiles.H); - ThemeLoaded &= xmlReader.TryGetIntValue(item + "/Tiles/NumW", ref _Theme.Tiles.NumW); - ThemeLoaded &= xmlReader.TryGetIntValue(item + "/Tiles/NumH", ref _Theme.Tiles.NumH); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/SpaceW", ref _Theme.Tiles.SpaceW); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/SpaceH", ref _Theme.Tiles.SpaceH); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/Space", ref _Theme.Tiles.Name.Space); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/H", ref _Theme.Tiles.Name.Height); - ThemeLoaded &= xmlReader.GetValue(item + "/Tiles/Name/Font", out _Theme.Tiles.Name.Font, "Normal"); - ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Tiles/Name/Style", ref _Theme.Tiles.Name.Style); - if (xmlReader.GetValue(item + "/Tiles/Name/Color", out _Theme.Tiles.Name.Color.Name, String.Empty)) - ThemeLoaded &= _Theme.Tiles.Name.Color.Get(_PartyModeID, out _ColorNameTile); - else - { - if (xmlReader.TryGetFloatValue(item + "/Tiles/Name/R", ref _ColorNameTile.R)) - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/G", ref _ColorNameTile.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/B", ref _ColorNameTile.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/A", ref _ColorNameTile.A); - } - } - - - if (ThemeLoaded) - { - _Theme.Name = elementName; - _Theme.Tiles.Name.Color.Color = _ColorNameTile; - _Theme.ColorEmptyTile.Color = _ColorEmptyTile; - LoadSkin(); - } - return ThemeLoaded; - } - public void Draw() { int i = 0; diff --git a/VocaluxeLib/Menu/CParticleEffect.cs b/VocaluxeLib/Menu/CParticleEffect.cs index 0638db52..e7ca4ae0 100644 --- a/VocaluxeLib/Menu/CParticleEffect.cs +++ b/VocaluxeLib/Menu/CParticleEffect.cs @@ -20,7 +20,6 @@ using System.Collections.Generic; using System.Diagnostics; using System.Xml.Serialization; using VocaluxeLib.Draw; -using VocaluxeLib.Xml; namespace VocaluxeLib.Menu { @@ -127,42 +126,6 @@ namespace VocaluxeLib.Menu ThemeLoaded = true; } - public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) - { - string item = xmlPath + "/" + elementName; - ThemeLoaded = true; - - ThemeLoaded &= xmlReader.GetValue(item + "/Skin", out _Theme.Skin, String.Empty); - - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); - - if (xmlReader.GetValue(item + "/Color", out _Theme.Color.Name, String.Empty)) - ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out Color); - else - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); - } - - ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Type", ref _Theme.Type); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Size", ref _Theme.Size); - ThemeLoaded &= xmlReader.TryGetIntValue(item + "/MaxNumber", ref _Theme.MaxNumber); - - if (ThemeLoaded) - { - _Theme.Name = elementName; - _Theme.Color.Color = Color; - LoadSkin(); - } - return ThemeLoaded; - } - public void Update() { bool doSpawn = false; diff --git a/VocaluxeLib/Menu/CPlaylist.cs b/VocaluxeLib/Menu/CPlaylist.cs index 96a411cb..0a523d21 100644 --- a/VocaluxeLib/Menu/CPlaylist.cs +++ b/VocaluxeLib/Menu/CPlaylist.cs @@ -20,7 +20,6 @@ using System.Collections.Generic; using System.Windows.Forms; using System.Xml.Serialization; using VocaluxeLib.Songs; -using VocaluxeLib.Xml; namespace VocaluxeLib.Menu { @@ -270,67 +269,6 @@ namespace VocaluxeLib.Menu ThemeLoaded = true; } - public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) - { - string item = xmlPath + "/" + elementName; - ThemeLoaded = true; - - ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackground", out _Theme.SkinBackground, String.Empty); - ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackgroundSelected", out _Theme.SkinBackgroundSelected, String.Empty); - - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); - if (xmlReader.GetValue(item + "/ColorBackground", out _Theme.ColorBackground.Name, String.Empty)) - ThemeLoaded &= _Theme.ColorBackground.Get(_PartyModeID, out _BackgroundColor); - else - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/BackgroundR", ref _BackgroundColor.R); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/BackgroundG", ref _BackgroundColor.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/BackgroundB", ref _BackgroundColor.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/BackgroundA", ref _BackgroundColor.A); - } - if (xmlReader.GetValue(item + "/SColorBackground", out _Theme.SelColorBackground.Name, String.Empty)) - ThemeLoaded &= _Theme.SelColorBackground.Get(_PartyModeID, out _BackgroundSelColor); - else - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SBackgroundR", ref _BackgroundSelColor.R); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SBackgroundG", ref _BackgroundSelColor.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SBackgroundB", ref _BackgroundSelColor.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SBackgroundA", ref _BackgroundSelColor.A); - } - - ThemeLoaded &= _Text1.LoadTheme(item, "TextPart1", xmlReader); - - CStatic tmpStatic = new CStatic(_PartyModeID); - ThemeLoaded &= tmpStatic.LoadTheme(item, "StaticCover", xmlReader); - ThemeLoaded &= _StaticPlaylistHeader.LoadTheme(item, "StaticPlaylistHeader", xmlReader); - ThemeLoaded &= _StaticPlaylistFooter.LoadTheme(item, "StaticPlaylistFooter", xmlReader); - - ThemeLoaded &= _ButtonPlaylistName.LoadTheme(item, "ButtonPlaylistName", xmlReader); - ThemeLoaded &= _ButtonPlaylistSing.LoadTheme(item, "ButtonPlaylistSing", xmlReader); - ThemeLoaded &= _ButtonPlaylistClose.LoadTheme(item, "ButtonPlaylistClose", xmlReader); - ThemeLoaded &= _ButtonPlaylistSave.LoadTheme(item, "ButtonPlaylistSave", xmlReader); - ThemeLoaded &= _ButtonPlaylistDelete.LoadTheme(item, "ButtonPlaylistDelete", xmlReader); - - ThemeLoaded &= _SelectSlideGameMode.LoadTheme(item, "SelectSlideGameMode", xmlReader); - - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/EntryHeight", ref _Theme.EntryHeight); - if (ThemeLoaded) - { - _Theme.Name = elementName; - _Theme.ColorBackground.Color = _BackgroundColor; - _Theme.SelColorBackground.Color = _BackgroundSelColor; - _Theme.StaticCover = (SThemeStatic)tmpStatic.GetTheme(); - _ReadSubThemeElements(); - - LoadSkin(); - } - return ThemeLoaded; - } - private void _ReadSubThemeElements() { _Theme.Text1 = (SThemeText)_Text1.GetTheme(); diff --git a/VocaluxeLib/Menu/CProgressBar.cs b/VocaluxeLib/Menu/CProgressBar.cs index f7cbf6fd..476ca29f 100644 --- a/VocaluxeLib/Menu/CProgressBar.cs +++ b/VocaluxeLib/Menu/CProgressBar.cs @@ -191,12 +191,6 @@ namespace VocaluxeLib.Menu _AnimTimer = new Stopwatch(); } - public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) - { - //Will be removed - return false; - } - public void Reset(bool animateInit = false) { _Animate = animateInit; diff --git a/VocaluxeLib/Menu/CScreenSetting.cs b/VocaluxeLib/Menu/CScreenSetting.cs index 35148cf7..56dfc7c7 100644 --- a/VocaluxeLib/Menu/CScreenSetting.cs +++ b/VocaluxeLib/Menu/CScreenSetting.cs @@ -18,7 +18,6 @@ using System; using System.Xml.Serialization; using VocaluxeLib.Draw; -using VocaluxeLib.Xml; namespace VocaluxeLib.Menu { @@ -71,19 +70,6 @@ namespace VocaluxeLib.Menu _Theme = theme; } - public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) - { - string item = xmlPath + "/" + elementName; - _ThemeLoaded = true; - - _ThemeLoaded &= xmlReader.GetValue(item + "/Value", out _Theme.Value, String.Empty); - _ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Type", ref _Theme.Type); - - if (_ThemeLoaded) - _Theme.Name = elementName; - return _ThemeLoaded; - } - public object GetValue() { switch (_Theme.Type) diff --git a/VocaluxeLib/Menu/CSelectSlide.cs b/VocaluxeLib/Menu/CSelectSlide.cs index fa6310b2..ee1765fc 100644 --- a/VocaluxeLib/Menu/CSelectSlide.cs +++ b/VocaluxeLib/Menu/CSelectSlide.cs @@ -22,7 +22,6 @@ using System.Diagnostics; using System.Drawing; using System.Xml.Serialization; using VocaluxeLib.Draw; -using VocaluxeLib.Xml; namespace VocaluxeLib.Menu { @@ -270,122 +269,6 @@ namespace VocaluxeLib.Menu ThemeLoaded = true; } - public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) - { - string item = xmlPath + "/" + elementName; - ThemeLoaded = true; - - ThemeLoaded &= xmlReader.GetValue(item + "/Skin", out _Theme.Skin, String.Empty); - ThemeLoaded &= xmlReader.GetValue(item + "/SkinArrowLeft", out _Theme.SkinArrowLeft, String.Empty); - ThemeLoaded &= xmlReader.GetValue(item + "/SkinArrowRight", out _Theme.SkinArrowRight, String.Empty); - - ThemeLoaded &= xmlReader.GetValue(item + "/SkinSelected", out _Theme.SkinSelected, String.Empty); - ThemeLoaded &= xmlReader.GetValue(item + "/SkinArrowLeftSelected", out _Theme.SkinArrowLeftSelected, String.Empty); - ThemeLoaded &= xmlReader.GetValue(item + "/SkinArrowRightSelected", out _Theme.SkinArrowRightSelected, String.Empty); - - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); - - if (xmlReader.GetValue(item + "/Color", out _Theme.Color.Name, String.Empty)) - ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out _Color); - else - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref _Color.R); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref _Color.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref _Color.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref _Color.A); - } - - if (xmlReader.GetValue(item + "/SColor", out _Theme.SelColor.Name, String.Empty)) - ThemeLoaded &= _Theme.SelColor.Get(_PartyModeID, out _SelColor); - else - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SR", ref _SelColor.R); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SG", ref _SelColor.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SB", ref _SelColor.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SA", ref _SelColor.A); - } - - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftX", ref RectArrowLeft.X); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftY", ref RectArrowLeft.Y); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftZ", ref RectArrowLeft.Z); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftW", ref RectArrowLeft.W); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftH", ref RectArrowLeft.H); - - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightX", ref RectArrowRight.X); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightY", ref RectArrowRight.Y); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightZ", ref RectArrowRight.Z); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightW", ref RectArrowRight.W); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightH", ref RectArrowRight.H); - - if (xmlReader.GetValue(item + "/ArrowColor", out _Theme.ArrowColor.Name, String.Empty)) - ThemeLoaded &= _Theme.ArrowColor.Get(_PartyModeID, out _ColorArrow); - else - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowR", ref _ColorArrow.R); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowG", ref _ColorArrow.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowB", ref _ColorArrow.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowA", ref _ColorArrow.A); - } - - if (xmlReader.GetValue(item + "/ArrowSColor", out _Theme.ArrowSelColor.Name, String.Empty)) - ThemeLoaded &= _Theme.ArrowSelColor.Get(_PartyModeID, out _SelColorArrow); - else - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowSR", ref _SelColorArrow.R); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowSG", ref _SelColorArrow.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowSB", ref _SelColorArrow.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowSA", ref _SelColorArrow.A); - } - - if (xmlReader.GetValue(item + "/TextColor", out _Theme.TextColor.Name, String.Empty)) - ThemeLoaded &= _Theme.TextColor.Get(_PartyModeID, out _TextColor); - else - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextR", ref _TextColor.R); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextG", ref _TextColor.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextB", ref _TextColor.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextA", ref _TextColor.A); - } - - if (xmlReader.GetValue(item + "/TextSColor", out _Theme.TextSelColor.Name, String.Empty)) - ThemeLoaded &= _Theme.TextSelColor.Get(_PartyModeID, out _SelTextColor); - else - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextSR", ref _SelTextColor.R); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextSG", ref _SelTextColor.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextSB", ref _SelTextColor.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextSA", ref _SelTextColor.A); - } - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextH", ref _Theme.TextH); - xmlReader.TryGetFloatValue(item + "/TextRelativeX", ref _Theme.TextRelativeX); - xmlReader.TryGetFloatValue(item + "/TextRelativeY", ref _Theme.TextRelativeY); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextMaxW", ref _Theme.TextMaxW); - - ThemeLoaded &= xmlReader.GetValue(item + "/TextFont", out _Theme.TextFont, "Normal"); - ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/TextStyle", ref _Theme.TextStyle); - - ThemeLoaded &= xmlReader.TryGetIntValue(item + "/NumVisible", ref _Theme.NumVisible); - - if (ThemeLoaded) - { - _Theme.Name = elementName; - _Theme.ArrowColor.Color = _ColorArrow; - _Theme.ArrowSelColor.Color = _SelColorArrow; - _Theme.Color.Color = _Color; - _Theme.RectArrowLeft = RectArrowLeft; - _Theme.RectArrowRight = RectArrowRight; - _Theme.SelColor.Color = _SelColor; - _Theme.TextColor.Color = _TextColor; - _Theme.TextSelColor.Color = _SelTextColor; - LoadSkin(); - } - return ThemeLoaded; - } - private void _Invalidate() { _NeedsRevalidate = true; diff --git a/VocaluxeLib/Menu/CStatic.cs b/VocaluxeLib/Menu/CStatic.cs index 9f7ca429..66091e98 100644 --- a/VocaluxeLib/Menu/CStatic.cs +++ b/VocaluxeLib/Menu/CStatic.cs @@ -15,11 +15,9 @@ // along with Vocaluxe. If not, see . #endregion -using System; using System.Diagnostics; using System.Xml.Serialization; using VocaluxeLib.Draw; -using VocaluxeLib.Xml; namespace VocaluxeLib.Menu { @@ -122,52 +120,6 @@ namespace VocaluxeLib.Menu ThemeLoaded = true; } - public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) - { - string item = xmlPath + "/" + elementName; - ThemeLoaded = true; - - ThemeLoaded &= xmlReader.GetValue(item + "/Skin", out _Theme.Skin, String.Empty); - - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); - - if (xmlReader.GetValue(item + "/Color", out _Theme.Color.Name, String.Empty)) - ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out Color); - else - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); - } - - _Theme.Color.Color = Color; - - if (xmlReader.ItemExists(item + "/Reflection")) - { - Reflection = true; - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Space", ref ReflectionSpace); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Height", ref ReflectionHeight); - _Theme.Reflection = new SReflection(ReflectionHeight, ReflectionSpace); - } - else - { - Reflection = false; - _Theme.Reflection = null; - } - - if (ThemeLoaded) - { - _Theme.Name = elementName; - LoadSkin(); - } - return ThemeLoaded; - } - public void Draw() { Draw(Aspect); diff --git a/VocaluxeLib/Menu/CText.cs b/VocaluxeLib/Menu/CText.cs index 3a923a6d..5f162da6 100644 --- a/VocaluxeLib/Menu/CText.cs +++ b/VocaluxeLib/Menu/CText.cs @@ -18,7 +18,6 @@ using System; using System.Drawing; using System.Xml.Serialization; -using VocaluxeLib.Xml; namespace VocaluxeLib.Menu { @@ -294,79 +293,6 @@ namespace VocaluxeLib.Menu ThemeLoaded = true; } - public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) - { - return LoadTheme(xmlPath, elementName, xmlReader, false); - } - - public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader, bool buttonText) - { - string item = xmlPath + "/" + elementName; - ThemeLoaded = true; - - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.X); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Y); - - if (!buttonText) - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Z); - - xmlReader.TryGetFloatValue(item + "/MaxW", ref _Theme.MaxWidth); - - if (xmlReader.GetValue(item + "/Color", out _Theme.Color.Name, String.Empty)) - ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out Color); - else - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); - } - - if (xmlReader.GetValue(item + "/SColor", out _Theme.SelColor.Name, String.Empty)) - ThemeLoaded &= _Theme.SelColor.Get(_PartyModeID, out SelColor); - else - { - if (xmlReader.TryGetFloatValue(item + "/SR", ref SelColor.R)) - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SG", ref SelColor.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SB", ref SelColor.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SA", ref SelColor.A); - } - } - - ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Align", ref _Align); - xmlReader.TryGetEnumValue(item + "/ResizeAlign", ref _ResizeAlign); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.FontHeight); - ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Style", ref _Theme.FontStyle); - ThemeLoaded &= xmlReader.GetValue(item + "/Font", out _Theme.FontFamily); - - ThemeLoaded &= xmlReader.GetValue(item + "/Text", out _Theme.Text); - - if (xmlReader.ItemExists(item + "/Reflection") && !buttonText) - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Space", ref _ReflectionSpace); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Height", ref _ReflectionHeight); - _Theme.Reflection = new SReflection(_ReflectionHeight, _ReflectionSpace); - } - else - _Theme.Reflection = null; - - - // Set values - _Theme.Name = elementName; - _Theme.Align = _Align; - _Theme.Color.Color = Color; - _Theme.ResizeAlign = _ResizeAlign; - _Theme.SelColor.Color = SelColor; - - _ButtonText = buttonText; - _PositionNeedsUpdate = true; - - if (ThemeLoaded) - LoadSkin(); - return ThemeLoaded; - } - public void Draw() { _Draw(false); diff --git a/VocaluxeLib/Menu/IThemeable.cs b/VocaluxeLib/Menu/IThemeable.cs index 8576904d..3039bb9c 100644 --- a/VocaluxeLib/Menu/IThemeable.cs +++ b/VocaluxeLib/Menu/IThemeable.cs @@ -25,8 +25,6 @@ namespace VocaluxeLib.Menu object GetTheme(); bool ThemeLoaded { get; } - bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader); - void UnloadSkin(); void LoadSkin(); void ReloadSkin(); diff --git a/VocaluxeLib/Menu/SingNotes/CSingNotes.cs b/VocaluxeLib/Menu/SingNotes/CSingNotes.cs index 5dee6b02..2f9f7d60 100644 --- a/VocaluxeLib/Menu/SingNotes/CSingNotes.cs +++ b/VocaluxeLib/Menu/SingNotes/CSingNotes.cs @@ -20,7 +20,6 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Xml.Serialization; -using VocaluxeLib.Xml; namespace VocaluxeLib.Menu.SingNotes { @@ -105,55 +104,6 @@ namespace VocaluxeLib.Menu.SingNotes public bool ThemeLoaded { get; private set; } - public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) - { - string item = xmlPath + "/" + elementName; - ThemeLoaded = true; - - ThemeLoaded &= xmlReader.GetValue(item + "/SkinLeft", out _Theme.SkinLeft, String.Empty); - ThemeLoaded &= xmlReader.GetValue(item + "/SkinMiddle", out _Theme.SkinMiddle, String.Empty); - ThemeLoaded &= xmlReader.GetValue(item + "/SkinRight", out _Theme.SkinRight, String.Empty); - - ThemeLoaded &= xmlReader.GetValue(item + "/SkinFillLeft", out _Theme.SkinLeft, String.Empty); - ThemeLoaded &= xmlReader.GetValue(item + "/SkinFillMiddle", out _Theme.SkinMiddle, String.Empty); - ThemeLoaded &= xmlReader.GetValue(item + "/SkinFillRight", out _Theme.SkinRight, String.Empty); - - ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackgroundLeft", out _Theme.SkinBackgroundLeft, String.Empty); - ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackgroundMiddle", out _Theme.SkinBackgroundMiddle, String.Empty); - ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackgroundRight", out _Theme.SkinBackgroundRight, String.Empty); - - ThemeLoaded &= xmlReader.GetValue(item + "/SkinGoldenStar", out _Theme.SkinGoldenStar, String.Empty); - ThemeLoaded &= xmlReader.GetValue(item + "/SkinToneHelper", out _Theme.SkinToneHelper, String.Empty); - ThemeLoaded &= xmlReader.GetValue(item + "/SkinPerfectNoteStar", out _Theme.SkinPerfectNoteStart, String.Empty); - - int i = 0; - _BarPos = new SRectF[CBase.Settings.GetMaxNumPlayer(),CBase.Settings.GetMaxNumPlayer()]; - for (int numplayer = 0; numplayer < CBase.Settings.GetMaxNumPlayer(); numplayer++) - { - for (int player = 0; player <= numplayer; player++) - { - _BarPos[player, numplayer] = new SRectF(); - string target = "/BarPositions/P" + (player + 1) + "N" + (numplayer + 1); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "X", ref _BarPos[player, numplayer].X); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "Y", ref _BarPos[player, numplayer].Y); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "Z", ref _BarPos[player, numplayer].Z); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "W", ref _BarPos[player, numplayer].W); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "H", ref _BarPos[player, numplayer].H); - _Theme.BarPos[i].Name = "P" + (player + 1) + "N" + (numplayer + 1); - _Theme.BarPos[i].Rect = _BarPos[player, numplayer]; - i++; - } - } - - if (ThemeLoaded) - { - _Theme.Name = elementName; - LoadSkin(); - } - - return ThemeLoaded; - } - public void Init(int numPlayers) { PlayerNotes.Clear(); diff --git a/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs b/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs index 21e66baf..d4328025 100644 --- a/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs +++ b/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs @@ -15,12 +15,10 @@ // along with Vocaluxe. If not, see . #endregion -using System; using System.Diagnostics; using System.Xml.Serialization; using VocaluxeLib.PartyModes; using VocaluxeLib.Songs; -using VocaluxeLib.Xml; namespace VocaluxeLib.Menu.SongMenu { @@ -201,80 +199,6 @@ namespace VocaluxeLib.Menu.SongMenu { return _Theme; } - - public virtual bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) - { - string item = xmlPath + "/" + elementName; - ThemeLoaded = true; - - ThemeLoaded &= xmlReader.GetValue(item + "/CoverBackground", out _Theme.CoverBackground, String.Empty); - ThemeLoaded &= xmlReader.GetValue(item + "/CoverBigBackground", out _Theme.CoverBigBackground, String.Empty); - ThemeLoaded &= xmlReader.GetValue(item + "/DuetIcon", out _Theme.DuetIcon, String.Empty); - ThemeLoaded &= xmlReader.GetValue(item + "/VideoIcon", out _Theme.VideoIcon, String.Empty); - ThemeLoaded &= xmlReader.GetValue(item + "/MedleyCalcIcon", out _Theme.MedleyCalcIcon, String.Empty); - ThemeLoaded &= xmlReader.GetValue(item + "/MedleyTagIcon", out _Theme.MedleyTagIcon, String.Empty); - - if (xmlReader.GetValue(item + "/Color", out _Theme.Color.Name, String.Empty)) - ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out _ColorInternal); - else - { - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref _ColorInternal.R); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref _ColorInternal.G); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref _ColorInternal.B); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref _ColorInternal.A); - } - _Theme.Color.Color = _ColorInternal; - - #region SongMenuTileBoard - ThemeLoaded &= xmlReader.TryGetIntValue(item + "/SongMenuTileBoard/NumW", ref _Theme.SongMenuTileBoard.NumW); - ThemeLoaded &= xmlReader.TryGetIntValue(item + "/SongMenuTileBoard/NumH", ref _Theme.SongMenuTileBoard.NumH); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/SpaceW", ref _Theme.SongMenuTileBoard.SpaceW); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/SpaceH", ref _Theme.SongMenuTileBoard.SpaceH); - - ThemeLoaded &= xmlReader.TryGetIntValue(item + "/SongMenuTileBoard/NumWsmall", ref _Theme.SongMenuTileBoard.NumWsmall); - ThemeLoaded &= xmlReader.TryGetIntValue(item + "/SongMenuTileBoard/NumHsmall", ref _Theme.SongMenuTileBoard.NumHsmall); - - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectX", ref _Theme.SongMenuTileBoard.TileRect.X); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectY", ref _Theme.SongMenuTileBoard.TileRect.Y); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectZ", ref _Theme.SongMenuTileBoard.TileRect.Z); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectW", ref _Theme.SongMenuTileBoard.TileRect.W); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectH", ref _Theme.SongMenuTileBoard.TileRect.H); - - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallX", ref _Theme.SongMenuTileBoard.TileRectSmall.X); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallY", ref _Theme.SongMenuTileBoard.TileRectSmall.Y); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallZ", ref _Theme.SongMenuTileBoard.TileRectSmall.Z); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallW", ref _Theme.SongMenuTileBoard.TileRectSmall.W); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallH", ref _Theme.SongMenuTileBoard.TileRectSmall.H); - #endregion SongMenuTileBoard - - #region SongMenuList - ThemeLoaded &= xmlReader.TryGetIntValue(item + "/SongMenuList/ListLength", ref _Theme.SongMenuList.ListLength); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuList/SpaceW", ref _Theme.SongMenuList.SpaceW); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuList/SpaceH", ref _Theme.SongMenuList.SpaceH); - - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuList/TileRect/X", ref _Theme.SongMenuList.TileRect.X); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuList/TileRect/Y", ref _Theme.SongMenuList.TileRect.Y); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuList/TileRect/Z", ref _Theme.SongMenuList.TileRect.Z); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuList/TileRect/W", ref _Theme.SongMenuList.TileRect.W); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuList/TileRect/H", ref _Theme.SongMenuList.TileRect.H); - - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuList/TileRectSmall/X", ref _Theme.SongMenuList.TileRectSmall.X); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuList/TileRectSmall/Y", ref _Theme.SongMenuList.TileRectSmall.Y); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuList/TileRectSmall/Z", ref _Theme.SongMenuList.TileRectSmall.Z); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuList/TileRectSmall/W", ref _Theme.SongMenuList.TileRectSmall.W); - ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuList/TileRectSmall/H", ref _Theme.SongMenuList.TileRectSmall.H); - #endregion SongMenuList - - if (ThemeLoaded) - { - _Theme.Name = elementName; - - LoadSkin(); - Init(); - } - - return ThemeLoaded; - } #endregion Theme public virtual void Init() diff --git a/VocaluxeLib/Menu/SongMenu/CSongMenuList.cs b/VocaluxeLib/Menu/SongMenu/CSongMenuList.cs index 8bbd810a..771854e1 100644 --- a/VocaluxeLib/Menu/SongMenu/CSongMenuList.cs +++ b/VocaluxeLib/Menu/SongMenu/CSongMenuList.cs @@ -22,7 +22,6 @@ using System.Windows.Forms; using VocaluxeLib.Draw; using VocaluxeLib.PartyModes; using VocaluxeLib.Songs; -using VocaluxeLib.Xml; namespace VocaluxeLib.Menu.SongMenu { @@ -128,39 +127,6 @@ namespace VocaluxeLib.Menu.SongMenu _SubElements.AddRange(new IMenuElement[] {_Artist, _Title, _SongLength, _DuetIcon, _VideoIcon, _MedleyCalcIcon, _MedleyTagIcon}); } - public override bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) - { - string item = xmlPath + "/" + elementName; - - bool themeLoaded = true; - themeLoaded &= base.LoadTheme(xmlPath, elementName, xmlReader); - - - themeLoaded &= _Artist.LoadTheme(item + "/SongMenuList", "TextArtist", xmlReader); - themeLoaded &= _Title.LoadTheme(item + "/SongMenuList", "TextTitle", xmlReader); - themeLoaded &= _SongLength.LoadTheme(item + "/SongMenuList", "TextSongLength", xmlReader); - - themeLoaded &= _CoverBig.LoadTheme(item + "/SongMenuList", "StaticCoverBig", xmlReader); - themeLoaded &= _TextBG.LoadTheme(item + "/SongMenuList", "StaticTextBG", xmlReader); - themeLoaded &= _DuetIcon.LoadTheme(item + "/SongMenuList", "StaticDuetIcon", xmlReader); - themeLoaded &= _VideoIcon.LoadTheme(item + "/SongMenuList", "StaticVideoIcon", xmlReader); - themeLoaded &= _MedleyCalcIcon.LoadTheme(item + "/SongMenuList", "StaticMedleyCalcIcon", xmlReader); - themeLoaded &= _MedleyTagIcon.LoadTheme(item + "/SongMenuList", "StaticMedleyTagIcon", xmlReader); - - if (themeLoaded) - { - _Theme.Name = elementName; - - _ReadSubTheme(); - _SubElements.Clear(); - _SubElements.AddRange(new IMenuElement[] { _Artist, _Title, _SongLength, _DuetIcon, _VideoIcon, _MedleyCalcIcon, _MedleyTagIcon }); - LoadSkin(); - Init(); - } - - return themeLoaded; - } - private void _ReadSubTheme() { _Theme.SongMenuList.TextArtist = (SThemeText)_Artist.GetTheme(); diff --git a/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs b/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs index f74e81f9..4dc50faf 100644 --- a/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs +++ b/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs @@ -22,7 +22,6 @@ using System.Windows.Forms; using VocaluxeLib.Draw; using VocaluxeLib.PartyModes; using VocaluxeLib.Songs; -using VocaluxeLib.Xml; namespace VocaluxeLib.Menu.SongMenu { @@ -132,39 +131,6 @@ namespace VocaluxeLib.Menu.SongMenu _Tiles[tileNr].Selected = true; } - public override bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) - { - string item = xmlPath + "/" + elementName; - - bool themeLoaded = true; - themeLoaded &= base.LoadTheme(xmlPath, elementName, xmlReader); - - - themeLoaded &= _Artist.LoadTheme(item + "/SongMenuTileBoard", "TextArtist", xmlReader); - themeLoaded &= _Title.LoadTheme(item + "/SongMenuTileBoard", "TextTitle", xmlReader); - themeLoaded &= _SongLength.LoadTheme(item + "/SongMenuTileBoard", "TextSongLength", xmlReader); - - themeLoaded &= _CoverBig.LoadTheme(item + "/SongMenuTileBoard", "StaticCoverBig", xmlReader); - themeLoaded &= _TextBG.LoadTheme(item + "/SongMenuTileBoard", "StaticTextBG", xmlReader); - themeLoaded &= _DuetIcon.LoadTheme(item + "/SongMenuTileBoard", "StaticDuetIcon", xmlReader); - themeLoaded &= _VideoIcon.LoadTheme(item + "/SongMenuTileBoard", "StaticVideoIcon", xmlReader); - themeLoaded &= _MedleyCalcIcon.LoadTheme(item + "/SongMenuTileBoard", "StaticMedleyCalcIcon", xmlReader); - themeLoaded &= _MedleyTagIcon.LoadTheme(item + "/SongMenuTileBoard", "StaticMedleyTagIcon", xmlReader); - - if (themeLoaded) - { - _Theme.Name = elementName; - - _ReadSubTheme(); - _SubElements.Clear(); - _SubElements.AddRange(new IMenuElement[] {_Artist, _Title, _SongLength, _DuetIcon, _VideoIcon, _MedleyCalcIcon, _MedleyTagIcon}); - LoadSkin(); - Init(); - } - - return themeLoaded; - } - private void _ReadSubTheme() { _Theme.SongMenuTileBoard.TextArtist = (SThemeText)_Artist.GetTheme(); diff --git a/VocaluxeLib/PartyModes/CPartyModeNormal.cs b/VocaluxeLib/PartyModes/CPartyModeNormal.cs index a84ecb73..6d01ff74 100644 --- a/VocaluxeLib/PartyModes/CPartyModeNormal.cs +++ b/VocaluxeLib/PartyModes/CPartyModeNormal.cs @@ -67,6 +67,7 @@ namespace VocaluxeLib.PartyModes _ScreenSongOptions.Sorting.SearchString = String.Empty; _ScreenSongOptions.Sorting.SearchActive = false; _ScreenSongOptions.Sorting.DuetOptions = EDuetOptions.All; + _ScreenSongOptions.Sorting.FilterPlaylistID = -1; } public override bool Init() diff --git a/VocaluxeLib/PartyModes/IPartyMode.cs b/VocaluxeLib/PartyModes/IPartyMode.cs index c2c431a2..a4bad99e 100644 --- a/VocaluxeLib/PartyModes/IPartyMode.cs +++ b/VocaluxeLib/PartyModes/IPartyMode.cs @@ -34,6 +34,7 @@ namespace VocaluxeLib.PartyModes public EOffOn IgnoreArticles; public string SearchString; public bool SearchActive; + public int FilterPlaylistID; //show only songs that are in this playlist, -1 for all songs public EDuetOptions DuetOptions; } @@ -47,6 +48,11 @@ namespace VocaluxeLib.PartyModes /// public int SongIndex; + /// + /// If != -1, the SongMenu should enter show category based on provided category index if possible + /// + public int CategoryIndex; + /// /// If true, the SongMenu should perform the select random song method /// diff --git a/VocaluxeLib/Structs.cs b/VocaluxeLib/Structs.cs index 9c1d4a0b..5dbd582b 100644 --- a/VocaluxeLib/Structs.cs +++ b/VocaluxeLib/Structs.cs @@ -137,23 +137,6 @@ namespace VocaluxeLib get { return A.HasValue; } } - /// - /// Use only for old code! Remove when removing old LoadTheme() - /// - [XmlIgnore] - public SColorF Color - { - set - { - if (NameSpecified) - return; - R = value.R; - G = value.G; - B = value.B; - A = value.A; - } - } - public bool Get(int partyModeId, out SColorF color) { bool ok; diff --git a/VocaluxeLib/VocaluxeLib.csproj b/VocaluxeLib/VocaluxeLib.csproj index 2950a6ed..fd9b3302 100644 --- a/VocaluxeLib/VocaluxeLib.csproj +++ b/VocaluxeLib/VocaluxeLib.csproj @@ -96,6 +96,7 @@ + @@ -115,8 +116,6 @@ - - diff --git a/VocaluxeLib/Xml/CXMLReader.cs b/VocaluxeLib/Xml/CXMLReader.cs deleted file mode 100644 index 6ff2f612..00000000 --- a/VocaluxeLib/Xml/CXMLReader.cs +++ /dev/null @@ -1,137 +0,0 @@ -#region license -// This file is part of Vocaluxe. -// -// Vocaluxe is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Vocaluxe is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Vocaluxe. If not, see . -#endregion - -using System; -using System.Collections.Generic; -using System.Xml.XPath; - -namespace VocaluxeLib.Xml -{ - public class CXmlReader : CXmlReaderBase - { - private readonly XPathNavigator _Navigator; - private readonly String _FilePath; - - public string FilePath - { - get { return _FilePath; } - } - - //Private method. Use OpenFile factory method to get an instance - private CXmlReader(string uri) - { - _FilePath = uri; - var xmlDoc = new XPathDocument(uri); - _Navigator = xmlDoc.CreateNavigator(); - } - - public XPathNavigator Navigator - { - get { return _Navigator; } - } - - public static CXmlReader OpenFile(string fileName) - { - try - { - return new CXmlReader(fileName); - } - catch (Exception e) - { - CBase.Log.LogError("Can't open XML file: " + fileName + ": " + e.Message); - return null; - } - } - - public override bool GetValue(string xPath, out string value, string defaultValue = "") - { - int resultCt = 0; - string val = string.Empty; - - _Navigator.MoveToRoot(); - XPathNodeIterator iterator = _Navigator.Select(xPath); - - while (iterator.MoveNext()) - { - val = iterator.Current.Value; - resultCt++; - } - - if (resultCt != 1) - { - value = defaultValue; - return false; - } - value = val; - return true; - } - - public override bool GetAttribute(string xPath, string attribute, out string value) - { - _Navigator.MoveToRoot(); - XPathNodeIterator iterator = _Navigator.Select(xPath); - if (iterator.MoveNext()) - { - value = iterator.Current.GetAttribute(attribute, ""); - return true; - } - value = null; - return false; - } - - public List GetNames(string xPath) - { - var values = new List(); - - _Navigator.MoveToRoot(); - XPathNodeIterator iterator = _Navigator.Select(xPath); - while (iterator.MoveNext()) - values.Add(iterator.Current.LocalName); - - return values; - } - - public IEnumerable GetAttributes(string xPath, string attribute) - { - var values = new List(); - - _Navigator.MoveToRoot(); - XPathNodeIterator iterator = _Navigator.Select(xPath); - while (iterator.MoveNext()) - values.Add(iterator.Current.GetAttribute(attribute, "")); - - return values; - } - - public bool GetValues(string xPath, ref List values) - { - _Navigator.MoveToRoot(); - XPathNodeIterator iterator = _Navigator.Select(xPath); - while (iterator.MoveNext()) - values.Add(iterator.Current.Value); - - return true; - } - - public bool ItemExists(string xPath) - { - _Navigator.MoveToRoot(); - - return _Navigator.Select(xPath).MoveNext(); - } - } -} \ No newline at end of file diff --git a/VocaluxeLib/Xml/CXmlReaderBase.cs b/VocaluxeLib/Xml/CXmlReaderBase.cs deleted file mode 100644 index 739abd2f..00000000 --- a/VocaluxeLib/Xml/CXmlReaderBase.cs +++ /dev/null @@ -1,78 +0,0 @@ -#region license -// This file is part of Vocaluxe. -// -// Vocaluxe is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Vocaluxe is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Vocaluxe. If not, see . -#endregion - -using System; - -namespace VocaluxeLib.Xml -{ - /// - /// Base class that provides basic methods for reading xml, while the actual XML implementation is still abstract to allow different implementations - /// - public abstract class CXmlReaderBase - { - public abstract bool GetValue(string xPath, out string value, string defaultValue = ""); - public abstract bool GetAttribute(string xPath, string attribute, out string value); - - public bool TryGetBoolValue(string xPath, out bool value, bool defaultValue = false) - { - value = defaultValue; - string val; - return GetValue(xPath, out val) && bool.TryParse(val, out value); - } - - public bool TryGetIntValue(string xPath, ref int value, int? defaultValue = null) - { - string val; - bool ok = GetValue(xPath, out val) && int.TryParse(val, out value); - if (!ok && defaultValue.HasValue) - value = defaultValue.Value; - return ok; - } - - public bool TryGetFloatValue(string xPath, ref float value) - { - string val; - return GetValue(xPath, out val, value.ToString()) && CHelper.TryParse(val, out value); - } - - public bool TryGetEnumValue(string xPath, ref T value) where T : struct - { - string val; - return GetValue(xPath, out val, Enum.GetName(typeof(T), value)) && CHelper.TryParse(val, out value, true); - } - - public bool TryGetIntValueRange(string xPath, ref int value, int min = 0, int max = 100) - { - return TryGetIntValue(xPath, ref value) && value.IsInRange(min, max); - } - - /// - /// Gets a normalized (0<=x<=1) float value - /// - /// - /// - /// - /// True if exists and is normalized - public bool TryGetNormalizedFloatValue(string xPath, ref float value, float defaultValue = 0) - { - bool ok = TryGetFloatValue(xPath, ref value) && value.IsInRange(0f, 1f); - if (!ok) - value = defaultValue; - return ok; - } - } -} \ No newline at end of file