Merge branch 'develop' of https://github.com/Vocaluxe/Vocaluxe into wiimote

This commit is contained in:
Alexander Eckart committed 2012-12-09 19:10:09 +01:00
commit 33d3631754
64 files changed
+2097 -124

No files matched your search

Binary file not shown.
Binary file not shown.
+12 -1
View File
@@ -18,6 +18,7 @@
<TR_DEBUG_TEXTURES>Textures</TR_DEBUG_TEXTURES>
<TR_DEBUG_TONE_ABS>ToneAbs</TR_DEBUG_TONE_ABS>
<TR_DEBUG_MAX_VOLUME>Max. Volume</TR_DEBUG_MAX_VOLUME>
<TR_DEBUG_SONGS>Geladene Songs</TR_DEBUG_SONGS>
<TR_DEBUG_MOUSE>Maus</TR_DEBUG_MOUSE>
<!--General: Game-Modes-->
<TR_GAMEMODE_NORMAL>Normal</TR_GAMEMODE_NORMAL>
@@ -159,10 +160,14 @@
<TR_SCREENPROFILES_ACTIVE>Aktiv</TR_SCREENPROFILES_ACTIVE>
<TR_SCREENPROFILES_BUTTON_NEW>Neu</TR_SCREENPROFILES_BUTTON_NEW>
<TR_SCREENPROFILES_BUTTON_DELETE>Löschen</TR_SCREENPROFILES_BUTTON_DELETE>
<TR_SCREENPROFILES_BUTTON_TAKESNAPSHOT>Snapshot</TR_SCREENPROFILES_BUTTON_TAKESNAPSHOT>
<TR_SCREENPROFILES_BUTTON_SAVESNAPSHOT>Snapshot speichern</TR_SCREENPROFILES_BUTTON_SAVESNAPSHOT>
<TR_SCREENPROFILES_BUTTON_DISCARDSNAPSHOT>Snapshot löschen</TR_SCREENPROFILES_BUTTON_DISCARDSNAPSHOT>
<TR_SCREENPROFILES_BUTTON_WEBCAM>Webcam</TR_SCREENPROFILES_BUTTON_WEBCAM>
<!--ScreenOptions-->
<TR_SCREENO_OPTIONS>Einstellungen</TR_SCREENO_OPTIONS>
<TR_SCREENO_BUTTON_GAME>Spiel</TR_SCREENO_BUTTON_GAME>
<TR_SCRENNO_BUTTON_SOUND>Sound</TR_SCRENNO_BUTTON_SOUND>
<TR_SCREENO_BUTTON_SOUND>Sound</TR_SCREENO_BUTTON_SOUND>
<TR_SCREENO_BUTTON_RECORD>Aufnahme</TR_SCREENO_BUTTON_RECORD>
<TR_SCREENO_BUTTON_VIDEO>Video</TR_SCREENO_BUTTON_VIDEO>
<TR_SCREENO_BUTTON_LYRICS>Songtext</TR_SCREENO_BUTTON_LYRICS>
@@ -190,6 +195,8 @@
<TR_SCREENOSOUND_BACKGROUNDMUSIC>Hintergrundmusik</TR_SCREENOSOUND_BACKGROUNDMUSIC>
<TR_SCREENOSOUND_BACKGROUNDMUSICVOLUME>Hintergrundmusiklautstärke</TR_SCREENOSOUND_BACKGROUNDMUSICVOLUME>
<TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE>Hintergrundmusikquelle</TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE>
<TR_SCREENOSOUND_PREVIEWMUSICVOLUME>Vorschaulautstärke</TR_SCREENOSOUND_PREVIEWMUSICVOLUME>
<TR_SCREENOSOUND_GAMEMUSICVOLUME>Spiellautstärke</TR_SCREENOSOUND_GAMEMUSICVOLUME>
<!--ScreenOptionsTheme-->
<TR_SCREENOTHEME_OPTIONS>Designeinstellungen</TR_SCREENOTHEME_OPTIONS>
<TR_SCREENOTHEME_THEME>Design</TR_SCREENOTHEME_THEME>
@@ -210,5 +217,9 @@
<TR_SCREENOVIDEO_VIDEOPREVIEW>Video-Vorschau</TR_SCREENOVIDEO_VIDEOPREVIEW>
<TR_SCREENOVIDEO_VIDEOINSONGS>Videos während des Singens</TR_SCREENOVIDEO_VIDEOINSONGS>
<TR_SCREENO_VIDEO_VIDEOSTOBACKGROUND>Videos der Hintergrundmusik</TR_SCREENO_VIDEO_VIDEOSTOBACKGROUND>
<TR_SCREENO_VIDEO_WEBCAMDEVICES>Webcams</TR_SCREENO_VIDEO_WEBCAMDEVICES>
<TR_SCREENO_VIDEO_WEBCAMCAPABILITIES>Webcamfähigkeiten</TR_SCREENO_VIDEO_WEBCAMCAPABILITIES>
<!--ScreenPopupVolumeControl-->
<TR_SCREENPVOLUMECONTROL_VOLUME>Lautstärke</TR_SCREENPVOLUMECONTROL_VOLUME>
</Texts>
</root>
+12 -1
View File
@@ -18,6 +18,7 @@
<TR_DEBUG_TEXTURES>Textures</TR_DEBUG_TEXTURES>
<TR_DEBUG_TONE_ABS>ToneAbs</TR_DEBUG_TONE_ABS>
<TR_DEBUG_MAX_VOLUME>Max Volume</TR_DEBUG_MAX_VOLUME>
<TR_DEBUG_SONGS>Loaded songs</TR_DEBUG_SONGS>
<TR_DEBUG_MOUSE>Mouse</TR_DEBUG_MOUSE>
<!--General: Game-Modes-->
<TR_GAMEMODE_NORMAL>Normal</TR_GAMEMODE_NORMAL>
@@ -159,10 +160,14 @@
<TR_SCREENPROFILES_ACTIVE>Active</TR_SCREENPROFILES_ACTIVE>
<TR_SCREENPROFILES_BUTTON_NEW>New</TR_SCREENPROFILES_BUTTON_NEW>
<TR_SCREENPROFILES_BUTTON_DELETE>Delete</TR_SCREENPROFILES_BUTTON_DELETE>
<TR_SCREENPROFILES_BUTTON_TAKESNAPSHOT>Take Snapshot</TR_SCREENPROFILES_BUTTON_TAKESNAPSHOT>
<TR_SCREENPROFILES_BUTTON_SAVESNAPSHOT>Save Snapshot</TR_SCREENPROFILES_BUTTON_SAVESNAPSHOT>
<TR_SCREENPROFILES_BUTTON_DISCARDSNAPSHOT>Delete Snapshot</TR_SCREENPROFILES_BUTTON_DISCARDSNAPSHOT>
<TR_SCREENPROFILES_BUTTON_WEBCAM>Webcam</TR_SCREENPROFILES_BUTTON_WEBCAM>
<!--ScreenOptions-->
<TR_SCREENO_OPTIONS>Menu Options</TR_SCREENO_OPTIONS>
<TR_SCREENO_BUTTON_GAME>Game</TR_SCREENO_BUTTON_GAME>
<TR_SCRENNO_BUTTON_SOUND>Sound</TR_SCRENNO_BUTTON_SOUND>
<TR_SCREENO_BUTTON_SOUND>Sound</TR_SCREENO_BUTTON_SOUND>
<TR_SCREENO_BUTTON_RECORD>Record</TR_SCREENO_BUTTON_RECORD>
<TR_SCREENO_BUTTON_VIDEO>Video</TR_SCREENO_BUTTON_VIDEO>
<TR_SCREENO_BUTTON_LYRICS>Lyrics</TR_SCREENO_BUTTON_LYRICS>
@@ -190,6 +195,8 @@
<TR_SCREENOSOUND_BACKGROUNDMUSIC>Background Music</TR_SCREENOSOUND_BACKGROUNDMUSIC>
<TR_SCREENOSOUND_BACKGROUNDMUSICVOLUME>Background Music Volume</TR_SCREENOSOUND_BACKGROUNDMUSICVOLUME>
<TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE>Background Music Source</TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE>
<TR_SCREENOSOUND_PREVIEWMUSICVOLUME>Preview Music Volume</TR_SCREENOSOUND_PREVIEWMUSICVOLUME>
<TR_SCREENOSOUND_GAMEMUSICVOLUME>Game Music Volume</TR_SCREENOSOUND_GAMEMUSICVOLUME>
<!--ScreenOptionsTheme-->
<TR_SCREENOTHEME_OPTIONS>Theme Options</TR_SCREENOTHEME_OPTIONS>
<TR_SCREENOTHEME_THEME>Theme</TR_SCREENOTHEME_THEME>
@@ -210,5 +217,9 @@
<TR_SCREENOVIDEO_VIDEOPREVIEW>Video Preview</TR_SCREENOVIDEO_VIDEOPREVIEW>
<TR_SCREENOVIDEO_VIDEOINSONGS>Videos while singing</TR_SCREENOVIDEO_VIDEOINSONGS>
<TR_SCREENO_VIDEO_VIDEOSTOBACKGROUND>Display current backgroundmusic video</TR_SCREENO_VIDEO_VIDEOSTOBACKGROUND>
<TR_SCREENO_VIDEO_WEBCAMDEVICES>Webcams</TR_SCREENO_VIDEO_WEBCAMDEVICES>
<TR_SCREENO_VIDEO_WEBCAMCAPABILITIES>Webcamcapabilities</TR_SCREENO_VIDEO_WEBCAMCAPABILITIES>
<!--ScreenPopupVolumeControl-->
<TR_SCREENPVOLUMECONTROL_VOLUME>Volume</TR_SCREENPVOLUMECONTROL_VOLUME>
</Texts>
</root>
+36 -3
View File
@@ -18,11 +18,13 @@
<TR_DEBUG_TEXTURES>Textures</TR_DEBUG_TEXTURES>
<TR_DEBUG_TONE_ABS>ToneAbs</TR_DEBUG_TONE_ABS>
<TR_DEBUG_MAX_VOLUME>Volume Max</TR_DEBUG_MAX_VOLUME>
<TR_DEBUG_SONGS>Chansons chargées</TR_DEBUG_SONGS>
<TR_DEBUG_MOUSE>Souris</TR_DEBUG_MOUSE>
<!--General: Game-Modes-->
<TR_GAMEMODE_NORMAL>Normal</TR_GAMEMODE_NORMAL>
<TR_GAMEMODE_DUET>Duo</TR_GAMEMODE_DUET>
<TR_GAMEMODE_MEDLEY>Medley</TR_GAMEMODE_MEDLEY>
<TR_GAMEMODE_SHORTSONG>Version courte</TR_GAMEMODE_SHORTSONG>
<!--General: Ratings-->
<TR_RATING_VOCAL_HERO>Vocal Hero</TR_RATING_VOCAL_HERO>
<TR_RATING_SUPERSTAR>Superstar</TR_RATING_SUPERSTAR>
@@ -88,6 +90,10 @@
<TR_CONFIG_OWN_MUSIC>Musique personnelle et Musique de fond</TR_CONFIG_OWN_MUSIC>
<TR_CONFIG_NO_OWN_MUSIC>Pas de Musique personnelle</TR_CONFIG_NO_OWN_MUSIC>
<TR_CONFIG_ONLY_OWN_MUSIC>Seulement la Musique personnelle</TR_CONFIG_ONLY_OWN_MUSIC>
<!--Config: FadePlayerInfo-->
<TR_CONFIG_FADEPLAYERINFO_ALL>Tout</TR_CONFIG_FADEPLAYERINFO_ALL>
<TR_CONFIG_FADEPLAYERINFO_INFO>Seulement noms et avatars</TR_CONFIG_FADEPLAYERINFO_INFO>
<TR_CONFIG_FADEPLAYERINFO_OFF>Rien</TR_CONFIG_FADEPLAYERINFO_OFF>
<!--Screens-->
<!--ScreenLoad-->
<TR_SCREENLOAD_LOADING>Chargement</TR_SCREENLOAD_LOADING>
@@ -114,10 +120,19 @@
<TR_SCREENNAMES_WARNING_PROFILES_PL>Attention: Aucun profils n'est assigné aux joueurs %v!</TR_SCREENNAMES_WARNING_PROFILES_PL>
<!--ScreenSong-->
<TR_SCREENSONG_MENU>Choix de la chanson</TR_SCREENSONG_MENU>
<TR_SCREENSONG_BUTTON_SING>Chanter</TR_SCREENSONG_BUTTON_SING>
<TR_SCREENSONG_BUTTON_PLAYLIST>Ajouter à la playlist</TR_SCREENSONG_BUTTON_PLAYLIST>
<TR_SCREENSONG_BUTTON_CANCEL>Annuler</TR_SCREENSONG_BUTTON_CANCEL>
<TR_SCREENSONG_BUTTON_RANDOM>Choisir une chanson aléatoire</TR_SCREENSONG_BUTTON_RANDOM>
<TR_SCREENSONG_BUTTON_RANDOMCAT>Choisir une catégorie aléatoire</TR_SCREENSONG_BUTTON_RANDOMCAT>
<TR_SCREENSONG_BUTTON_SINGALL>Chanter toutes les chansons</TR_SCREENSONG_BUTTON_SINGALL>
<TR_SCREENSONG_BUTTON_SINGALLVISIBLE>Chanter toutes les chansons visibles</TR_SCREENSONG_BUTTON_SINGALLVISIBLE>
<TR_SCREENSONG_BUTTON_OPENPLAYLIST>Ouvrir une playlist</TR_SCREENSONG_BUTTON_OPENPLAYLIST>
<TR_SCREENSONG_NEWPLAYLIST>Nouvelle playlist</TR_SCREENSONG_NEWPLAYLIST>
<TR_SCREENSONG_SONGOPTIONS>Option de la chanson</TR_SCREENSONG_SONGOPTIONS>
<TR_SCREENSONG_SEARCH>Rechercher:</TR_SCREENSONG_SEARCH>
<TR_SCREENSONG_NOLANGUAGE>Pas de Langue</TR_SCREENSONG_NOLANGUAGE>
<TR_SCREENSONG_NOYEAR>Pas d'Année</TR_SCREENSONG_NOYEAR>
<TR_SCREENSONG_NEWPLAYLIST>TODO: New Playlist</TR_SCREENSONG_NEWPLAYLIST>
<TR_SCREENSONG_NOGENRE>Pas de Genre</TR_SCREENSONG_NOGENRE>
<TR_SCREENSONG_NOEDITION>Pas d'Edition</TR_SCREENSONG_NOEDITION>
<TR_SCREENSONG_ALLSONGS>Toutes les chansons</TR_SCREENSONG_ALLSONGS>
@@ -126,12 +141,14 @@
<!--ScreenSing-->
<TR_SCREENSING_PAUSE>Pause</TR_SCREENSING_PAUSE>
<TR_SCREENSING_BUTTON_CANCEL>Arrêter de chanter</TR_SCREENSING_BUTTON_CANCEL>
<TR_SCREENSING_BUTTON_CONTINUE>Continuer</TR_SCREENSING_BUTTON_CONTINUE>
<TR_SCREENSING_BUTTON_CONTINUE>Continuer</TR_SCREENSING_BUTTON_CONTINUE>
<TR_SCREENSING_BUTTON_SKIP>Passer cette chanson</TR_SCREENSING_BUTTON_SKIP>
<!--ScreenScore-->
<TR_SCREENSCORE_SCORES>Scores</TR_SCREENSCORE_SCORES>
<TR_SCREENSCORE_RATING>Note</TR_SCREENSCORE_RATING>
<TR_SCREENSCORE_POINTS>Points</TR_SCREENSCORE_POINTS>
<TR_SCREENSCORE_GAMEDIFFICULTY>Difficulté</TR_SCREENSCORE_GAMEDIFFICULTY>
<TR_SCREENSCORE_OVERALLSCORE>Score total</TR_SCREENSCORE_OVERALLSCORE>
<!--ScreenHighscore-->
<TR_SCREENHIGHSCORE_HIGHSCORE>Meilleurs Scores</TR_SCREENHIGHSCORE_HIGHSCORE>
<!--ScreenProfiles-->
@@ -143,12 +160,17 @@
<TR_SCREENPROFILES_ACTIVE>Actif</TR_SCREENPROFILES_ACTIVE>
<TR_SCREENPROFILES_BUTTON_NEW>Nouveau</TR_SCREENPROFILES_BUTTON_NEW>
<TR_SCREENPROFILES_BUTTON_DELETE>Supprimer</TR_SCREENPROFILES_BUTTON_DELETE>
<TR_SCREENPROFILES_BUTTON_TAKESNAPSHOT>Prendre une photo</TR_SCREENPROFILES_BUTTON_TAKESNAPSHOT>
<TR_SCREENPROFILES_BUTTON_SAVESNAPSHOT>Sauvegarder la photo</TR_SCREENPROFILES_BUTTON_SAVESNAPSHOT>
<TR_SCREENPROFILES_BUTTON_DISCARDSNAPSHOT>Supprimer la photo</TR_SCREENPROFILES_BUTTON_DISCARDSNAPSHOT>
<TR_SCREENPROFILES_BUTTON_WEBCAM>Webcam</TR_SCREENPROFILES_BUTTON_WEBCAM>
<!--ScreenOptions-->
<TR_SCREENO_OPTIONS>Menu des Options</TR_SCREENO_OPTIONS>
<TR_SCREENO_BUTTON_GAME>Jeu</TR_SCREENO_BUTTON_GAME>
<TR_SCRENNO_BUTTON_SOUND>Son</TR_SCRENNO_BUTTON_SOUND>
<TR_SCREENO_BUTTON_SOUND>Son</TR_SCREENO_BUTTON_SOUND>
<TR_SCREENO_BUTTON_RECORD>Enregistrement</TR_SCREENO_BUTTON_RECORD>
<TR_SCREENO_BUTTON_VIDEO>Vidéo</TR_SCREENO_BUTTON_VIDEO>
<TR_SCREENO_BUTTON_LYRICS>Paroles</TR_SCREENO_BUTTON_LYRICS>
<TR_SCREENO_BUTTON_THEME>Thème</TR_SCREENO_BUTTON_THEME>
<!--ScreenOptionsGame-->
<TR_SCREENOGAME_OPTIONS>Options du Jeu</TR_SCREENOGAME_OPTIONS>
@@ -173,6 +195,8 @@
<TR_SCREENOSOUND_BACKGROUNDMUSIC>Musique de fond</TR_SCREENOSOUND_BACKGROUNDMUSIC>
<TR_SCREENOSOUND_BACKGROUNDMUSICVOLUME>Volume de la Musique de fond</TR_SCREENOSOUND_BACKGROUNDMUSICVOLUME>
<TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE>Source de la Musique de fond</TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE>
<TR_SCREENOSOUND_PREVIEWMUSICVOLUME>Volume de la musique de prévisualisation</TR_SCREENOSOUND_PREVIEWMUSICVOLUME>
<TR_SCREENOSOUND_GAMEMUSICVOLUME>Volume de la musique du jeu</TR_SCREENOSOUND_GAMEMUSICVOLUME>
<!--ScreenOptionsTheme-->
<TR_SCREENOTHEME_OPTIONS>Options du Thème</TR_SCREENOTHEME_OPTIONS>
<TR_SCREENOTHEME_THEME>Thème</TR_SCREENOTHEME_THEME>
@@ -181,12 +205,21 @@
<TR_SCREENOTHEME_NOTELINES>Afficher les portées</TR_SCREENOTHEME_NOTELINES>
<TR_SCREENOTHEME_TONEHELPER>Afficher l'aide pour la Tonalité</TR_SCREENOTHEME_TONEHELPER>
<TR_SCREENOTHEME_TIMERLOOK>Apparence du Minuteur</TR_SCREENOTHEME_TIMERLOOK>
<TR_SCREENOTHEME_FADEINFO>Dégradé des info des joueurs</TR_SCREENOTHEME_FADEINFO>
<TR_SCREENOTHEME_COVERLOADING>Chargement des couvertures</TR_SCREENOTHEME_COVERLOADING>
<!--ScreenOptionsLyrics-->
<TR_SCREENOLYRICS_OPTIONS>Options des paroles</TR_SCREENOLYRICS_OPTIONS>
<TR_SCREENOLYRICS_STYLE>Style</TR_SCREENOLYRICS_STYLE>
<TR_SCREENOLYRICS_ONTOP>Paroles en haut</TR_SCREENOLYRICS_ONTOP>
<!--ScreenOptionsVideo-->
<TR_SCREENOVIDEO_OPTIONS>Options Vidéo</TR_SCREENOVIDEO_OPTIONS>
<TR_SCREENOVIDEO_VIDEOBACKGROUNDS>Vidéo en arrière plan</TR_SCREENOVIDEO_VIDEOBACKGROUNDS>
<TR_SCREENOVIDEO_VIDEOPREVIEW>Prévisualisation des Vidéos</TR_SCREENOVIDEO_VIDEOPREVIEW>
<TR_SCREENOVIDEO_VIDEOINSONGS>Vidéos pendant que l'on chante</TR_SCREENOVIDEO_VIDEOINSONGS>
<TR_SCREENO_VIDEO_VIDEOSTOBACKGROUND>Afficher la vidéo de la musique de fond</TR_SCREENO_VIDEO_VIDEOSTOBACKGROUND>
<TR_SCREENO_VIDEO_WEBCAMDEVICES>Webcams</TR_SCREENO_VIDEO_WEBCAMDEVICES>
<TR_SCREENO_VIDEO_WEBCAMCAPABILITIES>Webcamcapabilities</TR_SCREENO_VIDEO_WEBCAMCAPABILITIES>
<!--ScreenPopupVolumeControl-->
<TR_SCREENPVOLUMECONTROL_VOLUME>Volume</TR_SCREENPVOLUMECONTROL_VOLUME>
</Texts>
</root>
+1 -1
View File
@@ -146,7 +146,7 @@
<!--ScreenOptions-->
<TR_SCREENO_OPTIONS>Opciones del Menú</TR_SCREENO_OPTIONS>
<TR_SCREENO_BUTTON_GAME>Juego</TR_SCREENO_BUTTON_GAME>
<TR_SCRENNO_BUTTON_SOUND>Sonido</TR_SCRENNO_BUTTON_SOUND>
<TR_SCREENO_BUTTON_SOUND>Sonido</TR_SCREENO_BUTTON_SOUND>
<TR_SCREENO_BUTTON_RECORD>Grabación</TR_SCREENO_BUTTON_RECORD>
<TR_SCREENO_BUTTON_VIDEO>Video</TR_SCREENO_BUTTON_VIDEO>
<TR_SCREENO_BUTTON_THEME>Estilos</TR_SCREENO_BUTTON_THEME>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

@@ -155,7 +155,7 @@
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCRENNO_BUTTON_SOUND</Text>
<Text>TR_SCREENO_BUTTON_SOUND</Text>
</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -401,4 +401,4 @@
</SReflection>
</ButtonOptionsTheme>
</ScreenOptions>
</root>
</root>
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<ScreenOptionsSound>
<ScreenVersion>2</ScreenVersion>
<ScreenVersion>3</ScreenVersion>
<Background1>
<!--<Type>: Background type: None, Color, Texture, Video-->
<Type>Video</Type>
@@ -145,6 +145,64 @@
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
</Text4>
<Text5>
<!--<X>, <Y>: Text position-->
<X>75</X>
<Y>285</Y>
<!--<Z>: Text position-->
<Z>0,00</Z>
<!--<H>: Text height-->
<H>32</H>
<!--<MaxW>: Maximum text width (if exists)-->
<!--<Color>: Text color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>StaticColor</Color>
<!--<SColor>: Selected Text color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>TextSColor</SColor>
<!--<Align>: Text align horizontal: Left, Center, Right-->
<Align>Left</Align>
<!--<HAlign>: Text align vertical (on downsizing): Top, Center, Bottom-->
<HAlign>Center</HAlign>
<!--<Style>: Text style: Normal, Italic, Bold, BoldItalic-->
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOSOUND_PREVIEWMUSICVOLUME</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
</Text5>
<Text6>
<!--<X>, <Y>: Text position-->
<X>75</X>
<Y>345</Y>
<!--<Z>: Text position-->
<Z>0,00</Z>
<!--<H>: Text height-->
<H>32</H>
<!--<MaxW>: Maximum text width (if exists)-->
<!--<Color>: Text color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>StaticColor</Color>
<!--<SColor>: Selected Text color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>TextSColor</SColor>
<!--<Align>: Text align horizontal: Left, Center, Right-->
<Align>Left</Align>
<!--<HAlign>: Text align vertical (on downsizing): Top, Center, Bottom-->
<HAlign>Center</HAlign>
<!--<Style>: Text style: Normal, Italic, Bold, BoldItalic-->
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOSOUND_GAMEMUSICVOLUME</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
</Text6>
<ButtonExit>
<!--<Skin>: Texture name-->
<Skin>Button</Skin>
@@ -397,5 +455,135 @@
<!--<NumVisible>: Number of visible elements in the slide-->
<NumVisible>1</NumVisible>
</SelectSlideBackgroundMusicSource>
<SelectSlidePreviewMusicVolume>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<SkinArrowLeft>: Texture name of left arrow-->
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
<!--<SkinArrowRight>: Texture name of right arrow-->
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
<!--<SkinSelected>: Texture name for selected SelectSlide-->
<SkinSelected>SelectSlide</SkinSelected>
<!--<SkinArrowLeftSelected>: Texture name of selected left arrow-->
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
<!--<SkinArrowRightSelected>: Texture name of selected right arrow-->
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
<!--<SkinHighlighted>: Texture name for highlighted SelectSlide-->
<SkinHighlighted>SelectSlide</SkinHighlighted>
<!--<X>, <Y>, <Z>, <W>, <H>: SelectSlide position, width and height-->
<X>500</X>
<Y>280</Y>
<Z>0,00</Z>
<W>700</W>
<H>50</H>
<!--<ArrowLeftX>, <ArrowLeftY>, <ArrowLeftZ>, <ArrowLeftW>, <ArrowLeftH>: Left arrow position, width and height-->
<ArrowLeftX>505</ArrowLeftX>
<ArrowLeftY>285</ArrowLeftY>
<ArrowLeftZ>0,00</ArrowLeftZ>
<ArrowLeftW>40</ArrowLeftW>
<ArrowLeftH>40</ArrowLeftH>
<!--<ArrowRightX>, <ArrowRightY>, <ArrowRightZ>, <ArrowRightW>, <ArrowRightH>: Right arrow position, width and height-->
<ArrowRightX>1170</ArrowRightX>
<ArrowRightY>285</ArrowRightY>
<ArrowRightZ>0,00</ArrowRightZ>
<ArrowRightW>40</ArrowRightW>
<ArrowRightH>40</ArrowRightH>
<!--<Color>: SelectSlide color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>SelectSlideColor</Color>
<!--<SColor>: Selected SelectSlide color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>SelectSlideSColor</SColor>
<!--<HColor>: Highlighted SelectSlide color from ColorScheme (high priority)-->
<!--or <HR>, <HG>, <HB>, <HA> (lower priority)-->
<HColor>SelectSlideHColor</HColor>
<!--<ArrowColor>: Arrow color from ColorScheme (high priority)-->
<!--or <ArrowR>, <ArrowG>, <ArrowB>, <ArrowA> (lower priority)-->
<ArrowColor>ArrowColor</ArrowColor>
<!--<ArrowSColor>: Selected arrow color from ColorScheme (high priority)-->
<!--or <ArrowSR>, <ArrowSG>, <ArrowSB>, <ArrowSA> (lower priority)-->
<ArrowSColor>ArrowSColor</ArrowSColor>
<!--<TextColor>: Text color from ColorScheme (high priority)-->
<!--or <TextR>, <TextG>, <TextB>, <TextA> (lower priority)-->
<TextColor>TextColor</TextColor>
<!--<TextSColor>: Selected text color from ColorScheme (high priority)-->
<!--or <TextSR>, <TextSG>, <TextSB>, <TextSA> (lower priority)-->
<TextSColor>TextSColor</TextSColor>
<!--<TextH>: Text height-->
<TextH>32,00</TextH>
<!--<TextMaxW>: Maximum text width (if exists)-->
<TextMaxW>500,00</TextMaxW>
<!--<TextFont>: Text font name-->
<TextFont>Outline</TextFont>
<!--<TextStyle>: Text style: Normal, Italic, Bold, BoldItalic-->
<TextStyle>Bold</TextStyle>
<!--<NumVisible>: Number of visible elements in the slide-->
<NumVisible>3</NumVisible>
</SelectSlidePreviewMusicVolume>
<SelectSlideGameMusicVolume>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<SkinArrowLeft>: Texture name of left arrow-->
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
<!--<SkinArrowRight>: Texture name of right arrow-->
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
<!--<SkinSelected>: Texture name for selected SelectSlide-->
<SkinSelected>SelectSlide</SkinSelected>
<!--<SkinArrowLeftSelected>: Texture name of selected left arrow-->
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
<!--<SkinArrowRightSelected>: Texture name of selected right arrow-->
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
<!--<SkinHighlighted>: Texture name for highlighted SelectSlide-->
<SkinHighlighted>SelectSlide</SkinHighlighted>
<!--<X>, <Y>, <Z>, <W>, <H>: SelectSlide position, width and height-->
<X>500</X>
<Y>340</Y>
<Z>0,00</Z>
<W>700</W>
<H>50</H>
<!--<ArrowLeftX>, <ArrowLeftY>, <ArrowLeftZ>, <ArrowLeftW>, <ArrowLeftH>: Left arrow position, width and height-->
<ArrowLeftX>505</ArrowLeftX>
<ArrowLeftY>345</ArrowLeftY>
<ArrowLeftZ>0,00</ArrowLeftZ>
<ArrowLeftW>40</ArrowLeftW>
<ArrowLeftH>40</ArrowLeftH>
<!--<ArrowRightX>, <ArrowRightY>, <ArrowRightZ>, <ArrowRightW>, <ArrowRightH>: Right arrow position, width and height-->
<ArrowRightX>1170</ArrowRightX>
<ArrowRightY>345</ArrowRightY>
<ArrowRightZ>0,00</ArrowRightZ>
<ArrowRightW>40</ArrowRightW>
<ArrowRightH>40</ArrowRightH>
<!--<Color>: SelectSlide color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>SelectSlideColor</Color>
<!--<SColor>: Selected SelectSlide color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>SelectSlideSColor</SColor>
<!--<HColor>: Highlighted SelectSlide color from ColorScheme (high priority)-->
<!--or <HR>, <HG>, <HB>, <HA> (lower priority)-->
<HColor>SelectSlideHColor</HColor>
<!--<ArrowColor>: Arrow color from ColorScheme (high priority)-->
<!--or <ArrowR>, <ArrowG>, <ArrowB>, <ArrowA> (lower priority)-->
<ArrowColor>ArrowColor</ArrowColor>
<!--<ArrowSColor>: Selected arrow color from ColorScheme (high priority)-->
<!--or <ArrowSR>, <ArrowSG>, <ArrowSB>, <ArrowSA> (lower priority)-->
<ArrowSColor>ArrowSColor</ArrowSColor>
<!--<TextColor>: Text color from ColorScheme (high priority)-->
<!--or <TextR>, <TextG>, <TextB>, <TextA> (lower priority)-->
<TextColor>TextColor</TextColor>
<!--<TextSColor>: Selected text color from ColorScheme (high priority)-->
<!--or <TextSR>, <TextSG>, <TextSB>, <TextSA> (lower priority)-->
<TextSColor>TextSColor</TextSColor>
<!--<TextH>: Text height-->
<TextH>32,00</TextH>
<!--<TextMaxW>: Maximum text width (if exists)-->
<TextMaxW>500,00</TextMaxW>
<!--<TextFont>: Text font name-->
<TextFont>Outline</TextFont>
<!--<TextStyle>: Text style: Normal, Italic, Bold, BoldItalic-->
<TextStyle>Bold</TextStyle>
<!--<NumVisible>: Number of visible elements in the slide-->
<NumVisible>3</NumVisible>
</SelectSlideGameMusicVolume>
</ScreenOptionsSound>
</root>
</root>
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<ScreenOptionsVideo>
<ScreenVersion>2</ScreenVersion>
<ScreenVersion>3</ScreenVersion>
<Background1>
<!--<Type>: Background type: None, Color, Texture, Video-->
<Type>Video</Type>
@@ -215,13 +215,71 @@
<!--<Style>: Text style: Normal, Italic, Bold, BoldItalic-->
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<Font>Outline</Font>
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENO_VIDEO_VIDEOSTOBACKGROUND</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
</Text5>
<Text6>
<!--<X>, <Y>: Text position-->
<X>75</X>
<Y>345</Y>
<!--<Z>: Text position-->
<Z>0,00</Z>
<!--<H>: Text height-->
<H>32</H>
<!--<MaxW>: Maximum text width (if exists)-->
<!--<Color>: Text color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>StaticColor</Color>
<!--<SColor>: Selected Text color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>TextSColor</SColor>
<!--<Align>: Text align horizontal: Left, Center, Right-->
<Align>Left</Align>
<!--<HAlign>: Text align vertical (on downsizing): Top, Center, Bottom-->
<HAlign>Center</HAlign>
<!--<Style>: Text style: Normal, Italic, Bold, BoldItalic-->
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<Text>TR_SCREENO_VIDEO_WEBCAMDEVICES</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
</Text6>
<Text7>
<!--<X>, <Y>: Text position-->
<X>75</X>
<Y>405</Y>
<!--<Z>: Text position-->
<Z>0,00</Z>
<!--<H>: Text height-->
<H>32</H>
<!--<MaxW>: Maximum text width (if exists)-->
<!--<Color>: Text color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>StaticColor</Color>
<!--<SColor>: Selected Text color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>TextSColor</SColor>
<!--<Align>: Text align horizontal: Left, Center, Right-->
<Align>Left</Align>
<!--<HAlign>: Text align vertical (on downsizing): Top, Center, Bottom-->
<HAlign>Center</HAlign>
<!--<Style>: Text style: Normal, Italic, Bold, BoldItalic-->
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<Text>TR_SCREENO_VIDEO_WEBCAMCAPABILITIES</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
</Text7>
<ButtonExit>
<!--<Skin>: Texture name-->
<Skin>Button</Skin>
@@ -533,11 +591,157 @@
<!--<TextMaxW>: Maximum text width (if exists)-->
<TextMaxW>205,33</TextMaxW>
<!--<TextFont>: Text font name-->
<TextFont>Normal</TextFont>
<TextFont>Outline</TextFont>
<!--<TextStyle>: Text style: Normal, Italic, Bold, BoldItalic-->
<TextStyle>Bold</TextStyle>
<!--<NumVisible>: Number of visible elements in the slide-->
<NumVisible>3</NumVisible>
</SelectSlideVideosToBackground>
<SelectSlideWebcamDevices>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<SkinArrowLeft>: Texture name of left arrow-->
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
<!--<SkinArrowRight>: Texture name of right arrow-->
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
<!--<SkinSelected>: Texture name for selected SelectSlide-->
<SkinSelected>SelectSlide</SkinSelected>
<!--<SkinArrowLeftSelected>: Texture name of selected left arrow-->
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
<!--<SkinArrowRightSelected>: Texture name of selected right arrow-->
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
<!--<SkinHighlighted>: Texture name for highlighted SelectSlide-->
<SkinHighlighted>SelectSlide</SkinHighlighted>
<!--<X>, <Y>, <Z>, <W>, <H>: SelectSlide position, width and height-->
<X>500</X>
<Y>340</Y>
<Z>0,00</Z>
<W>700</W>
<H>50</H>
<!--<ArrowLeftX>, <ArrowLeftY>, <ArrowLeftZ>, <ArrowLeftW>, <ArrowLeftH>: Left arrow position, width and height-->
<ArrowLeftX>505</ArrowLeftX>
<ArrowLeftY>345</ArrowLeftY>
<ArrowLeftZ>0,00</ArrowLeftZ>
<ArrowLeftW>40</ArrowLeftW>
<ArrowLeftH>40</ArrowLeftH>
<!--<ArrowRightX>, <ArrowRightY>, <ArrowRightZ>, <ArrowRightW>, <ArrowRightH>: Right arrow position, width and height-->
<ArrowRightX>1170</ArrowRightX>
<ArrowRightY>345</ArrowRightY>
<ArrowRightZ>0,00</ArrowRightZ>
<ArrowRightW>40</ArrowRightW>
<ArrowRightH>40</ArrowRightH>
<!--<Color>: SelectSlide color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>SelectSlideColor</Color>
<!--<SColor>: Selected SelectSlide color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>SelectSlideSColor</SColor>
<!--<HColor>: Highlighted SelectSlide color from ColorScheme (high priority)-->
<!--or <HR>, <HG>, <HB>, <HA> (lower priority)-->
<HColor>SelectSlideHColor</HColor>
<!--<ArrowColor>: Arrow color from ColorScheme (high priority)-->
<!--or <ArrowR>, <ArrowG>, <ArrowB>, <ArrowA> (lower priority)-->
<ArrowColor>ArrowColor</ArrowColor>
<!--<ArrowSColor>: Selected arrow color from ColorScheme (high priority)-->
<!--or <ArrowSR>, <ArrowSG>, <ArrowSB>, <ArrowSA> (lower priority)-->
<ArrowSColor>ArrowSColor</ArrowSColor>
<!--<TextColor>: Text color from ColorScheme (high priority)-->
<!--or <TextR>, <TextG>, <TextB>, <TextA> (lower priority)-->
<TextColor>TextColor</TextColor>
<!--<TextSColor>: Selected text color from ColorScheme (high priority)-->
<!--or <TextSR>, <TextSG>, <TextSB>, <TextSA> (lower priority)-->
<TextSColor>TextSColor</TextSColor>
<!--<TextH>: Text height-->
<TextH>32,00</TextH>
<!--<TextMaxW>: Maximum text width (if exists)-->
<TextMaxW>205,33</TextMaxW>
<!--<TextFont>: Text font name-->
<TextFont>Outline</TextFont>
<!--<TextStyle>: Text style: Normal, Italic, Bold, BoldItalic-->
<TextStyle>Bold</TextStyle>
<!--<NumVisible>: Number of visible elements in the slide-->
<NumVisible>3</NumVisible>
</SelectSlideWebcamDevices>
<SelectSlideWebcamCapabilities>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<SkinArrowLeft>: Texture name of left arrow-->
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
<!--<SkinArrowRight>: Texture name of right arrow-->
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
<!--<SkinSelected>: Texture name for selected SelectSlide-->
<SkinSelected>SelectSlide</SkinSelected>
<!--<SkinArrowLeftSelected>: Texture name of selected left arrow-->
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
<!--<SkinArrowRightSelected>: Texture name of selected right arrow-->
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
<!--<SkinHighlighted>: Texture name for highlighted SelectSlide-->
<SkinHighlighted>SelectSlide</SkinHighlighted>
<!--<X>, <Y>, <Z>, <W>, <H>: SelectSlide position, width and height-->
<X>500</X>
<Y>400</Y>
<Z>0,00</Z>
<W>700</W>
<H>50</H>
<!--<ArrowLeftX>, <ArrowLeftY>, <ArrowLeftZ>, <ArrowLeftW>, <ArrowLeftH>: Left arrow position, width and height-->
<ArrowLeftX>505</ArrowLeftX>
<ArrowLeftY>405</ArrowLeftY>
<ArrowLeftZ>0,00</ArrowLeftZ>
<ArrowLeftW>40</ArrowLeftW>
<ArrowLeftH>40</ArrowLeftH>
<!--<ArrowRightX>, <ArrowRightY>, <ArrowRightZ>, <ArrowRightW>, <ArrowRightH>: Right arrow position, width and height-->
<ArrowRightX>1170</ArrowRightX>
<ArrowRightY>405</ArrowRightY>
<ArrowRightZ>0,00</ArrowRightZ>
<ArrowRightW>40</ArrowRightW>
<ArrowRightH>40</ArrowRightH>
<!--<Color>: SelectSlide color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>SelectSlideColor</Color>
<!--<SColor>: Selected SelectSlide color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>SelectSlideSColor</SColor>
<!--<HColor>: Highlighted SelectSlide color from ColorScheme (high priority)-->
<!--or <HR>, <HG>, <HB>, <HA> (lower priority)-->
<HColor>SelectSlideHColor</HColor>
<!--<ArrowColor>: Arrow color from ColorScheme (high priority)-->
<!--or <ArrowR>, <ArrowG>, <ArrowB>, <ArrowA> (lower priority)-->
<ArrowColor>ArrowColor</ArrowColor>
<!--<ArrowSColor>: Selected arrow color from ColorScheme (high priority)-->
<!--or <ArrowSR>, <ArrowSG>, <ArrowSB>, <ArrowSA> (lower priority)-->
<ArrowSColor>ArrowSColor</ArrowSColor>
<!--<TextColor>: Text color from ColorScheme (high priority)-->
<!--or <TextR>, <TextG>, <TextB>, <TextA> (lower priority)-->
<TextColor>TextColor</TextColor>
<!--<TextSColor>: Selected text color from ColorScheme (high priority)-->
<!--or <TextSR>, <TextSG>, <TextSB>, <TextSA> (lower priority)-->
<TextSColor>TextSColor</TextSColor>
<!--<TextH>: Text height-->
<TextH>32,00</TextH>
<!--<TextMaxW>: Maximum text width (if exists)-->
<TextMaxW>150,00</TextMaxW>
<!--<TextFont>: Text font name-->
<TextFont>Outline</TextFont>
<!--<TextStyle>: Text style: Normal, Italic, Bold, BoldItalic-->
<TextStyle>Bold</TextStyle>
<!--<NumVisible>: Number of visible elements in the slide-->
<NumVisible>3</NumVisible>
</SelectSlideWebcamCapabilities>
<StaticWebcamOutput>
<!--<Skin>: Texture name-->
<Skin>CoverBackground</Skin>
<!--<X>, <Y>, <Z>, <W>, <H>: Static position, width and height-->
<X>75</X>
<Y>460</Y>
<Z>0,00</Z>
<W>320</W>
<H>240</H>
<!--<Color>: Static color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>Visible</Color>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
</StaticWebcamOutput>
</ScreenOptionsVideo>
</root>
</root>
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<ScreenProfiles>
<ScreenVersion>1</ScreenVersion>
<ScreenVersion>2</ScreenVersion>
<Background1>
<!--<Type>: Background type: None, Color, Texture, Video-->
<Type>Video</Type>
@@ -576,6 +576,218 @@
<Height>26</Height>
</SReflection>
</ButtonDelete>
<ButtonTakeSnapshot>
<!--<Skin>: Texture name-->
<Skin>Button</Skin>
<!--<SkinSelected>: Texture name for selected button-->
<SkinSelected>Button</SkinSelected>
<!--<X>, <Y>, <Z>, <W>, <H>: Button position, width and height-->
<X>985</X>
<Y>600</Y>
<Z>0,00</Z>
<W>150</W>
<H>50</H>
<!--<Color>: Button color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonColor</Color>
<!--<SColor>: Selected button color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>ButtonSColor</SColor>
<Text>
<!--<X>, <Y>: Text position-->
<X>75</X>
<Y>10</Y>
<!--<H>: Text height-->
<H>32</H>
<!--<MaxW>: Maximum text width (if exists)-->
<MaxW>142</MaxW>
<!--<Color>: Text color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonTextColor</Color>
<!--<SColor>: Selected Text color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>ButtonTextSColor</SColor>
<!--<Align>: Text align horizontal: Left, Center, Right-->
<Align>Center</Align>
<!--<HAlign>: Text align vertical (on downsizing): Top, Center, Bottom-->
<HAlign>Center</HAlign>
<!--<Style>: Text style: Normal, Italic, Bold, BoldItalic-->
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENPROFILES_BUTTON_TAKESNAPSHOT</Text>
</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
<Reflection>
<Space>10</Space>
<Height>26</Height>
</Reflection>
<!--<SReflection> If exists:-->
<!-- <Space>: Reflection Space of selected button-->
<!-- <Height>: Reflection Height of selected button-->
<SReflection>
<Space>10</Space>
<Height>26</Height>
</SReflection>
</ButtonTakeSnapshot>
<ButtonWebcam>
<!--<Skin>: Texture name-->
<Skin>Button</Skin>
<!--<SkinSelected>: Texture name for selected button-->
<SkinSelected>Button</SkinSelected>
<!--<X>, <Y>, <Z>, <W>, <H>: Button position, width and height-->
<X>985</X>
<Y>600</Y>
<Z>0,00</Z>
<W>150</W>
<H>50</H>
<!--<Color>: Button color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonColor</Color>
<!--<SColor>: Selected button color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>ButtonSColor</SColor>
<Text>
<!--<X>, <Y>: Text position-->
<X>75</X>
<Y>10</Y>
<!--<H>: Text height-->
<H>32</H>
<!--<MaxW>: Maximum text width (if exists)-->
<MaxW>142</MaxW>
<!--<Color>: Text color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonTextColor</Color>
<!--<SColor>: Selected Text color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>ButtonTextSColor</SColor>
<!--<Align>: Text align horizontal: Left, Center, Right-->
<Align>Center</Align>
<!--<HAlign>: Text align vertical (on downsizing): Top, Center, Bottom-->
<HAlign>Center</HAlign>
<!--<Style>: Text style: Normal, Italic, Bold, BoldItalic-->
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENPROFILES_BUTTON_WEBCAM</Text>
</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
<Reflection>
<Space>10</Space>
<Height>26</Height>
</Reflection>
<!--<SReflection> If exists:-->
<!-- <Space>: Reflection Space of selected button-->
<!-- <Height>: Reflection Height of selected button-->
<SReflection>
<Space>10</Space>
<Height>26</Height>
</SReflection>
</ButtonWebcam>
<ButtonSaveSnapshot>
<!--<Skin>: Texture name-->
<Skin>Button</Skin>
<!--<SkinSelected>: Texture name for selected button-->
<SkinSelected>Button</SkinSelected>
<!--<X>, <Y>, <Z>, <W>, <H>: Button position, width and height-->
<X>300</X>
<Y>205</Y>
<Z>0,00</Z>
<W>150</W>
<H>50</H>
<!--<Color>: Button color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonColor</Color>
<!--<SColor>: Selected button color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>ButtonSColor</SColor>
<Text>
<!--<X>, <Y>: Text position-->
<X>75</X>
<Y>10</Y>
<!--<H>: Text height-->
<H>32</H>
<!--<MaxW>: Maximum text width (if exists)-->
<MaxW>142</MaxW>
<!--<Color>: Text color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonTextColor</Color>
<!--<SColor>: Selected Text color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>ButtonTextSColor</SColor>
<!--<Align>: Text align horizontal: Left, Center, Right-->
<Align>Center</Align>
<!--<HAlign>: Text align vertical (on downsizing): Top, Center, Bottom-->
<HAlign>Center</HAlign>
<!--<Style>: Text style: Normal, Italic, Bold, BoldItalic-->
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENPROFILES_BUTTON_SAVESNAPSHOT</Text>
</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
<!--<SReflection> If exists:-->
<!-- <Space>: Reflection Space of selected button-->
<!-- <Height>: Reflection Height of selected button-->
</ButtonSaveSnapshot>
<ButtonDiscardSnapshot>
<!--<Skin>: Texture name-->
<Skin>Button</Skin>
<!--<SkinSelected>: Texture name for selected button-->
<SkinSelected>Button</SkinSelected>
<!--<X>, <Y>, <Z>, <W>, <H>: Button position, width and height-->
<X>300</X>
<Y>125</Y>
<Z>0,00</Z>
<W>150</W>
<H>50</H>
<!--<Color>: Button color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonColor</Color>
<!--<SColor>: Selected button color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>ButtonSColor</SColor>
<Text>
<!--<X>, <Y>: Text position-->
<X>75</X>
<Y>10</Y>
<!--<H>: Text height-->
<H>32</H>
<!--<MaxW>: Maximum text width (if exists)-->
<MaxW>142</MaxW>
<!--<Color>: Text color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonTextColor</Color>
<!--<SColor>: Selected Text color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>ButtonTextSColor</SColor>
<!--<Align>: Text align horizontal: Left, Center, Right-->
<Align>Center</Align>
<!--<HAlign>: Text align vertical (on downsizing): Top, Center, Bottom-->
<HAlign>Center</HAlign>
<!--<Style>: Text style: Normal, Italic, Bold, BoldItalic-->
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENPROFILES_BUTTON_DISCARDSNAPSHOT</Text>
</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
<!--<SReflection> If exists:-->
<!-- <Space>: Reflection Space of selected button-->
<!-- <Height>: Reflection Height of selected button-->
</ButtonDiscardSnapshot>
<SelectSlideProfiles>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
@@ -902,4 +1114,4 @@
<NumVisible>2</NumVisible>
</SelectSlideActive>
</ScreenProfiles>
</root>
</root>
+2 -2
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<ScreenSing>
<ScreenVersion>5</ScreenVersion>
<ScreenVersion>6</ScreenVersion>
<Background1>
<!--<Type>: Background type: None, Color, Texture, Video-->
<Type>None</Type>
@@ -2771,4 +2771,4 @@
</BarPositions>
</SingBars>
</ScreenSing>
</root>
</root>
+3 -1
View File
@@ -333,6 +333,8 @@
<DeleteIcon>Delete.png</DeleteIcon>
<SaveIcon>Save.png</SaveIcon>
<SingIcon>Sing.png</SingIcon>
<Minus>Minus.png</Minus>
<Plus>Plus.png</Plus>
</Skins>
<Videos>
<BG_Video>[Blue]BG_Video.mp4</BG_Video>
@@ -340,4 +342,4 @@
<IntroMid>[Blue]IntroMid.mp4</IntroMid>
<IntroOut>[Blue]IntroOut.mp4</IntroOut>
</Videos>
</root>
</root>
+3 -1
View File
@@ -327,6 +327,8 @@
<DeleteIcon>Delete.png</DeleteIcon>
<SaveIcon>Save.png</SaveIcon>
<SingIcon>Sing.png</SingIcon>
<Minus>Minus.png</Minus>
<Plus>Plus.png</Plus>
</Skins>
<Videos>
<BG_Video>[Green]BG_Video.mp4</BG_Video>
@@ -334,4 +336,4 @@
<IntroMid>[Green]IntroMid.mp4</IntroMid>
<IntroOut>[Green]IntroOut.mp4</IntroOut>
</Videos>
</root>
</root>
+3 -1
View File
@@ -327,6 +327,8 @@
<DeleteIcon>Delete.png</DeleteIcon>
<SaveIcon>Save.png</SaveIcon>
<SingIcon>Sing.png</SingIcon>
<Minus>Minus.png</Minus>
<Plus>Plus.png</Plus>
</Skins>
<Videos>
<BG_Video>[Red]BG_Video.mp4</BG_Video>
@@ -334,4 +336,4 @@
<IntroMid>[Red]IntroMid.mp4</IntroMid>
<IntroOut>[Red]IntroOut.mp4</IntroOut>
</Videos>
</root>
</root>
+3 -1
View File
@@ -327,6 +327,8 @@
<DeleteIcon>Delete.png</DeleteIcon>
<SaveIcon>Save.png</SaveIcon>
<SingIcon>Sing.png</SingIcon>
<Minus>Minus.png</Minus>
<Plus>Plus.png</Plus>
</Skins>
<Videos>
<BG_Video>[Yellow]BG_Video.mp4</BG_Video>
@@ -334,4 +336,4 @@
<IntroMid>[Yellow]IntroMid.mp4</IntroMid>
<IntroOut>[Yellow]IntroOut.mp4</IntroOut>
</Videos>
</root>
</root>
@@ -1,5 +1,17 @@
ScreenOptionsSound
++++++++++
Version 3:
Add:
<SelectSlidePreviewMusicVolume>
<SelectSlideGameMusicVolume>
and some texts for description (Text5, Text6)
"TR_SCRsEENOSOUND_PREVIEWMUSICVOLUME"
"TR_SCREENOSOUND_GAMEMUSICVOLUEM"
++++++++++
Version 2:
@@ -1,5 +1,14 @@
ScreenOptionsTheme
++++++++++
Version 3:
Add:
<SelectSlideWebcamDevices>, <SelectSlideWebcamCapabilities>, <StaticWebcamOutput>
and some texts and static for description (Text6, Text7)
"TR_SCREENO_VIDEO_WEBCAMDEVICES", "TR_SCREENO_VIDEO_WEBCAMCAPABILITIES"
++++++++++
Version 2:
@@ -1,7 +1,7 @@
ScreenSing
+++++++++
Version 5
Version 6
Add:
<TextDuetName1> and <TextDuetName2> (only showed when sining duet)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+4 -2
View File
@@ -181,7 +181,7 @@ namespace Vocaluxe.Base
{
if (_CurrentMusicStream != -1)
{
CSound.Fade(_CurrentMusicStream, CConfig.BackgroundMusicVolume, CSettings.BackgroundMusicFadeTime);
CSound.Fade(_CurrentMusicStream, 100f, CSettings.BackgroundMusicFadeTime);
CSound.Play(_CurrentMusicStream);
if (_VideoEnabled && _Video != -1)
CVideo.VdResume(_Video);
@@ -276,6 +276,7 @@ namespace Vocaluxe.Base
_CurrentPlaylistElement = _PreviousFileNames[_PreviousMusicIndex];
}
_CurrentMusicStream = CSound.Load(_CurrentPlaylistElement.MusicFilePath);
CSound.SetStreamVolumeMax(_CurrentMusicStream, CConfig.BackgroundMusicVolume);
//Seek to #Start-Tag, if found
if (_CurrentPlaylistElement.Start != 0f)
@@ -311,6 +312,7 @@ namespace Vocaluxe.Base
_CurrentPlaylistElement = _PreviousFileNames[_PreviousMusicIndex];
_CurrentMusicStream = CSound.Load(_CurrentPlaylistElement.MusicFilePath);
CSound.SetStreamVolumeMax(_CurrentMusicStream, CConfig.BackgroundMusicVolume);
if (_VideoEnabled)
LoadVideo();
CSound.SetStreamVolume(_CurrentMusicStream, 0f);
@@ -327,7 +329,7 @@ namespace Vocaluxe.Base
public static void ApplyVolume()
{
CSound.SetStreamVolume(_CurrentMusicStream, CConfig.BackgroundMusicVolume);
CSound.SetStreamVolumeMax(_CurrentMusicStream, CConfig.BackgroundMusicVolume);
}
public static void AddOwnMusic()
+51 -2
View File
@@ -11,6 +11,7 @@ using System.Xml.XPath;
using OpenTK.Platform;
using Vocaluxe.Lib.Sound;
using Vocaluxe.Lib.Webcam;
namespace Vocaluxe.Base
{
@@ -87,6 +88,12 @@ namespace Vocaluxe.Base
OpenAL
}
public enum EWebcamLib
{
OpenCV,
AForgeNet
}
public enum ERecordLib
{
#if WIN
@@ -228,9 +235,11 @@ namespace Vocaluxe.Base
public static ERecordLib RecordLib = ERecordLib.PortAudio;
public static EBufferSize AudioBufferSize = EBufferSize.b2048;
public static int AudioLatency = 0;
public static int BackgroundMusicVolume = 50;
public static int BackgroundMusicVolume = 30;
public static EOffOn BackgroundMusic = EOffOn.TR_CONFIG_ON;
public static EBackgroundMusicSource BackgroundMusicSource = EBackgroundMusicSource.TR_CONFIG_NO_OWN_MUSIC;
public static int PreviewMusicVolume = 50;
public static int GameMusicVolume = 80;
// Game
public static List<string> SongFolder = new List<string>();
@@ -255,6 +264,8 @@ namespace Vocaluxe.Base
// Record
public static SMicConfig[] MicConfig;
public static int MicDelay = 300; //[ms]
public static EWebcamLib WebcamLib = EWebcamLib.OpenCV;
public static SWebcamConfig WebcamConfig;
//Lists to save parameters and values
private static List<string> _Params = new List<string>();
@@ -358,7 +369,21 @@ namespace Vocaluxe.Base
CHelper.TryGetEnumValueFromXML("//root/Sound/BackgroundMusic", navigator, ref BackgroundMusic);
CHelper.TryGetIntValueFromXML("//root/Sound/BackgroundMusicVolume", navigator, ref BackgroundMusicVolume);
if (BackgroundMusicVolume < 0)
BackgroundMusicVolume = 0;
if (BackgroundMusicVolume > 100)
BackgroundMusicVolume = 100;
CHelper.TryGetEnumValueFromXML("//root/Sound/BackgroundMusicSource", navigator, ref BackgroundMusicSource);
CHelper.TryGetIntValueFromXML("//root/Sound/PreviewMusicVolume", navigator, ref PreviewMusicVolume);
if (PreviewMusicVolume < 0)
PreviewMusicVolume = 0;
if (PreviewMusicVolume > 100)
PreviewMusicVolume = 100;
CHelper.TryGetIntValueFromXML("//root/Sound/GameMusicVolume", navigator, ref GameMusicVolume);
if (GameMusicVolume < 0)
GameMusicVolume = 0;
if (GameMusicVolume > 100)
GameMusicVolume = 100;
#endregion Sound
#region Game
@@ -427,6 +452,13 @@ namespace Vocaluxe.Base
CHelper.TryGetEnumValueFromXML<EOffOn>("//root/Video/VideoPreview", navigator, ref VideoPreview);
CHelper.TryGetEnumValueFromXML<EOffOn>("//root/Video/VideosInSongs", navigator, ref VideosInSongs);
CHelper.TryGetEnumValueFromXML<EOffOn>("//root/Video/VideosToBackground", navigator, ref VideosToBackground);
CHelper.TryGetEnumValueFromXML<EWebcamLib>("//root/Video/WebcamLib", navigator, ref WebcamLib);
WebcamConfig = new SWebcamConfig();
CHelper.GetValueFromXML("//root/Video/WebcamConfig/MonikerString", navigator, ref WebcamConfig.MonikerString, String.Empty);
CHelper.TryGetIntValueFromXML("//root/Video/WebcamConfig/Framerate", navigator, ref WebcamConfig.Framerate);
CHelper.TryGetIntValueFromXML("//root/Video/WebcamConfig/Width", navigator, ref WebcamConfig.Width);
CHelper.TryGetIntValueFromXML("//root/Video/WebcamConfig/Height", navigator, ref WebcamConfig.Height);
#endregion Video
#region Record
@@ -447,7 +479,6 @@ namespace Vocaluxe.Base
MicDelay = 0;
if (MicDelay > 500)
MicDelay = 500;
#endregion Record
return true;
@@ -585,6 +616,12 @@ namespace Vocaluxe.Base
writer.WriteComment("Background Music Source");
writer.WriteElementString("BackgroundMusicSource", Enum.GetName(typeof(EBackgroundMusicSource), BackgroundMusicSource));
writer.WriteComment("Preview Volume from 0 to 100");
writer.WriteElementString("PreviewMusicVolume", PreviewMusicVolume.ToString());
writer.WriteComment("Game Volume from 0 to 100");
writer.WriteElementString("GameMusicVolume", GameMusicVolume.ToString());
writer.WriteEndElement();
#endregion Sound
@@ -668,6 +705,18 @@ namespace Vocaluxe.Base
writer.WriteComment("Show backgroundmusic videos as background: " + ListStrings(Enum.GetNames(typeof(EOffOn))));
writer.WriteElementString("VideosToBackground", Enum.GetName(typeof(EOffOn), VideosToBackground));
writer.WriteComment("WebcamLib: " + ListStrings(Enum.GetNames(typeof(EWebcamLib))));
writer.WriteElementString("WebcamLib", Enum.GetName(typeof(EWebcamLib), WebcamLib));
writer.WriteStartElement("WebcamConfig");
writer.WriteElementString("MonikerString", WebcamConfig.MonikerString);
writer.WriteElementString("Framerate", WebcamConfig.Framerate.ToString());
writer.WriteElementString("Width", WebcamConfig.Width.ToString());
writer.WriteElementString("Height", WebcamConfig.Height.ToString());
writer.WriteEndElement();
writer.WriteEndElement();
#endregion Video
+35
View File
@@ -123,6 +123,11 @@ namespace Vocaluxe.Base
fo.Dispose();
}
public void UnloadTexture()
{
CDraw.RemoveTexture(ref Texture);
}
private float GetFactor(char chr, TextFormatFlags flags)
{
if (CFonts.Style == EStyle.Normal)
@@ -277,6 +282,15 @@ namespace Vocaluxe.Base
_htGlyphs.Add(chr, _Glyphs.Count - 1);
CFonts.Height = h;
}
public void UnloadAllGlyphs()
{
foreach (CGlyph glyph in _Glyphs)
{
glyph.UnloadTexture();
}
_Glyphs.Clear();
}
}
struct SFont
@@ -854,6 +868,27 @@ namespace Vocaluxe.Base
writer.WriteEndElement();
}
public static void UnloadThemeFonts(string ThemeName)
{
if (_Fonts.Count == 0)
return;
int Index = 0;
while (Index < _Fonts.Count)
{
if (_Fonts[Index].IsThemeFont && _Fonts[Index].ThemeName == ThemeName)
{
_Fonts[Index].Normal.UnloadAllGlyphs();
_Fonts[Index].Italic.UnloadAllGlyphs();
_Fonts[Index].Bold.UnloadAllGlyphs();
_Fonts[Index].BoldItalic.UnloadAllGlyphs();
_Fonts.RemoveAt(Index);
}
else
Index++;
}
}
private static int GetFontIndex(string ThemeName, string FontName)
{
if (ThemeName == String.Empty || FontName == String.Empty)
+2 -2
View File
@@ -80,13 +80,13 @@ namespace Vocaluxe.Base
try
{
File.Delete(_Playlists[PlaylistID].PlaylistFile);
_Playlists.RemoveAt(PlaylistID);
}
catch (Exception)
{
CLog.LogError("Can't delete Profile File " + _Playlists[PlaylistID].PlaylistFile + ".xml");
CLog.LogError("Can't delete Playlist File " + _Playlists[PlaylistID].PlaylistFile + ".xml");
}
}
_Playlists.RemoveAt(PlaylistID);
}
public static void SavePlaylist(int PlaylistID)
+1 -1
View File
@@ -47,7 +47,7 @@ namespace Vocaluxe.Base
public const int iVersionSub = 0; // patches
public const ERevision VersionRevision = ERevision.Alpha;
public const int iBuild = 68; // Increase on every published version! Never Reset!
public const int iBuild = 69; // Increase on every published version! Never Reset!
public const int iDatabaseHighscoreVersion = 1;
public const int iDatabaseCoverVersion = 1;
+4
View File
@@ -108,6 +108,10 @@ namespace Vocaluxe.Base
_Playback.SetStreamVolume(Stream, Volume);
}
public static void SetStreamVolumeMax(int Stream, float Volume)
{
_Playback.SetStreamVolumeMax(Stream, Volume);
}
public static float GetLength(int Stream)
{
+75
View File
@@ -0,0 +1,75 @@
using System;
using System.Collections.Generic;
using System.Text;
using Vocaluxe.Lib.Webcam;
using Vocaluxe.Lib.Draw;
using System.Drawing;
namespace Vocaluxe.Base
{
static class CWebcam
{
private static IWebcam _Webcam;
public static void Init()
{
switch (CConfig.WebcamLib)
{
case EWebcamLib.AForgeNet:
_Webcam = new CAForgeNet();
break;
default:
_Webcam = new CAForgeNet();
break;
}
_Webcam.Init();
_Webcam.Select(CConfig.WebcamConfig);
CConfig.WebcamConfig = _Webcam.GetConfig();
CConfig.SaveConfig();
}
public static bool GetFrame(ref STexture tex)
{
_Webcam.GetFrame(ref tex);
return true;
}
public static Bitmap GetBitmap()
{
return _Webcam.GetBitmap();
}
public static void Close()
{
_Webcam.Close();
}
public static void Pause()
{
_Webcam.Pause();
}
public static void Start()
{
_Webcam.Start();
}
public static void Stop()
{
_Webcam.Stop();
}
public static void Select(SWebcamConfig c)
{
_Webcam.Select(c);
}
public static SWebcamDevice[] GetDevices()
{
return _Webcam.GetDevices();
}
}
}
+35 -2
View File
@@ -234,6 +234,21 @@ namespace Vocaluxe.Lib.Sound
}
}
public void SetStreamVolumeMax(int Stream, float Volume)
{
if (_Initialized)
{
lock (MutexDecoder)
{
if (AlreadyAdded(Stream))
{
_Decoder[GetStreamIndex(Stream)].VolumeMax = Volume;
}
}
}
}
public float GetLength(int Stream)
{
if (_Initialized)
@@ -399,6 +414,7 @@ namespace Vocaluxe.Lib.Sound
private bool _Initialized;
private int _ByteCount = 4;
private float _Volume = 1f;
private float _VolumeMax = 1f;
private Stopwatch _fadeTimer = new Stopwatch();
@@ -500,6 +516,23 @@ namespace Vocaluxe.Lib.Sound
}
}
public float VolumeMax
{
get { return _VolumeMax * 100f; }
set
{
lock (MutexData)
{
_VolumeMax = value / 100f;
if (_VolumeMax < 0f)
_VolumeMax = 0f;
if (_VolumeMax > 1f)
_VolumeMax = 1f;
}
}
}
public float Position
{
get
@@ -826,7 +859,7 @@ namespace Vocaluxe.Lib.Sound
b[0] = buf[i];
b[1] = buf[i + 1];
b = BitConverter.GetBytes((Int16)(BitConverter.ToInt16(b, 0) * _Volume));
b = BitConverter.GetBytes((Int16)(BitConverter.ToInt16(b, 0) * _Volume * _VolumeMax));
buf[i] = b[0];
buf[i + 1] = b[1];
@@ -835,7 +868,7 @@ namespace Vocaluxe.Lib.Sound
b[0] = buf[i + 2];
b[1] = buf[i + 3];
b = BitConverter.GetBytes((Int16)(BitConverter.ToInt16(b, 0) * _Volume));
b = BitConverter.GetBytes((Int16)(BitConverter.ToInt16(b, 0) * _Volume * _VolumeMax));
buf[i + 2] = b[0];
buf[i + 3] = b[1];
}
+35 -2
View File
@@ -218,6 +218,21 @@ namespace Vocaluxe.Lib.Sound
}
}
public void SetStreamVolumeMax(int Stream, float Volume)
{
if (_Initialized)
{
lock (MutexDecoder)
{
if (AlreadyAdded(Stream))
{
_Decoder[GetStreamIndex(Stream)].VolumeMax = Volume;
}
}
}
}
public float GetLength(int Stream)
{
if (_Initialized)
@@ -375,6 +390,7 @@ namespace Vocaluxe.Lib.Sound
private bool _Initialized;
private int _ByteCount = 4;
private float _Volume = 1f;
private float _VolumeMax = 1f;
private Stopwatch _fadeTimer = new Stopwatch();
@@ -480,6 +496,23 @@ namespace Vocaluxe.Lib.Sound
}
}
public float VolumeMax
{
get { return _VolumeMax * 100f; }
set
{
lock (_LockData)
{
_VolumeMax = value / 100f;
if (_VolumeMax < 0f)
_VolumeMax = 0f;
if (_VolumeMax > 1f)
_VolumeMax = 1f;
}
}
}
public float Position
{
get
@@ -817,7 +850,7 @@ namespace Vocaluxe.Lib.Sound
b[0] = buf[i];
b[1] = buf[i + 1];
b = BitConverter.GetBytes((Int16)(BitConverter.ToInt16(b, 0) * _Volume));
b = BitConverter.GetBytes((Int16)(BitConverter.ToInt16(b, 0) * _Volume * _VolumeMax));
buf[i] = b[0];
buf[i + 1] = b[1];
@@ -826,7 +859,7 @@ namespace Vocaluxe.Lib.Sound
b[0] = buf[i + 2];
b[1] = buf[i + 3];
b = BitConverter.GetBytes((Int16)(BitConverter.ToInt16(b, 0) * _Volume));
b = BitConverter.GetBytes((Int16)(BitConverter.ToInt16(b, 0) * _Volume * _VolumeMax));
buf[i + 2] = b[0];
buf[i + 3] = b[1];
}
+2 -1
View File
@@ -37,7 +37,8 @@ namespace Vocaluxe.Lib.Sound
void Fade(int Stream, float TargetVolume, float Seconds);
void FadeAndPause(int Stream, float TargetVolume, float Seconds);
void FadeAndStop(int Stream, float TargetVolume, float Seconds);
void SetStreamVolume(int Stream, float Volume);
void SetStreamVolume(int Stream, float Volume);
void SetStreamVolumeMax(int Stream, float Volume);
float GetLength(int Stream);
float GetPosition(int Stream);
+182
View File
@@ -0,0 +1,182 @@
using System;
using System.Collections.Generic;
using System.Text;
using Vocaluxe.Base;
using AForge.Video;
using System.Drawing;
using AForge.Video.DirectShow;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
using Vocaluxe.Lib.Draw;
using System.Threading;
namespace Vocaluxe.Lib.Webcam
{
class CAForgeNet : IWebcam
{
private Bitmap _CurrentFrame = new Bitmap(1, 1);
private List<SWebcamDevice> _Devices = new List<SWebcamDevice>();
private bool _Paused;
private VideoCaptureDevice _Webcam;
private FilterInfoCollection _WebcamDevices;
private SWebcamConfig _Config;
public void Close()
{
if (_Webcam != null)
{
_Webcam.SignalToStop();
_Webcam.NewFrame -= new NewFrameEventHandler(OnFrame);
}
}
public bool GetFrame(ref STexture Frame)
{
if ((_CurrentFrame != null) && (_Webcam != null))
{
lock (_CurrentFrame)
{
BitmapData bitmapdata = _CurrentFrame.LockBits(new Rectangle(0, 0, _CurrentFrame.Width, _CurrentFrame.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
byte[] data = new byte[4 * _CurrentFrame.Width * _CurrentFrame.Height];
Marshal.Copy(bitmapdata.Scan0, data, 0, data.Length);
_CurrentFrame.UnlockBits(bitmapdata);
if (((Frame.index == -1) || (_CurrentFrame.Width != Frame.width)) || (_CurrentFrame.Height != Frame.height))
{
CDraw.RemoveTexture(ref Frame);
Frame = CDraw.AddTexture(_CurrentFrame.Width, _CurrentFrame.Height, ref data);
}
else
{
CDraw.UpdateTexture(ref Frame, ref data);
}
}
}
return false;
}
public Bitmap GetBitmap()
{
if ((_CurrentFrame != null) && (_Webcam != null))
{
lock (_CurrentFrame)
{
return (Bitmap)_CurrentFrame.Clone();
}
}
else
return null;
}
public bool Init()
{
_WebcamDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
int num = 0;
foreach (FilterInfo info in _WebcamDevices)
{
SWebcamDevice device = new SWebcamDevice {
ID = num,
Name = info.Name,
MonikerString = info.MonikerString,
Capabilities = new List<SCapabilities>()
};
num++;
VideoCaptureDevice tmpdev = new VideoCaptureDevice(info.MonikerString);
for (int i = 0; i < tmpdev.VideoCapabilities.Length; i++ )
{
SCapabilities item = new SCapabilities
{
Framerate = tmpdev.VideoCapabilities[i].FrameRate,
Height = tmpdev.VideoCapabilities[i].FrameSize.Height,
Width = tmpdev.VideoCapabilities[i].FrameSize.Width
};
device.Capabilities.Add(item);
}
_Devices.Add(device);
}
return true;
}
private void OnFrame(object sender, NewFrameEventArgs e)
{
if (!_Paused)
{
lock (_CurrentFrame)
{
_CurrentFrame = (Bitmap) e.Frame.Clone();
}
}
}
public void Pause()
{
if (_Webcam != null)
{
_Paused = true;
}
}
public void Start()
{
if (_Webcam != null)
{
_Webcam.NewFrame -= new NewFrameEventHandler(OnFrame);
//Subscribe to NewFrame event
_Webcam.NewFrame += new NewFrameEventHandler(OnFrame);
_Webcam.Start();
_Paused = false;
}
}
public void Stop()
{
if (_Webcam != null)
{
_Webcam.SignalToStop();
}
}
public SWebcamDevice[] GetDevices()
{
return _Devices.ToArray();
}
public bool Select(SWebcamConfig Config)
{
//Close old camera connection
Close();
if (_WebcamDevices == null)
return false;
if (_WebcamDevices.Count < 1)
return false;
//No MonikerString found, try first webcam
if (Config.MonikerString == String.Empty)
_Webcam = new VideoCaptureDevice(_WebcamDevices[0].MonikerString);
else //Found MonikerString
_Webcam = new VideoCaptureDevice(Config.MonikerString);
if (_Webcam == null)
return false;
if (Config.Framerate != 0 && Config.Height != 0 && Config.Width != 0)
{
_Webcam.DesiredFrameRate = Config.Framerate;
_Webcam.DesiredFrameSize = new Size(Config.Width, Config.Height);
}
_Config.Framerate = _Webcam.DesiredFrameRate;
_Config.Height = _Webcam.DesiredFrameSize.Height;
_Config.Width = _Webcam.DesiredFrameSize.Width;
_Config.MonikerString = _Webcam.Source;
return true;
}
public SWebcamConfig GetConfig()
{
return _Config;
}
}
}
+48
View File
@@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Text;
using Vocaluxe.Lib.Draw;
using System.Drawing;
namespace Vocaluxe.Lib.Webcam
{
struct SWebcamDevice
{
public int ID;
public string Name;
public string MonikerString;
public List<SCapabilities> Capabilities;
}
struct SCapabilities
{
public int Framerate;
public int Width;
public int Height;
}
struct SWebcamConfig
{
public string MonikerString;
public int Framerate;
public int Width;
public int Height;
}
interface IWebcam
{
bool Init();
void Start();
void Pause();
void Stop();
void Close();
bool GetFrame(ref STexture Frame);
Bitmap GetBitmap();
SWebcamConfig GetConfig();
SWebcamDevice[] GetDevices();
bool Select(SWebcamConfig sWebcamConfig);
}
}
+68 -2
View File
@@ -40,6 +40,7 @@ namespace Vocaluxe.Menu
enum EPopupScreens
{
PopupPlayerControl = 0,
PopupVolumeControl = 1,
NoPopup = -1
}
@@ -200,6 +201,11 @@ namespace Vocaluxe.Menu
private static List<CMenu> _Screens = new List<CMenu>();
private static List<CMenu> _PopupScreens = new List<CMenu>();
private static float _SavedBackgroundMusicVolume;
private static float _SavedPreviewMusicVolume;
private static float _SavedGameMusicVolume;
private static Stopwatch _VolumePopupTimer;
public static float GlobalAlpha
{
get { return _GlobalAlpha; }
@@ -210,6 +216,11 @@ namespace Vocaluxe.Menu
get { return _ZOffset; }
}
public static EScreens CurrentScreen
{
get { return _CurrentScreen; }
}
#region public methods
public static void InitGraphics()
{
@@ -235,6 +246,7 @@ namespace Vocaluxe.Menu
_Screens.Add(new CScreenCredits());
_PopupScreens.Add(new CPopupScreenPlayerControl());
_PopupScreens.Add(new CPopupScreenVolumeControl());
CLog.StopBenchmark(1, "Build Screen List");
@@ -242,6 +254,7 @@ namespace Vocaluxe.Menu
_NextScreen = EScreens.ScreenNull;
_CurrentPopupScreen = EPopupScreens.NoPopup;
_FadingTimer = new Stopwatch();
_VolumePopupTimer = new Stopwatch();
_GlobalAlpha = 1f;
_ZOffset = 0f;
@@ -317,6 +330,10 @@ namespace Vocaluxe.Menu
public static void InitFirstScreen()
{
_SavedBackgroundMusicVolume = CConfig.BackgroundMusicVolume;
_SavedGameMusicVolume = CConfig.GameMusicVolume;
_SavedPreviewMusicVolume = CConfig.PreviewMusicVolume;
_Screens[(int)_CurrentScreen].OnShow();
_Screens[(int)_CurrentScreen].OnShowFinish();
}
@@ -457,6 +474,8 @@ namespace Vocaluxe.Menu
bool PopupPlayerControlAllowed = _CurrentScreen != EScreens.ScreenOptionsRecord && _CurrentScreen != EScreens.ScreenSing &&
_CurrentScreen != EScreens.ScreenSong && _CurrentScreen != EScreens.ScreenCredits;
bool PopupVolumeControlAllowed = _CurrentScreen != EScreens.ScreenCredits;
bool Resume = true;
bool EventsAvailable = false;
bool InputEventsAvailable = CInput.PollKeyEvent(ref InputKeyEvent);
@@ -534,9 +553,28 @@ namespace Vocaluxe.Menu
if (!isOverPopupPlayerControl && _CurrentPopupScreen == EPopupScreens.PopupPlayerControl)
HidePopup(EPopupScreens.PopupPlayerControl);
bool isOverPopupVolumeControl = CHelper.IsInBounds(_PopupScreens[(int)EPopupScreens.PopupVolumeControl].ScreenArea, MouseEvent);
if (PopupVolumeControlAllowed && isOverPopupVolumeControl)
{
if (_CurrentPopupScreen == EPopupScreens.NoPopup)
{
ShowPopup(EPopupScreens.PopupVolumeControl);
_VolumePopupTimer.Reset();
}
}
if (!isOverPopupVolumeControl && _CurrentPopupScreen == EPopupScreens.PopupVolumeControl)
{
HidePopup(EPopupScreens.PopupVolumeControl);
_VolumePopupTimer.Reset();
}
bool handled = false;
if (_CurrentPopupScreen != EPopupScreens.NoPopup)
handled = _PopupScreens[(int)_CurrentPopupScreen].HandleMouse(MouseEvent);
if (handled && _CurrentPopupScreen == EPopupScreens.PopupVolumeControl)
_Screens[(int)_CurrentScreen].ApplyVolume();
if (!handled && !_Fading && (_Cursor.IsActive || MouseEvent.LB || MouseEvent.RB || MouseEvent.MB))
Resume &= _Screens[(int)_CurrentScreen].HandleMouse(MouseEvent);
@@ -591,6 +629,34 @@ namespace Vocaluxe.Menu
private static bool Update()
{
//User changed volume with keyboard, pop-up isn't visible yet
if ((_SavedPreviewMusicVolume != CConfig.PreviewMusicVolume || _SavedGameMusicVolume != CConfig.GameMusicVolume || _SavedBackgroundMusicVolume != CConfig.BackgroundMusicVolume)
&& (_CurrentPopupScreen != EPopupScreens.PopupVolumeControl && !_VolumePopupTimer.IsRunning))
{
_VolumePopupTimer.Start();
_SavedBackgroundMusicVolume = CConfig.BackgroundMusicVolume;
_SavedGameMusicVolume = CConfig.GameMusicVolume;
_SavedPreviewMusicVolume = CConfig.PreviewMusicVolume;
}
//User changed volume with keyboard, pop-up is already visible
else if ((_SavedPreviewMusicVolume != CConfig.PreviewMusicVolume || _SavedGameMusicVolume != CConfig.GameMusicVolume || _SavedBackgroundMusicVolume != CConfig.BackgroundMusicVolume)
&& (_CurrentPopupScreen == EPopupScreens.PopupVolumeControl && _VolumePopupTimer.IsRunning))
{
_VolumePopupTimer.Reset();
_VolumePopupTimer.Start();
_SavedBackgroundMusicVolume = CConfig.BackgroundMusicVolume;
_SavedGameMusicVolume = CConfig.GameMusicVolume;
_SavedPreviewMusicVolume = CConfig.PreviewMusicVolume;
}
if (_VolumePopupTimer.IsRunning && _VolumePopupTimer.ElapsedMilliseconds < 1500 && _CurrentPopupScreen != EPopupScreens.PopupVolumeControl)
ShowPopup(EPopupScreens.PopupVolumeControl);
if(_VolumePopupTimer.IsRunning && _VolumePopupTimer.ElapsedMilliseconds >= 1500 && _CurrentPopupScreen == EPopupScreens.PopupVolumeControl)
{
_VolumePopupTimer.Reset();
HidePopup(EPopupScreens.PopupVolumeControl);
}
if (!_Cursor.IsActive && _CurrentPopupScreen == EPopupScreens.PopupVolumeControl)
HidePopup(EPopupScreens.PopupVolumeControl);
if (_CurrentPopupScreen != EPopupScreens.NoPopup)
_PopupScreens[(int)_CurrentPopupScreen].UpdateGame();
return _Screens[(int)_CurrentScreen].UpdateGame();
@@ -686,7 +752,7 @@ namespace Vocaluxe.Menu
dy += rect.Height;
}
if (CConfig.DebugLevel >= EDebugLevel.TR_CONFIG_LEVEL2)
if (CConfig.DebugLevel >= EDebugLevel.TR_CONFIG_LEVEL3)
{
txt = CSongs.NumSongsWithCoverLoaded.ToString(CLanguage.Translate("TR_DEBUG_SONGS") + ": 00000");
@@ -697,7 +763,7 @@ namespace Vocaluxe.Menu
dy += rect.Height;
}
if (CConfig.DebugLevel >= EDebugLevel.TR_CONFIG_LEVEL2)
if (CConfig.DebugLevel >= EDebugLevel.TR_CONFIG_LEVEL_MAX)
{
txt = _Cursor.X.ToString(CLanguage.Translate("TR_DEBUG_MOUSE") + " : (0000/") + _Cursor.Y.ToString("0000)");
+34
View File
@@ -912,6 +912,36 @@ namespace Vocaluxe.Menu
if (KeyEvent.Key == Keys.Right)
NextElement();
}
if (!CBackgroundMusic.Disabled)
{
if (KeyEvent.ModSHIFT && (KeyEvent.Key == Keys.Add || KeyEvent.Key == Keys.PageUp))
{
CConfig.BackgroundMusicVolume = CConfig.BackgroundMusicVolume + 5;
if (CConfig.BackgroundMusicVolume > 100)
CConfig.BackgroundMusicVolume = 100;
CConfig.SaveConfig();
}
else if (KeyEvent.ModSHIFT && (KeyEvent.Key == Keys.Subtract || KeyEvent.Key == Keys.PageDown))
{
CConfig.BackgroundMusicVolume = CConfig.BackgroundMusicVolume - 5;
if (CConfig.BackgroundMusicVolume < 0)
CConfig.BackgroundMusicVolume = 0;
CConfig.SaveConfig();
}
else if (KeyEvent.Key == Keys.MediaNextTrack)
CBackgroundMusic.Next();
else if (KeyEvent.Key == Keys.MediaPreviousTrack)
CBackgroundMusic.Previous();
else if (KeyEvent.Key == Keys.MediaPlayPause)
{
if (CBackgroundMusic.Playing)
CBackgroundMusic.Pause();
else
CBackgroundMusic.Play();
}
CBackgroundMusic.ApplyVolume();
}
return true;
}
@@ -1060,6 +1090,10 @@ namespace Vocaluxe.Menu
public abstract bool UpdateGame();
public virtual void ApplyVolume()
{
}
public virtual void OnShow()
{
ResumeBG();
+13 -13
View File
@@ -272,45 +272,45 @@ namespace Vocaluxe.Menu
if (_Theme.ButtonPlaylistClose.Rect.Y < CompleteRect.Y)
CompleteRect.Y = _Theme.ButtonPlaylistClose.Rect.Y;
if (_Theme.ButtonPlaylistClose.Rect.W + _Theme.ButtonPlaylistClose.Rect.X > CompleteRect.W + CompleteRect.X)
CompleteRect.W += _Theme.ButtonPlaylistClose.Rect.W + _Theme.ButtonPlaylistClose.Rect.X - CompleteRect.X;
CompleteRect.W = _Theme.ButtonPlaylistClose.Rect.W + _Theme.ButtonPlaylistClose.Rect.X - CompleteRect.X;
if (_Theme.ButtonPlaylistClose.Rect.Y + _Theme.ButtonPlaylistClose.Rect.H > CompleteRect.Y + CompleteRect.H)
CompleteRect.H += _Theme.ButtonPlaylistClose.Rect.H + _Theme.ButtonPlaylistClose.Rect.Y - CompleteRect.Y;
CompleteRect.H = _Theme.ButtonPlaylistClose.Rect.H + _Theme.ButtonPlaylistClose.Rect.Y - CompleteRect.Y;
//ButtonPlaylistName
if (_Theme.ButtonPlaylistName.Rect.X < CompleteRect.X)
CompleteRect.X = _Theme.ButtonPlaylistName.Rect.X;
if (_Theme.ButtonPlaylistName.Rect.Y < CompleteRect.Y)
CompleteRect.Y = _Theme.ButtonPlaylistName.Rect.Y;
if (_Theme.ButtonPlaylistName.Rect.W + _Theme.ButtonPlaylistName.Rect.X > CompleteRect.W + CompleteRect.X)
CompleteRect.W += _Theme.ButtonPlaylistName.Rect.W + _Theme.ButtonPlaylistName.Rect.X - CompleteRect.X;
CompleteRect.W = _Theme.ButtonPlaylistName.Rect.W + _Theme.ButtonPlaylistName.Rect.X - CompleteRect.X;
if (_Theme.ButtonPlaylistName.Rect.Y + _Theme.ButtonPlaylistName.Rect.H > CompleteRect.Y + CompleteRect.H)
CompleteRect.H += _Theme.ButtonPlaylistName.Rect.H + _Theme.ButtonPlaylistName.Rect.Y - CompleteRect.Y;
CompleteRect.H = _Theme.ButtonPlaylistName.Rect.H + _Theme.ButtonPlaylistName.Rect.Y - CompleteRect.Y;
//ButtonPlaylistSing
if (_Theme.ButtonPlaylistSing.Rect.X < CompleteRect.X)
CompleteRect.X = _Theme.ButtonPlaylistSing.Rect.X;
if (_Theme.ButtonPlaylistSing.Rect.Y < CompleteRect.Y)
CompleteRect.Y = _Theme.ButtonPlaylistSing.Rect.Y;
if (_Theme.ButtonPlaylistSing.Rect.W + _Theme.ButtonPlaylistSing.Rect.X > CompleteRect.W + CompleteRect.X)
CompleteRect.W += _Theme.ButtonPlaylistSing.Rect.W + _Theme.ButtonPlaylistSing.Rect.X - CompleteRect.X;
CompleteRect.W = _Theme.ButtonPlaylistSing.Rect.W + _Theme.ButtonPlaylistSing.Rect.X - CompleteRect.X;
if (_Theme.ButtonPlaylistSing.Rect.Y + _Theme.ButtonPlaylistSing.Rect.H > CompleteRect.Y + CompleteRect.H)
CompleteRect.H += _Theme.ButtonPlaylistSing.Rect.H + _Theme.ButtonPlaylistSing.Rect.Y - CompleteRect.Y;
CompleteRect.H = _Theme.ButtonPlaylistSing.Rect.H + _Theme.ButtonPlaylistSing.Rect.Y - CompleteRect.Y;
//ButtonPlaylistSave
if (_Theme.ButtonPlaylistSave.Rect.X < CompleteRect.X)
CompleteRect.X = _Theme.ButtonPlaylistSave.Rect.X;
if (_Theme.ButtonPlaylistSave.Rect.Y < CompleteRect.Y)
CompleteRect.Y = _Theme.ButtonPlaylistSave.Rect.Y;
if (_Theme.ButtonPlaylistSave.Rect.W + _Theme.ButtonPlaylistSave.Rect.X > CompleteRect.W + CompleteRect.X)
CompleteRect.W += _Theme.ButtonPlaylistSave.Rect.W + _Theme.ButtonPlaylistSave.Rect.X - CompleteRect.X;
CompleteRect.W = _Theme.ButtonPlaylistSave.Rect.W + _Theme.ButtonPlaylistSave.Rect.X - CompleteRect.X;
if (_Theme.ButtonPlaylistSave.Rect.Y + _Theme.ButtonPlaylistSave.Rect.H > CompleteRect.Y + CompleteRect.H)
CompleteRect.H += _Theme.ButtonPlaylistSave.Rect.H + _Theme.ButtonPlaylistSave.Rect.Y - CompleteRect.Y;
CompleteRect.H = _Theme.ButtonPlaylistSave.Rect.H + _Theme.ButtonPlaylistSave.Rect.Y - CompleteRect.Y;
//ButtonPlaylistDelete
if (_Theme.ButtonPlaylistDelete.Rect.X < CompleteRect.X)
CompleteRect.X = _Theme.ButtonPlaylistDelete.Rect.X;
if (_Theme.ButtonPlaylistDelete.Rect.Y < CompleteRect.Y)
CompleteRect.Y = _Theme.ButtonPlaylistDelete.Rect.Y;
if (_Theme.ButtonPlaylistDelete.Rect.W + _Theme.ButtonPlaylistDelete.Rect.X > CompleteRect.W + CompleteRect.X)
CompleteRect.W += _Theme.ButtonPlaylistDelete.Rect.W + _Theme.ButtonPlaylistDelete.Rect.X - CompleteRect.X;
CompleteRect.W = _Theme.ButtonPlaylistDelete.Rect.W + _Theme.ButtonPlaylistDelete.Rect.X - CompleteRect.X;
if (_Theme.ButtonPlaylistDelete.Rect.Y + _Theme.ButtonPlaylistDelete.Rect.H > CompleteRect.Y + CompleteRect.H)
CompleteRect.H += _Theme.ButtonPlaylistDelete.Rect.H + _Theme.ButtonPlaylistDelete.Rect.Y - CompleteRect.Y;
CompleteRect.H = _Theme.ButtonPlaylistDelete.Rect.H + _Theme.ButtonPlaylistDelete.Rect.Y - CompleteRect.Y;
LoadTextures();
}
return _ThemeLoaded;
@@ -425,7 +425,7 @@ namespace Vocaluxe.Menu
public bool IsMouseOver(MouseEvent MouseEvent)
{
return CHelper.IsInBounds(Rect, MouseEvent.X, MouseEvent.Y) || _Interactions.IsMouseOver(MouseEvent);
return CHelper.IsInBounds(CompleteRect, MouseEvent.X, MouseEvent.Y) || _Interactions.IsMouseOver(MouseEvent);
}
public void UnloadTextures()
@@ -934,7 +934,7 @@ namespace Vocaluxe.Menu
//Change order with holding LB
if (MouseEvent.LBH && CurrentPlaylistElement != -1 && PlaylistElementContents.Count > 1 && DragAndDropSongID == -1)
{
ChangeOrderSource = CurrentPlaylistElement + Offset;
//Update of Drag/Drop-Texture
@@ -1076,7 +1076,7 @@ namespace Vocaluxe.Menu
}
}
}
UpdatePlaylist();
}
_EditMode = EEditMode.None;
+2 -2
View File
@@ -743,8 +743,8 @@ namespace Vocaluxe.Menu
if (_NumVisible < 1 || _ValueNames.Count == 0)
return;
float x = Rect.X + Rect.W * 0.1f;
float dx = Rect.W * 0.8f / _NumVisible;
float x = Rect.X + (Rect.W - TextRelativeX) * 0.1f;
float dx = (Rect.W - TextRelativeX) * 0.8f / _NumVisible;
//float y = Rect.Y + (Rect.H - TextH);
int offset = _Selection - (int)_NumVisible/2;
+9 -7
View File
@@ -53,6 +53,8 @@ namespace Vocaluxe.Menu
public float Alpha;
public EAspect Aspect = EAspect.Stretch;
public CStatic()
{
_Theme = new SThemeStatic();
@@ -213,25 +215,25 @@ namespace Vocaluxe.Menu
public void Draw()
{
Draw(1f, Rect.Z, false, false);
Draw(1f, Rect.Z, Aspect, false);
}
public void Draw(bool aspect)
public void Draw(EAspect aspect)
{
Draw(1f, Rect.Z, aspect, false);
}
public void Draw(float scale, bool aspect)
public void Draw(float scale, EAspect aspect)
{
Draw(scale, Rect.Z, aspect, false);
}
public void ForceDraw()
{
Draw(1f, Rect.Z, false, true);
Draw(1f, Rect.Z, Aspect, true);
}
public void Draw(float scale, float z, bool aspect, bool ForceDraw)
public void Draw(float scale, float z, EAspect aspect, bool ForceDraw)
{
STexture texture;
if (_Texture.index != -1)
@@ -248,11 +250,11 @@ namespace Vocaluxe.Menu
SRectF rect = bounds;
if (aspect)
if (aspect != EAspect.Stretch)
{
RectangleF bounds2 = new RectangleF(bounds.X, bounds.Y, bounds.W, bounds.H);
RectangleF rect2 = new RectangleF(0f, 0f, texture.width, texture.height);
CHelper.SetRect(bounds2, ref rect2, texture.width / texture.height, EAspect.Crop);
CHelper.SetRect(bounds2, ref rect2, texture.width / texture.height, aspect);
rect.X = rect2.X;
rect.Y = rect2.Y;
+5
View File
@@ -73,6 +73,11 @@ namespace Vocaluxe.Menu.SongMenu
_SongMenu.Draw();
}
public void ApplyVolume(float VolumeMax)
{
_SongMenu.ApplyVolume(VolumeMax);
}
public bool IsActive()
{
return _SongMenu.IsActive();
@@ -117,6 +117,8 @@ namespace Vocaluxe.Menu.SongMenu
private int _LockedInternal = -1;
protected bool _Active = false;
protected float _MaxVolume = 100f;
protected int _PreviewSelected //for preview only
{
get
@@ -510,6 +512,16 @@ namespace Vocaluxe.Menu.SongMenu
}
public virtual void ApplyVolume(float VolumeMax)
{
_MaxVolume = VolumeMax;
foreach (int stream in _streams)
{
CSound.SetStreamVolumeMax(stream, _MaxVolume);
}
}
public virtual bool IsActive()
{
return _Active;
@@ -598,6 +610,11 @@ namespace Vocaluxe.Menu.SongMenu
CSongs.Category = -1;
}
public void ApplyVolume()
{
CSound.SetStreamVolume(_actsongstream, CConfig.PreviewMusicVolume);
}
protected void SelectSong(int nr)
{
if (CSongs.Category >= 0 && (CSongs.NumVisibleSongs > 0) && (nr >= 0) && ((_actsong != nr) || (_streams.Count == 0)))
@@ -619,6 +636,7 @@ namespace Vocaluxe.Menu.SongMenu
int _stream = CSound.Load(Path.Combine(CSongs.VisibleSongs[_actsong].Folder, CSongs.VisibleSongs[_actsong].MP3FileName), true);
CSound.SetStreamVolumeMax(_stream, _MaxVolume);
CSound.SetStreamVolume(_stream, 0f);
float startposition = CSongs.VisibleSongs[_actsong].PreviewStart;
+7 -6
View File
@@ -412,13 +412,13 @@ namespace Vocaluxe.Menu.SongMenu
foreach (CStatic tile in _Tiles)
{
if (tile.Selected && _Active)
tile.Draw(1.2f, tile.Rect.Z - 0.1f, true, false);
tile.Draw(1.2f, tile.Rect.Z - 0.1f, EAspect.Crop, false);
else
{
if (tile.Texture.index != _CoverTexture.index)
tile.Draw(1f, tile.Rect.Z, true, false);
tile.Draw(1f, tile.Rect.Z, EAspect.Crop, false);
else
tile.Draw(1f, tile.Rect.Z, false, false);
tile.Draw(1f, tile.Rect.Z, EAspect.Stretch, false);
}
}
@@ -469,11 +469,12 @@ namespace Vocaluxe.Menu.SongMenu
}
}
_CoverBig.Draw(1f, true);
if (_vidtex.color.A < 1)
_CoverBig.Draw(1f, true);
_TextBG.Draw();
_CoverBig.Draw(1f, EAspect.Crop);
if (_vidtex.color.A < 1)
_CoverBig.Draw(1f, EAspect.Crop);
if (_vidtex.index != -1 && _Video != -1)
{
RectangleF bounds = new RectangleF(_CoverBig.Rect.X, _CoverBig.Rect.Y, _CoverBig.Rect.W, _CoverBig.Rect.H);
+2
View File
@@ -17,6 +17,8 @@ namespace Vocaluxe.Menu.SongMenu
void HandleMouse(ref MouseEvent MouseEvent);
void Draw();
void ApplyVolume(float VolumeMax);
int GetSelectedSong();
CStatic GetSelectedSongCover();
void SetSelectedSong(int VisibleSongNr);
+8
View File
@@ -89,6 +89,13 @@ namespace Vocaluxe
Application.DoEvents();
//Init Webcam
CLog.StartBenchmark(0, "Init Webcam");
CWebcam.Init();
CLog.StopBenchmark(0, "Init Webcam");
Application.DoEvents();
// Init Background Music
CLog.StartBenchmark(0, "Init Background Music");
CBackgroundMusic.Init();
@@ -185,6 +192,7 @@ namespace Vocaluxe
CDraw.Unload();
CLog.CloseAll();
CDataBase.CloseConnections();
CWebcam.Close();
}
catch (Exception)
{
@@ -0,0 +1,158 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Windows.Forms;
using Vocaluxe.Base;
using Vocaluxe.GameModes;
using Vocaluxe.Lib.Draw;
using Vocaluxe.Menu;
using Vocaluxe.Lib.Song;
namespace Vocaluxe.Screens
{
class CPopupScreenVolumeControl : CMenu
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
const int ScreenVersion = 1;
private const string StaticBG = "StaticBG";
private const string SelectSlideVolume = "SelectSlideVolume";
public CPopupScreenVolumeControl()
{
Init();
}
protected override void Init()
{
base.Init();
_ThemeName = "PopupScreenVolumeControl";
_ScreenVersion = ScreenVersion;
_ThemeStatics = new string[] { StaticBG };
_ThemeSelectSlides = new string[] { SelectSlideVolume };
}
public override void LoadTheme()
{
base.LoadTheme();
_ScreenArea = Statics[htStatics(StaticBG)].Rect;
SelectSlides[htSelectSlides(SelectSlideVolume)].AddValues(new string[] { "0", "5", "10", "15", "20", "25", "30", "35", "40", "45", "50", "55", "60", "65", "70", "75", "80", "85", "90", "95", "100" });
}
public override bool HandleInput(KeyEvent KeyEvent)
{
base.HandleInput(KeyEvent);
if (KeyEvent.KeyPressed && !Char.IsControl(KeyEvent.Unicode))
{
}
else
{
switch (KeyEvent.Key)
{
case Keys.Escape:
case Keys.Back:
CGraphics.HidePopup(EPopupScreens.PopupVolumeControl);
return false;
}
}
return true;
}
public override bool HandleMouse(MouseEvent MouseEvent)
{
base.HandleMouse(MouseEvent);
if (MouseEvent.LB)
{
SaveConfig();
return true;
}
else if (MouseEvent.Wheel > 0 && CHelper.IsInBounds(_ScreenArea, MouseEvent))
{
if (SelectSlides[htSelectSlides(SelectSlideVolume)].Selection - MouseEvent.Wheel >= 0)
SelectSlides[htSelectSlides(SelectSlideVolume)].SetSelectionByValueIndex(SelectSlides[htSelectSlides(SelectSlideVolume)].Selection - MouseEvent.Wheel);
else if (SelectSlides[htSelectSlides(SelectSlideVolume)].Selection - MouseEvent.Wheel < 0)
SelectSlides[htSelectSlides(SelectSlideVolume)].SetSelectionByValueIndex(0);
SaveConfig();
return true;
}
else if (MouseEvent.Wheel < 0 && CHelper.IsInBounds(_ScreenArea, MouseEvent))
{
if (SelectSlides[htSelectSlides(SelectSlideVolume)].Selection - MouseEvent.Wheel < SelectSlides[htSelectSlides(SelectSlideVolume)].NumValues)
SelectSlides[htSelectSlides(SelectSlideVolume)].SetSelectionByValueIndex(SelectSlides[htSelectSlides(SelectSlideVolume)].Selection - MouseEvent.Wheel);
else if (SelectSlides[htSelectSlides(SelectSlideVolume)].Selection - MouseEvent.Wheel >= SelectSlides[htSelectSlides(SelectSlideVolume)].NumValues)
SelectSlides[htSelectSlides(SelectSlideVolume)].SetSelectionByValueIndex(SelectSlides[htSelectSlides(SelectSlideVolume)].NumValues - 1);
SaveConfig();
return true;
}
else if (MouseEvent.RB)
{
//CGraphics.HidePopup(EPopupScreens.PopupPlayerControl);
return false;
}
return true;
}
public override void OnShow()
{
base.OnShow();
switch (CGraphics.CurrentScreen)
{
case EScreens.ScreenSong:
SelectSlides[htSelectSlides(SelectSlideVolume)].SetSelectionByValueIndex((int)CConfig.PreviewMusicVolume / 5);
break;
case EScreens.ScreenSing:
SelectSlides[htSelectSlides(SelectSlideVolume)].SetSelectionByValueIndex((int)CConfig.GameMusicVolume / 5);
break;
default:
SelectSlides[htSelectSlides(SelectSlideVolume)].SetSelectionByValueIndex((int)CConfig.BackgroundMusicVolume / 5);
break;
}
}
public override bool UpdateGame()
{
return true;
}
public override bool Draw()
{
if (!_Active)
return false;
return base.Draw();
}
private void SaveConfig()
{
switch (CGraphics.CurrentScreen)
{
case EScreens.ScreenSong:
CConfig.PreviewMusicVolume = SelectSlides[htSelectSlides(SelectSlideVolume)].Selection * 5;
break;
case EScreens.ScreenSing:
CConfig.GameMusicVolume = SelectSlides[htSelectSlides(SelectSlideVolume)].Selection * 5;
break;
default:
CConfig.BackgroundMusicVolume = SelectSlides[htSelectSlides(SelectSlideVolume)].Selection * 5;
CBackgroundMusic.ApplyVolume();
break;
}
CConfig.SaveConfig();
}
}
}
+20 -2
View File
@@ -12,11 +12,13 @@ namespace Vocaluxe.Screens
class CScreenOptionsSound : CMenu
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
const int ScreenVersion = 2;
const int ScreenVersion = 3;
private const string SelectSlideBackgroundMusic = "SelectSlideBackgroundMusic";
private const string SelectSlideBackgroundMusicVolume = "SelectSlideBackgroundMusicVolume";
private const string SelectSlideBackgroundMusicSource = "SelectSlideBackgroundMusicSource";
private const string SelectSlidePreviewMusicVolume = "SelectSlidePreviewMusicVolume";
private const string SelectSlideGameMusicVolume = "SelectSlideGameMusicVolume";
private const string ButtonExit = "ButtonExit";
@@ -36,7 +38,7 @@ namespace Vocaluxe.Screens
_ScreenVersion = ScreenVersion;
_ThemeButtons = new string[] { ButtonExit };
_ThemeSelectSlides = new string[] { SelectSlideBackgroundMusic, SelectSlideBackgroundMusicVolume, SelectSlideBackgroundMusicSource };
_ThemeSelectSlides = new string[] { SelectSlideBackgroundMusic, SelectSlideBackgroundMusicVolume, SelectSlideBackgroundMusicSource, SelectSlidePreviewMusicVolume, SelectSlideGameMusicVolume };
}
public override void LoadTheme()
@@ -47,6 +49,11 @@ namespace Vocaluxe.Screens
SelectSlides[htSelectSlides(SelectSlideBackgroundMusicVolume)].Selection = CConfig.BackgroundMusicVolume / 5;
SelectSlides[htSelectSlides(SelectSlideBackgroundMusicSource)].SetValues<EBackgroundMusicSource>((int)CConfig.BackgroundMusicSource);
SelectSlides[htSelectSlides(SelectSlideBackgroundMusicSource)].Selection = (int)CConfig.BackgroundMusicSource;
SelectSlides[htSelectSlides(SelectSlidePreviewMusicVolume)].AddValues(new string[] { "0", "5", "10", "15", "20", "25", "30", "35", "40", "45", "50", "55", "60", "65", "70", "75", "80", "85", "90", "95", "100" });
SelectSlides[htSelectSlides(SelectSlidePreviewMusicVolume)].Selection = CConfig.PreviewMusicVolume / 5;
SelectSlides[htSelectSlides(SelectSlideGameMusicVolume)].AddValues(new string[] { "0", "5", "10", "15", "20", "25", "30", "35", "40", "45", "50", "55", "60", "65", "70", "75", "80", "85", "90", "95", "100" });
SelectSlides[htSelectSlides(SelectSlideGameMusicVolume)].Selection = CConfig.GameMusicVolume / 5;
}
public override bool HandleInput(KeyEvent KeyEvent)
@@ -113,6 +120,10 @@ namespace Vocaluxe.Screens
public override bool UpdateGame()
{
if (_BackgroundMusicVolume != CConfig.BackgroundMusicVolume)
{
SelectSlides[htSelectSlides(SelectSlideBackgroundMusicVolume)].Selection = CConfig.BackgroundMusicVolume / 5;
}
return true;
}
@@ -127,9 +138,16 @@ namespace Vocaluxe.Screens
base.OnShow();
_BackgroundMusic = CConfig.BackgroundMusic;
_BackgroundMusicVolume = CConfig.BackgroundMusicVolume;
SelectSlides[htSelectSlides(SelectSlideGameMusicVolume)].Selection = CConfig.GameMusicVolume / 5;
SelectSlides[htSelectSlides(SelectSlidePreviewMusicVolume)].Selection = CConfig.PreviewMusicVolume / 5;
}
private void SaveConfig()
{
CConfig.GameMusicVolume = SelectSlides[htSelectSlides(SelectSlideGameMusicVolume)].Selection * 5;
CConfig.PreviewMusicVolume = SelectSlides[htSelectSlides(SelectSlidePreviewMusicVolume)].Selection * 5;
CConfig.SaveConfig();
EOffOn NewOffOn = (EOffOn)SelectSlides[htSelectSlides(SelectSlideBackgroundMusic)].Selection;
EBackgroundMusicSource NewSource = (EBackgroundMusicSource)SelectSlides[htSelectSlides(SelectSlideBackgroundMusicSource)].Selection;
float NewVolume = SelectSlides[htSelectSlides(SelectSlideBackgroundMusicVolume)].Selection * 5;
+2
View File
@@ -183,6 +183,7 @@ namespace Vocaluxe.Screens
_OldTheme = SelectSlides[htSelectSlides(SelectSlideTheme)].Selection;
CTheme.UnloadSkins();
CFonts.UnloadThemeFonts(CConfig.Theme);
CTheme.ListSkins();
CConfig.Skin = CTheme.SkinNames[0];
_OldSkin = 0;
@@ -205,6 +206,7 @@ namespace Vocaluxe.Screens
_OldTheme = SelectSlides[htSelectSlides(SelectSlideTheme)].Selection;
CTheme.UnloadSkins();
CFonts.UnloadThemeFonts(CConfig.Theme);
CTheme.ListSkins();
CConfig.Skin = CTheme.SkinNames[0];
_OldSkin = 0;
+147 -2
View File
@@ -5,6 +5,7 @@ using System.Windows.Forms;
using Vocaluxe.Base;
using Vocaluxe.Menu;
using Vocaluxe.Lib.Webcam;
namespace Vocaluxe.Screens
@@ -12,15 +13,24 @@ namespace Vocaluxe.Screens
class CScreenOptionsVideo : CMenu
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
const int ScreenVersion = 2;
const int ScreenVersion = 3;
private const string SelectSlideVideoBackgrounds = "SelectSlideVideoBackgrounds";
private const string SelectSlideVideoPreview = "SelectSlideVideoPreview";
private const string SelectSlideVideosInSongs = "SelectSlideVideosInSongs";
private const string SelectSlideVideosToBackground = "SelectSlideVideosToBackground";
private const string SelectSlideWebcamDevices = "SelectSlideWebcamDevices";
private const string SelectSlideWebcamCapabilities = "SelectSlideWebcamCapabilities";
private const string StaticWebcamOutput = "StaticWebcamOutput";
private const string ButtonExit = "ButtonExit";
private SWebcamConfig _Config;
Lib.Draw.STexture _WebcamTexture = new Lib.Draw.STexture(-1);
private int _DeviceNr;
private int _CapabilityNr;
public CScreenOptionsVideo()
{
Init();
@@ -33,8 +43,9 @@ namespace Vocaluxe.Screens
_ThemeName = "ScreenOptionsVideo";
_ScreenVersion = ScreenVersion;
_ThemeStatics = new string[] { StaticWebcamOutput };
_ThemeButtons = new string[] { ButtonExit };
_ThemeSelectSlides = new string[] { SelectSlideVideoBackgrounds, SelectSlideVideoPreview, SelectSlideVideosInSongs, SelectSlideVideosToBackground };
_ThemeSelectSlides = new string[] { SelectSlideVideoBackgrounds, SelectSlideVideoPreview, SelectSlideVideosInSongs, SelectSlideVideosToBackground, SelectSlideWebcamDevices, SelectSlideWebcamCapabilities };
}
public override void LoadTheme()
@@ -78,10 +89,18 @@ namespace Vocaluxe.Screens
break;
case Keys.Left:
if (SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selected)
OnDeviceEvent();
if (SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selected)
OnCapabilitiesEvent();
SaveConfig();
break;
case Keys.Right:
if (SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selected)
OnDeviceEvent();
if (SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selected)
OnCapabilitiesEvent();
SaveConfig();
break;
}
@@ -101,6 +120,10 @@ namespace Vocaluxe.Screens
if (MouseEvent.LB && IsMouseOver(MouseEvent))
{
if (SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selected)
OnDeviceEvent();
if (SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selected)
OnCapabilitiesEvent();
SaveConfig();
if (Buttons[htButtons(ButtonExit)].Selected)
{
@@ -112,6 +135,8 @@ namespace Vocaluxe.Screens
public override bool UpdateGame()
{
CWebcam.GetFrame(ref _WebcamTexture);
Statics[htStatics(StaticWebcamOutput)].Texture = _WebcamTexture;
SelectSlides[htSelectSlides(SelectSlideVideosToBackground)].Selection = (int)CConfig.VideosToBackground;
return true;
}
@@ -119,18 +144,138 @@ namespace Vocaluxe.Screens
public override bool Draw()
{
base.Draw();
return true;
}
public override void OnClose()
{
base.OnClose();
CWebcam.Close();
}
public override void OnShow()
{
base.OnShow();
SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Clear();
SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Clear();
_DeviceNr = -1;
_CapabilityNr = -1;
SWebcamDevice[] devices = CWebcam.GetDevices();
if (devices != null)
{
if (devices.Length > 0)
{
_DeviceNr = 0;
_CapabilityNr = 0;
GetFirstConfiguredWebcamDevice(ref _DeviceNr, ref _CapabilityNr);
foreach (SWebcamDevice d in devices)
{
SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].AddValue(d.Name);
}
SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection = _DeviceNr;
foreach (SCapabilities c in devices[_DeviceNr].Capabilities)
{
SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].AddValue(c.Width.ToString() + " x " + c.Height.ToString() + " @ " + c.Framerate.ToString() + " FPS ");
}
_Config.MonikerString = devices[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].MonikerString;
_Config.Width = devices[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities[SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection].Width;
_Config.Height = devices[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities[SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection].Height;
_Config.Framerate = devices[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities[SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection].Framerate;
CWebcam.Close();
CWebcam.Select(CConfig.WebcamConfig);
CWebcam.Start();
}
}
SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Visible = (devices != null && devices.Length > 0);
SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Visible = (devices != null && devices.Length > 0);
Statics[htStatics(StaticWebcamOutput)].Visible = (devices != null && devices.Length > 0);
}
private void SaveConfig()
{
CConfig.VideoBackgrounds = (EOffOn)SelectSlides[htSelectSlides(SelectSlideVideoBackgrounds)].Selection;
CConfig.VideoPreview = (EOffOn)SelectSlides[htSelectSlides(SelectSlideVideoPreview)].Selection;
CConfig.VideosInSongs = (EOffOn)SelectSlides[htSelectSlides(SelectSlideVideosInSongs)].Selection;
CConfig.VideosToBackground = (EOffOn)SelectSlides[htSelectSlides(SelectSlideVideosToBackground)].Selection;
CConfig.WebcamConfig = _Config;
CBackgroundMusic.VideoEnabled = true;
CConfig.SaveConfig();
}
private void OnDeviceEvent()
{
if (SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection != _DeviceNr)
{
SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Clear();
_DeviceNr = SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection;
_CapabilityNr = 0;
SWebcamDevice[] d = CWebcam.GetDevices();
for (int i = 0; i < d[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities.Count; i++)
{
SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].AddValue(d[_DeviceNr].Capabilities[i].Width.ToString() + " x " + d[_DeviceNr].Capabilities[i].Height.ToString() + " @ " + d[_DeviceNr].Capabilities[i].Framerate.ToString() + "FPS");
}
SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection = 0;
_Config.MonikerString = d[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].MonikerString;
_Config.Width = d[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities[SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection].Width;
_Config.Height = d[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities[SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection].Height;
_Config.Framerate = d[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities[SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection].Framerate;
CWebcam.Close();
CWebcam.Select(_Config);
CWebcam.Start();
}
}
private void OnCapabilitiesEvent()
{
if (SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection != _CapabilityNr)
{
_CapabilityNr = SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection;
SWebcamDevice[] d = CWebcam.GetDevices();
_Config.MonikerString = d[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].MonikerString;
_Config.Width = d[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities[SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection].Width;
_Config.Height = d[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities[SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection].Height;
_Config.Framerate = d[SelectSlides[htSelectSlides(SelectSlideWebcamDevices)].Selection].Capabilities[SelectSlides[htSelectSlides(SelectSlideWebcamCapabilities)].Selection].Framerate;
CWebcam.Close();
CWebcam.Select(_Config);
CWebcam.Start();
}
}
private void GetFirstConfiguredWebcamDevice(ref int Device, ref int Capabilities)
{
SWebcamDevice[] devices = CWebcam.GetDevices();
if (devices == null)
return;
for (int i = 0; i < devices.Length; i++)
{
if (devices[i].MonikerString == CConfig.WebcamConfig.MonikerString)
{
for (int j = 0; j < devices[i].Capabilities.Count; j++)
{
if (devices[i].Capabilities[j].Framerate == CConfig.WebcamConfig.Framerate && devices[i].Capabilities[j].Width == CConfig.WebcamConfig.Width && devices[i].Capabilities[j].Height == CConfig.WebcamConfig.Height)
{
Device = i;
Capabilities = j;
return;
}
}
}
}
}
}
}
+126 -3
View File
@@ -5,6 +5,9 @@ using System.Windows.Forms;
using Vocaluxe.Base;
using Vocaluxe.Menu;
using System.Drawing;
using System.IO;
using Vocaluxe.Lib.Draw;
namespace Vocaluxe.Screens
{
@@ -17,7 +20,7 @@ namespace Vocaluxe.Screens
class CScreenProfiles : CMenu
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
const int ScreenVersion = 1;
const int ScreenVersion = 2;
private const string SelectSlideProfiles = "SelectSlideProfiles";
private const string SelectSlideDifficulty = "SelectSlideDifficulty";
@@ -29,10 +32,17 @@ namespace Vocaluxe.Screens
private const string ButtonSave = "ButtonSave";
private const string ButtonNew = "ButtonNew";
private const string ButtonDelete = "ButtonDelete";
private const string ButtonWebcam = "ButtonWebcam";
private const string ButtonSaveSnapshot = "ButtonSaveSnapshot";
private const string ButtonDiscardSnapshot = "ButtonDiscardSnapshot";
private const string ButtonTakeSnapshot = "ButtonTakeSnapshot";
private const string StaticAvatar = "StaticAvatar";
private EEditMode _EditMode;
private Lib.Draw.STexture _WebcamTexture = new Lib.Draw.STexture(-1);
private Bitmap _Snapshot = null;
public CScreenProfiles()
{
@@ -45,7 +55,7 @@ namespace Vocaluxe.Screens
_ThemeName = "ScreenProfiles";
_ScreenVersion = ScreenVersion;
_ThemeButtons = new string[] { ButtonPlayerName, ButtonExit, ButtonSave, ButtonNew, ButtonDelete };
_ThemeButtons = new string[] { ButtonPlayerName, ButtonExit, ButtonSave, ButtonNew, ButtonDelete, ButtonWebcam, ButtonSaveSnapshot, ButtonDiscardSnapshot, ButtonTakeSnapshot };
_ThemeSelectSlides = new string[] { SelectSlideProfiles, SelectSlideDifficulty, SelectSlideAvatars, SelectSlideGuestProfile, SelectSlideActive };
_ThemeStatics = new string[] { StaticAvatar };
@@ -56,6 +66,13 @@ namespace Vocaluxe.Screens
{
base.LoadTheme();
Buttons[htButtons(ButtonSaveSnapshot)].Visible = false;
Buttons[htButtons(ButtonDiscardSnapshot)].Visible = false;
Buttons[htButtons(ButtonTakeSnapshot)].Visible = false;
if (CWebcam.GetDevices().Length > 0)
Buttons[htButtons(ButtonWebcam)].Visible = true;
else
Buttons[htButtons(ButtonWebcam)].Visible = false;
SelectSlides[htSelectSlides(SelectSlideDifficulty)].SetValues<EGameDifficulty>(0);
SelectSlides[htSelectSlides(SelectSlideGuestProfile)].SetValues<EOffOn>(0);
SelectSlides[htSelectSlides(SelectSlideActive)].SetValues<EOffOn>(0);
@@ -108,6 +125,18 @@ namespace Vocaluxe.Screens
} else if (Buttons[htButtons(ButtonDelete)].Selected)
{
DeleteProfile();
} else if (Buttons[htButtons(ButtonWebcam)].Selected && CWebcam.GetDevices().Length > 0)
{
OnWebcam();
} else if (Buttons[htButtons(ButtonSaveSnapshot)].Selected && CWebcam.GetDevices().Length > 0)
{
OnSaveSnapshot();
} else if (Buttons[htButtons(ButtonDiscardSnapshot)].Selected && CWebcam.GetDevices().Length > 0)
{
OnDiscardSnapshot();
} else if (Buttons[htButtons(ButtonTakeSnapshot)].Selected && CWebcam.GetDevices().Length > 0)
{
OnTakeSnapshot();
}
break;
@@ -179,6 +208,8 @@ namespace Vocaluxe.Screens
{
CProfiles.SetAvatar(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection,
SelectSlides[htSelectSlides(SelectSlideAvatars)].Selection);
if (CWebcam.GetDevices().Length > 0 && _WebcamTexture.index > 0)
OnDiscardSnapshot();
} else if (SelectSlides[htSelectSlides(SelectSlideGuestProfile)].Selected)
{
CProfiles.SetGuestProfile(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection,
@@ -187,6 +218,18 @@ namespace Vocaluxe.Screens
{
CProfiles.SetActive(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection,
(EOffOn)SelectSlides[htSelectSlides(SelectSlideActive)].Selection);
} else if (Buttons[htButtons(ButtonWebcam)].Selected && CWebcam.GetDevices().Length > 0)
{
OnWebcam();
} else if (Buttons[htButtons(ButtonSaveSnapshot)].Selected && CWebcam.GetDevices().Length > 0)
{
OnSaveSnapshot();
} else if (Buttons[htButtons(ButtonDiscardSnapshot)].Selected && CWebcam.GetDevices().Length > 0)
{
OnDiscardSnapshot();
} else if (Buttons[htButtons(ButtonTakeSnapshot)].Selected && CWebcam.GetDevices().Length > 0)
{
OnTakeSnapshot();
}
}
@@ -197,6 +240,68 @@ namespace Vocaluxe.Screens
return true;
}
private void OnTakeSnapshot()
{
Buttons[htButtons(ButtonSaveSnapshot)].Visible = true;
Buttons[htButtons(ButtonDiscardSnapshot)].Visible = true;
Buttons[htButtons(ButtonWebcam)].Visible = false;
Buttons[htButtons(ButtonTakeSnapshot)].Visible = false;
_Snapshot = CWebcam.GetBitmap();
}
private void OnDiscardSnapshot()
{
CWebcam.Stop();
CDraw.RemoveTexture(ref _WebcamTexture);
_Snapshot = null;
Buttons[htButtons(ButtonSaveSnapshot)].Visible = false;
Buttons[htButtons(ButtonDiscardSnapshot)].Visible = false;
Buttons[htButtons(ButtonTakeSnapshot)].Visible = false;
Buttons[htButtons(ButtonWebcam)].Visible = true;
}
private void OnSaveSnapshot()
{
string filename = "snapshot";
int i = 0;
while (File.Exists(Path.Combine(CSettings.sFolderProfiles, filename + i + ".png")))
{
i++;
}
_Snapshot.Save(Path.Combine(CSettings.sFolderProfiles, filename + i + ".png"), System.Drawing.Imaging.ImageFormat.Png);
CProfiles.LoadAvatars();
LoadAvatars();
_Snapshot = null;
CWebcam.Stop();
CDraw.RemoveTexture(ref _WebcamTexture);
for (int j = 0; j < CProfiles.Avatars.Length; j++)
{
if (CProfiles.Avatars[j].FileName == (filename + i + ".png"))
{
CProfiles.SetAvatar(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection, j);
break;
}
}
Buttons[htButtons(ButtonSaveSnapshot)].Visible = false;
Buttons[htButtons(ButtonDiscardSnapshot)].Visible = false;
Buttons[htButtons(ButtonTakeSnapshot)].Visible = false;
Buttons[htButtons(ButtonWebcam)].Visible = true;
}
private void OnWebcam()
{
_Snapshot = null;
CWebcam.Start();
CWebcam.GetFrame(ref _WebcamTexture);
Buttons[htButtons(ButtonSaveSnapshot)].Visible = false;
Buttons[htButtons(ButtonDiscardSnapshot)].Visible = false;
Buttons[htButtons(ButtonTakeSnapshot)].Visible = true;
Buttons[htButtons(ButtonWebcam)].Visible = false;
}
public override bool UpdateGame()
{
if (SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection > -1)
@@ -211,7 +316,18 @@ namespace Vocaluxe.Screens
int avatarNr = CProfiles.GetAvatarNr(SelectSlides[htSelectSlides(SelectSlideProfiles)].Selection);
SelectSlides[htSelectSlides(SelectSlideAvatars)].Selection = avatarNr;
Statics[htStatics(StaticAvatar)].Texture = CProfiles.Avatars[avatarNr].Texture;
if (CWebcam.GetDevices().Length > 0 && _WebcamTexture.index > 0)
{
if(_Snapshot == null)
CWebcam.GetFrame(ref _WebcamTexture);
Statics[htStatics(StaticAvatar)].Texture = _WebcamTexture;
RectangleF bounds = new RectangleF(_WebcamTexture.rect.X, _WebcamTexture.rect.Y, _WebcamTexture.rect.W, _WebcamTexture.rect.H);
RectangleF rect = new RectangleF(0f, 0f, _WebcamTexture.rect.W, _WebcamTexture.rect.H);
CHelper.SetRect(bounds, ref rect, rect.Width / rect.Height, EAspect.Crop);
}
else
Statics[htStatics(StaticAvatar)].Texture = CProfiles.Avatars[avatarNr].Texture;
}
return true;
@@ -227,6 +343,13 @@ namespace Vocaluxe.Screens
UpdateGame();
}
public override void OnClose()
{
base.OnClose();
OnDiscardSnapshot();
}
public override bool Draw()
{
return base.Draw();
+100 -36
View File
@@ -17,7 +17,7 @@ namespace Vocaluxe.Screens
class CScreenSing : CMenu
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
const int ScreenVersion = 5;
const int ScreenVersion = 6;
struct TimeRect
{
@@ -75,6 +75,7 @@ namespace Vocaluxe.Screens
private int _CurrentVideo = -1;
private EAspect _VideoAspect = EAspect.Crop;
private STexture _CurrentVideoTexture = new STexture(-1);
private STexture _CurrentWebcamFrameTexture = new STexture(-1);
private STexture _Background = new STexture(-1);
private float _CurrentTime = 0f;
@@ -92,6 +93,7 @@ namespace Vocaluxe.Screens
private Stopwatch _TimerDuetText2;
private bool _Pause;
private bool _Webcam;
public CScreenSing()
{
@@ -149,6 +151,7 @@ namespace Vocaluxe.Screens
public override void LoadTheme()
{
base.LoadTheme();
Statics[htStatics(StaticTimeLine)].Visible = false;
Statics[htStatics(StaticTimeLineExpandedNormal)].Visible = false;
Statics[htStatics(StaticTimeLineExpandedHighlighted)].Visible = false;
@@ -184,13 +187,13 @@ namespace Vocaluxe.Screens
TogglePause();
if (_Pause)
SetInteractionToButton(Buttons[htButtons(ButtonContinue)]);
break;
break;
case Keys.T:
int mode = (int)CConfig.TimerMode;
mode++;
if (mode > Enum.GetNames(typeof(ETimerMode)).Length-1)
if (mode > Enum.GetNames(typeof(ETimerMode)).Length - 1)
{
mode = 0;
}
@@ -215,7 +218,16 @@ namespace Vocaluxe.Screens
if(KeyEvent.ModCTRL)
LoadNextSong();
break;
case Keys.W:
if (CWebcam.GetDevices().Length > 0)
{
_Webcam = !_Webcam;
if (_Webcam)
CWebcam.Start();
else
CWebcam.Stop();
}
break;
case Keys.Enter:
if (Buttons[htButtons(ButtonContinue)].Selected && _Pause)
TogglePause();
@@ -227,6 +239,30 @@ namespace Vocaluxe.Screens
TogglePause();
}
break;
case Keys.Add:
case Keys.PageUp:
if (KeyEvent.ModSHIFT)
{
CConfig.GameMusicVolume = CConfig.GameMusicVolume + 5;
if (CConfig.GameMusicVolume > 100)
CConfig.GameMusicVolume = 100;
CConfig.SaveConfig();
ApplyVolume();
}
break;
case Keys.Subtract:
case Keys.PageDown:
if (KeyEvent.ModSHIFT)
{
CConfig.GameMusicVolume = CConfig.GameMusicVolume - 5;
if (CConfig.GameMusicVolume < 0)
CConfig.GameMusicVolume = 0;
CConfig.SaveConfig();
ApplyVolume();
}
break;
}
}
@@ -275,7 +311,7 @@ namespace Vocaluxe.Screens
}
else
Finish = true;
if (Finish)
{
LoadNextSong();
@@ -283,7 +319,6 @@ namespace Vocaluxe.Screens
UpdateSongText();
UpdateDuetText();
if (_FadeOut)
return true;
@@ -322,7 +357,7 @@ namespace Vocaluxe.Screens
Texts[htTexts(TextNames[p, CGame.NumPlayer - 1])].Alpha = Alpha[CGame.Player[p].LineNr * 2];
Texts[htTexts(TextScores[p, CGame.NumPlayer - 1])].Alpha = Alpha[CGame.Player[p].LineNr * 2];
}
}
}
if (Alpha.Length > 2)
{
@@ -339,7 +374,7 @@ namespace Vocaluxe.Screens
Statics[htStatics(StaticLyricHelper)].Alpha = Alpha[2];
}
}
for (int p = 0; p < CGame.NumPlayer; p++)
{
@@ -358,18 +393,22 @@ namespace Vocaluxe.Screens
float vtime = 0f;
CVideo.VdGetFrame(_CurrentVideo, ref _CurrentVideoTexture, _CurrentTime, ref vtime);
}
if (_Webcam)
CWebcam.GetFrame(ref _CurrentWebcamFrameTexture);
return true;
}
public override void OnShow()
{
base.OnShow();
_FadeOut = false;
_CurrentVideo = -1;
_CurrentVideoTexture = new STexture(-1);
_CurrentWebcamFrameTexture = new STexture(-1);
_CurrentBeat = -100;
_CurrentTime = 0f;
_FinishTime = 0f;
@@ -379,7 +418,7 @@ namespace Vocaluxe.Screens
_TimeRects.Clear();
SingNotes[htSingNotes(SingBars)].Reset();
SingNotes[htSingNotes(SingBars)].Reset();
for (int i = 0; i < CSettings.MaxNumPlayer; i++)
{
NoteLines[i] = -1;
@@ -389,6 +428,11 @@ namespace Vocaluxe.Screens
{
Lyrics[i].LyricStyle = CConfig.LyricStyle;
}
for (int p = 0; p < CGame.NumPlayer; p++)
{
Statics[htStatics(StaticAvatars[p, CGame.NumPlayer - 1])].Aspect = EAspect.Crop;
}
SetVisuability();
UpdateAvatars();
@@ -411,7 +455,7 @@ namespace Vocaluxe.Screens
{
if (_Active)
{
if (_CurrentVideo != -1 && CConfig.VideosInSongs == EOffOn.TR_CONFIG_ON)
if (_CurrentVideo != -1 && CConfig.VideosInSongs == EOffOn.TR_CONFIG_ON && !_Webcam)
{
RectangleF bounds = new RectangleF(0, 0, CSettings.iRenderW, CSettings.iRenderH);
RectangleF rect = new RectangleF(0f, 0f, _CurrentVideoTexture.width, _CurrentVideoTexture.height);
@@ -420,6 +464,15 @@ namespace Vocaluxe.Screens
CDraw.DrawTexture(_CurrentVideoTexture, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, 0f),
_CurrentVideoTexture.color, new SRectF(bounds.X, bounds.Y, bounds.Width, bounds.Height, 0f), false);
}
else if (_Webcam)
{
RectangleF bounds = new RectangleF(0, 0, CSettings.iRenderW, CSettings.iRenderH);
RectangleF rect = new RectangleF(0f, 0f, _CurrentWebcamFrameTexture.width, _CurrentWebcamFrameTexture.height);
CHelper.SetRect(bounds, ref rect, rect.Width / rect.Height, _VideoAspect);
CDraw.DrawTexture(_CurrentWebcamFrameTexture, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, 0f),
_CurrentVideoTexture.color, new SRectF(bounds.X, bounds.Y, bounds.Width, bounds.Height, 0f), false);
}
else
{ // Draw Background
RectangleF bounds = new RectangleF(0, 0, CSettings.iRenderW, CSettings.iRenderH);
@@ -460,7 +513,7 @@ namespace Vocaluxe.Screens
Lyrics[htLyrics(LyricSubTop)].Draw(-100);
Lyrics[htLyrics(LyricMainTop)].Draw(CGame.Beat);
for (int i = 0; i < CGame.NumPlayer; i++)
{
@@ -480,7 +533,7 @@ namespace Vocaluxe.Screens
foreach (CSelectSlide slide in SelectSlides)
slide.Draw();
}
return true;
}
@@ -491,6 +544,11 @@ namespace Vocaluxe.Screens
CloseSong();
}
public override void ApplyVolume()
{
CSound.SetStreamVolumeMax(_CurrentStream, CConfig.GameMusicVolume);
}
private void CloseSong()
{
CSound.FadeAndStop(_CurrentStream, 0f, 0.5f);
@@ -545,6 +603,7 @@ namespace Vocaluxe.Screens
Texts[htTexts(TextSongName)].Text = songname;
_CurrentStream = CSound.Load(song.GetMP3(), true);
CSound.SetStreamVolumeMax(_CurrentStream, CConfig.GameMusicVolume);
CSound.SetStreamVolume(_CurrentStream, _Volume);
CSound.SetPosition(_CurrentStream, song.Start);
_CurrentTime = song.Start;
@@ -563,7 +622,7 @@ namespace Vocaluxe.Screens
CGame.ResetPlayer();
CDraw.RemoveTexture(ref _CurrentVideoTexture);
if (song.VideoFileName != String.Empty)
{
_CurrentVideo = CVideo.VdLoad(Path.Combine(song.Folder, song.VideoFileName));
@@ -624,7 +683,7 @@ namespace Vocaluxe.Screens
CTheme.GetPlayerColor(p + 1),
p);
}
/*
case 4:
NoteLines[0] = SingNotes[htSingNotes(SingBars)].AddPlayer(new SRectF(35f, 100f, 590f, 200f, -0.5f), CTheme.ThemeColors.Player[0]);
@@ -633,7 +692,7 @@ namespace Vocaluxe.Screens
NoteLines[3] = SingNotes[htSingNotes(SingBars)].AddPlayer(new SRectF(640f, 350f, 590f, 200f, -0.5f), CTheme.ThemeColors.Player[3]);
break;
*/
_TimerSongText.Stop();
_TimerSongText.Reset();
@@ -655,6 +714,8 @@ namespace Vocaluxe.Screens
PrepareTimeLine();
CSound.Play(_CurrentStream);
CSound.RecordStart();
if(_Webcam)
CWebcam.Start();
}
private void Stop()
@@ -665,6 +726,8 @@ namespace Vocaluxe.Screens
CGraphics.FadeTo(EScreens.ScreenScore);
_FadeOut = true;
if (_Webcam)
CWebcam.Close();
}
private void UpdateLyrics()
@@ -778,6 +841,7 @@ namespace Vocaluxe.Screens
Buttons[htButtons(ButtonContinue)].Visible = false;
Buttons[htButtons(ButtonSkip)].Visible = false;
CSound.Play(_CurrentStream);
CWebcam.Start();
}
}
@@ -807,7 +871,7 @@ namespace Vocaluxe.Screens
{
StaticScores = new string[CSettings.MaxNumPlayer, CSettings.MaxNumPlayer];
StaticAvatars = new string[CSettings.MaxNumPlayer, CSettings.MaxNumPlayer];
for (int numplayer = 0; numplayer < CSettings.MaxNumPlayer; numplayer++)
{
for (int player = 0; player < CSettings.MaxNumPlayer; player++)
@@ -833,7 +897,7 @@ namespace Vocaluxe.Screens
Statics[htStatics(StaticLyricHelperTop)].Visible = false;
Lyrics[htLyrics(LyricMainDuet)].Visible = false;
Lyrics[htLyrics(LyricSubDuet)].Visible = false;
Statics[htStatics(StaticSongText)].Visible = false;
Texts[htTexts(TextSongName)].Visible = false;
Texts[htTexts(TextDuetName1)].Visible = false;
@@ -849,7 +913,7 @@ namespace Vocaluxe.Screens
Texts[htTexts(TextNames[player, numplayer])].Visible = ((numplayer + 1 == CGame.NumPlayer)
&& (CConfig.PlayerInfo == EPlayerInfo.TR_CONFIG_PLAYERINFO_BOTH || CConfig.PlayerInfo == EPlayerInfo.TR_CONFIG_PLAYERINFO_NAME));
Statics[htStatics(StaticScores[player, numplayer])].Visible = (numplayer + 1 == CGame.NumPlayer);
Statics[htStatics(StaticAvatars[player, numplayer])].Visible = ((numplayer + 1 == CGame.NumPlayer)
Statics[htStatics(StaticAvatars[player, numplayer])].Visible = ((numplayer + 1 == CGame.NumPlayer)
&& (CConfig.PlayerInfo == EPlayerInfo.TR_CONFIG_PLAYERINFO_BOTH || CConfig.PlayerInfo == EPlayerInfo.TR_CONFIG_PLAYERINFO_AVATAR));
}
}
@@ -941,7 +1005,7 @@ namespace Vocaluxe.Screens
time = totaltime;
SRectF Rect = Statics[htStatics(StaticLyricHelperDuet)].Rect;
SColorF Color = new SColorF(
Statics[htStatics(StaticLyricHelperDuet)].Color.R,
Statics[htStatics(StaticLyricHelperDuet)].Color.G,
@@ -1001,7 +1065,7 @@ namespace Vocaluxe.Screens
// default values
Alpha[i * 2] = 1f;
Alpha[i * 2 + 1] = 1f;
Alpha[i * 2 + 1] = 1f;
// main line alpha
if (CurrentLine == 0 && CurrentTime < CGame.GetTimeFromBeats(line[CurrentLine].FirstNoteBeat, Song.BPM))
@@ -1033,15 +1097,15 @@ namespace Vocaluxe.Screens
float next = CGame.GetTimeFromBeats(line[CurrentLine + 1].FirstNoteBeat, Song.BPM) - CurrentTime;
if (last < next)
{
{
// fade out
Alpha[i * 2] = 1f - last / rt;
}
}
else
{
{
// fade in if it is time for
if (next > dt)
Alpha[i * 2] = 1f - (next - dt) / rt;
if (next > dt)
Alpha[i * 2] = 1f - (next - dt) / rt;
}
}
}
@@ -1056,9 +1120,9 @@ namespace Vocaluxe.Screens
// sub
if (CurrentLineSub < line.Length - 2)
{
float diff = 0f;
float diff = 0f;
diff = CGame.GetTimeFromBeats(line[CurrentLineSub + 1].FirstNoteBeat, Song.BPM) - CurrentTime;
if (diff > dt)
{
Alpha[i * 2 + 1] = 1f - (diff - dt) / rt;
@@ -1199,7 +1263,7 @@ namespace Vocaluxe.Screens
float CurrentTime = _CurrentTime - song.Start;
if (TotalTime <= 0f)
return;
return;
switch (CConfig.TimerMode)
{
@@ -1282,15 +1346,15 @@ namespace Vocaluxe.Screens
CLines[] Lines = new CLines[song.Notes.Lines.Length];
Lines = song.Notes.Lines;
for (int i = 0; i < Lines.Length; i++)
{
{
CLine[] Line = Lines[i].Line;
for(int j = 0; j<Line.Length; j++){
for (int j = 0; j < Line.Length; j++)
{
if (Line[j].VisibleInTimeLine)
{
TimeRect trect = new TimeRect();
trect.startBeat = Line[j].FirstNoteBeat;
trect.endBeat = Line[j].EndBeat;
trect.rect = new CStatic(new STexture(-1),
new SColorF(1f, 1f, 1f, 1f),
new SRectF(stat.Rect.X + stat.Rect.W * ((CGame.GetTimeFromBeats(trect.startBeat, song.BPM) + song.Gap - song.Start) / TotalTime),
+52 -16
View File
@@ -106,6 +106,10 @@ namespace Vocaluxe.Screens
DragAndDropCover = new CStatic();
Playlists[htPlaylists(Playlist)].Init();
_AvailableGameModes.Clear();
ApplyVolume();
}
public override bool HandleInput(KeyEvent KeyEvent)
@@ -273,6 +277,7 @@ namespace Vocaluxe.Screens
}
else if (Buttons[htButtons(ButtonOptionsPlaylist)].Selected)
{
ToggleSongOptions(ESongOptionsView.None);
OpenAndAddPlaylistAction();
}
else if (Buttons[htButtons(ButtonOptionsRandom)].Selected)
@@ -299,6 +304,7 @@ namespace Vocaluxe.Screens
}
else if (Buttons[htButtons(ButtonOptionsOpenPlaylist)].Selected)
{
ToggleSongOptions(ESongOptionsView.None);
OpenPlaylistAction();
}
break;
@@ -311,6 +317,23 @@ namespace Vocaluxe.Screens
}
}
if (KeyEvent.ModSHIFT && (KeyEvent.Key == Keys.Add || KeyEvent.Key == Keys.PageUp))
{
CConfig.PreviewMusicVolume = CConfig.PreviewMusicVolume + 5;
if (CConfig.PreviewMusicVolume > 100)
CConfig.PreviewMusicVolume = 100;
CConfig.SaveConfig();
ApplyVolume();
}
else if (KeyEvent.ModSHIFT && (KeyEvent.Key == Keys.Subtract || KeyEvent.Key == Keys.PageDown))
{
CConfig.PreviewMusicVolume = CConfig.PreviewMusicVolume - 5;
if (CConfig.PreviewMusicVolume < 0)
CConfig.PreviewMusicVolume = 0;
CConfig.SaveConfig();
ApplyVolume();
}
return true;
}
@@ -344,7 +367,11 @@ namespace Vocaluxe.Screens
if (Playlists[htPlaylists(Playlist)].Visible && _PlaylistActive)
{
if (Playlists[htPlaylists(Playlist)].HandleMouse(MouseEvent))
{
if (CPlaylists.NumPlaylists != SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistOpen)].NumValues)
UpdatePlaylistNames();
return true;
}
}
@@ -416,6 +443,7 @@ namespace Vocaluxe.Screens
if (Buttons[htButtons(ButtonOptionsPlaylist)].Selected)
{
ToggleSongOptions(ESongOptionsView.None);
OpenAndAddPlaylistAction();
return true;
}
@@ -454,6 +482,7 @@ namespace Vocaluxe.Screens
if (Buttons[htButtons(ButtonOptionsOpenPlaylist)].Selected)
{
ToggleSongOptions(ESongOptionsView.None);
OpenPlaylistAction();
return true;
}
@@ -575,6 +604,11 @@ namespace Vocaluxe.Screens
SongMenus[htSongMenus(SongMenu)].OnHide();
}
public override void ApplyVolume()
{
SongMenus[htSongMenus(SongMenu)].ApplyVolume(CConfig.PreviewMusicVolume);
}
private void StartSong(int SongNr)
{
if ((CSongs.Category >= 0) && (SongNr >= 0))
@@ -874,15 +908,13 @@ namespace Vocaluxe.Screens
//Open playlist
OpenPlaylist(Playlists[htPlaylists(Playlist)].ActivePlaylistID);
Playlists[htPlaylists(Playlist)].ScrollToBottom();
}
ToggleSongOptions(ESongOptionsView.None);
}
private void OpenAndAddPlaylistAction()
{
//Open a playlist and add song
if (Playlists[htPlaylists(Playlist)].ActivePlaylistID != (SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistAdd)].Selection - 1))
//Open an existing playlist and add song
if (Playlists[htPlaylists(Playlist)].ActivePlaylistID != (SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistAdd)].Selection - 1) && (SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistAdd)].Selection - 1) != -1)
{
//Check selected game-mode
EGameMode gm;
@@ -895,18 +927,19 @@ namespace Vocaluxe.Screens
gm = GameModes.EGameMode.TR_GAMEMODE_NORMAL;
//Check if Playlist really exists
if (SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistAdd)].Selection - 1 < 0)
Playlists[htPlaylists(Playlist)].ActivePlaylistID = CPlaylists.NewPlaylist();
else
if (SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistAdd)].Selection - 1 >= 0)
{
Playlists[htPlaylists(Playlist)].ActivePlaylistID = SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistAdd)].Selection - 1;
//Add song to playlist
CPlaylists.Playlists[Playlists[htPlaylists(Playlist)].ActivePlaylistID].AddSong(CSongs.VisibleSongs[SongMenus[htSongMenus(SongMenu)].GetSelectedSong()].ID, gm);
//Open playlist
OpenPlaylist(Playlists[htPlaylists(Playlist)].ActivePlaylistID);
SetSelectSlidePlaylistToCurrentPlaylist();
//Add song to playlist
CPlaylists.Playlists[Playlists[htPlaylists(Playlist)].ActivePlaylistID].AddSong(CSongs.VisibleSongs[SongMenus[htSongMenus(SongMenu)].GetSelectedSong()].ID, gm);
//Open playlist
OpenPlaylist(Playlists[htPlaylists(Playlist)].ActivePlaylistID);
SetSelectSlidePlaylistToCurrentPlaylist();
Playlists[htPlaylists(Playlist)].ScrollToBottom();
}
}
//Create a new playlist and add song
else if ((SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistAdd)].Selection - 1) == -1)
@@ -932,6 +965,7 @@ namespace Vocaluxe.Screens
//Add new playlist to select-slide
SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistAdd)].AddValue(CPlaylists.Playlists[Playlists[htPlaylists(Playlist)].ActivePlaylistID].PlaylistName);
SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistOpen)].AddValue(CPlaylists.Playlists[Playlists[htPlaylists(Playlist)].ActivePlaylistID].PlaylistName);
SetSelectSlidePlaylistToCurrentPlaylist();
@@ -952,12 +986,14 @@ namespace Vocaluxe.Screens
Playlists[htPlaylists(Playlist)].UpdatePlaylist();
Playlists[htPlaylists(Playlist)].ScrollToBottom();
}
ToggleSongOptions(ESongOptionsView.Song);
}
private void SetSelectSlidePlaylistToCurrentPlaylist()
{
SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistAdd)].Selection = Playlists[htPlaylists(Playlist)].ActivePlaylistID + 1;
if (Playlists[htPlaylists(Playlist)].ActivePlaylistID > -1)
SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistAdd)].Selection = Playlists[htPlaylists(Playlist)].ActivePlaylistID + 1;
else
SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistAdd)].Selection = 0;
}
}
}
+15
View File
@@ -29,6 +29,7 @@
<BootstrapperEnabled>true</BootstrapperEnabled>
<StartupObject>Vocaluxe.MainProgram</StartupObject>
<ApplicationIcon>Vocaluxe.ico</ApplicationIcon>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugWin|x86' ">
<PlatformTarget>x86</PlatformTarget>
@@ -140,6 +141,16 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Reference Include="AForge.Video, Version=2.2.4.0, Culture=neutral, PublicKeyToken=cbfb6e07d173c401, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Output\AForge.Video.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="AForge.Video.DirectShow, Version=2.2.4.1, Culture=neutral, PublicKeyToken=61ea4348d43881b7, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Output\AForge.Video.DirectShow.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Community.CsharpSqlite">
<HintPath>..\Output\Community.CsharpSqlite.dll</HintPath>
</Reference>
@@ -176,6 +187,7 @@
<Compile Include="Base\CSongs.cs" />
<Compile Include="Base\CTheme.cs" />
<Compile Include="Base\CVideo.cs" />
<Compile Include="Base\CWebcam.cs" />
<Compile Include="GameModes\CGameMode.cs" />
<Compile Include="GameModes\CGameModeNormal.cs" />
<Compile Include="GameModes\IGameMode.cs" />
@@ -211,6 +223,8 @@
<Compile Include="Lib\Video\CVideoDecoder.cs" />
<Compile Include="Lib\Video\CVideoDecoderFFmpeg.cs" />
<Compile Include="Lib\Video\IVideoDecoder.cs" />
<Compile Include="Lib\Webcam\CAForgeNet.cs" />
<Compile Include="Lib\Webcam\IWebcam.cs" />
<Compile Include="Menu\CBackground.cs" />
<Compile Include="Menu\CButton.cs" />
<Compile Include="Menu\CEqualizer.cs" />
@@ -239,6 +253,7 @@
<SubType>Form</SubType>
</Compile>
<Compile Include="Screens\CPopupScreenPlayerControl.cs" />
<Compile Include="Screens\CPopupScreenVolumeControl.cs" />
<Compile Include="Screens\CScreenCredits.cs" />
<Compile Include="Screens\CScreenHighscore.cs" />
<Compile Include="Screens\CScreenLoad.cs" />
@@ -0,0 +1,7 @@
ScreenProfiles
++++++++++
Version 2:
Add: <ButtonDiscardSnapshot>, <ButtonSaveSnapshot>, <ButtonWebcam>, <ButtonTakeSnapshot>
++++++++++
@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<PopupScreenVolumeControl>
<ScreenVersion>1</ScreenVersion>
<StaticBG>
<!--<Skin>: Texture name-->
<Skin>Menu</Skin>
<!--<X>, <Y>, <Z>, <W>, <H>: Static position, width and height-->
<X>1065</X>
<Y>672</Y>
<Z>-2,00</Z>
<W>225</W>
<H>48</H>
<!--<Color>: Static color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>StaticColor</Color>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
</StaticBG>
<Text1>
<!--<X>, <Y>: Text position-->
<X>1067</X>
<Y>680</Y>
<!--<Z>: Text position-->
<Z>-2,00</Z>
<!--<H>: Text height-->
<H>32</H>
<!--<MaxW>: Maximum text width (if exists)-->
<MaxW>80</MaxW>
<!--<Color>: Text color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>StaticColor</Color>
<!--<SColor>: Selected Text color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>TextSColor</SColor>
<!--<Align>: Text align horizontal: Left, Center, Right-->
<Align>Left</Align>
<!--<HAlign>: Text align vertical (on downsizing): Top, Center, Bottom-->
<HAlign>Center</HAlign>
<!--<Style>: Text style: Normal, Italic, Bold, BoldItalic-->
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENPVOLUMECONTROL_VOLUME</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
</Text1>
<SelectSlideVolume>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<SkinArrowLeft>: Texture name of left arrow-->
<SkinArrowLeft>Minus</SkinArrowLeft>
<!--<SkinArrowRight>: Texture name of right arrow-->
<SkinArrowRight>Plus</SkinArrowRight>
<!--<SkinSelected>: Texture name for selected SelectSlide-->
<SkinSelected>Invisible</SkinSelected>
<!--<SkinArrowLeftSelected>: Texture name of selected left arrow-->
<SkinArrowLeftSelected>Minus</SkinArrowLeftSelected>
<!--<SkinArrowRightSelected>: Texture name of selected right arrow-->
<SkinArrowRightSelected>Plus</SkinArrowRightSelected>
<!--<SkinHighlighted>: Texture name for highlighted SelectSlide-->
<SkinHighlighted>Invisible</SkinHighlighted>
<!--<X>, <Y>, <Z>, <W>, <H>: SelectSlide position, width and height-->
<X>1090</X>
<Y>680</Y>
<Z>-2,00</Z>
<W>200</W>
<H>50</H>
<!--<ArrowLeftX>, <ArrowLeftY>, <ArrowLeftZ>, <ArrowLeftW>, <ArrowLeftH>: Left arrow position, width and height-->
<ArrowLeftX>1195</ArrowLeftX>
<ArrowLeftY>682</ArrowLeftY>
<ArrowLeftZ>-2,00</ArrowLeftZ>
<ArrowLeftW>30</ArrowLeftW>
<ArrowLeftH>30</ArrowLeftH>
<!--<ArrowRightX>, <ArrowRightY>, <ArrowRightZ>, <ArrowRightW>, <ArrowRightH>: Right arrow position, width and height-->
<ArrowRightX>1240</ArrowRightX>
<ArrowRightY>682</ArrowRightY>
<ArrowRightZ>-2,00</ArrowRightZ>
<ArrowRightW>30</ArrowRightW>
<ArrowRightH>30</ArrowRightH>
<!--<Color>: SelectSlide color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>SelectSlideColor</Color>
<!--<SColor>: Selected SelectSlide color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>SelectSlideSColor</SColor>
<!--<HColor>: Highlighted SelectSlide color from ColorScheme (high priority)-->
<!--or <HR>, <HG>, <HB>, <HA> (lower priority)-->
<HColor>SelectSlideHColor</HColor>
<!--<ArrowColor>: Arrow color from ColorScheme (high priority)-->
<!--or <ArrowR>, <ArrowG>, <ArrowB>, <ArrowA> (lower priority)-->
<ArrowColor>ArrowColor</ArrowColor>
<!--<ArrowSColor>: Selected arrow color from ColorScheme (high priority)-->
<!--or <ArrowSR>, <ArrowSG>, <ArrowSB>, <ArrowSA> (lower priority)-->
<ArrowSColor>ArrowSColor</ArrowSColor>
<!--<TextColor>: Text color from ColorScheme (high priority)-->
<!--or <TextR>, <TextG>, <TextB>, <TextA> (lower priority)-->
<TextColor>TextColor</TextColor>
<!--<TextSColor>: Selected text color from ColorScheme (high priority)-->
<!--or <TextSR>, <TextSG>, <TextSB>, <TextSA> (lower priority)-->
<TextSColor>TextSColor</TextSColor>
<!--<TextH>: Text height-->
<TextH>32,00</TextH>
<!--<TextMaxW>: Maximum text width (if exists)-->
<TextMaxW>500,00</TextMaxW>
<!--<TextFont>: Text font name-->
<TextFont>Outline</TextFont>
<!--<TextStyle>: Text style: Normal, Italic, Bold, BoldItalic-->
<TextStyle>Bold</TextStyle>
<TextRelativeX>-15,0</TextRelativeX>
<TextRelativeY>-8,0</TextRelativeY>
<!--<NumVisible>: Number of visible elements in the slide-->
<NumVisible>1</NumVisible>
</SelectSlideVolume>
</PopupScreenVolumeControl>
</root>