commit
ce953d4ad4
29 files changed
+1885
-148
No files matched your search
+2
-1
@@ -109,7 +109,8 @@ Vocaluxe.exe -ConfigFile MyConfig.xml -ScoreFile C:\Vocaluxe\Highscores\MyHighsc
|
||||
Songscreen
|
||||
[CTRL] + [R] to select a random song
|
||||
[F3] to open/close the song search menu
|
||||
[A] to sing all songs from a category
|
||||
[A] to sing all songs
|
||||
[SHIFT] + [A] to sing all songs from a category
|
||||
|
||||
|
||||
=================================
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<ScreenNames>
|
||||
<ScreenVersion>2</ScreenVersion>
|
||||
<ScreenVersion>3</ScreenVersion>
|
||||
<Background1>
|
||||
<!--<Type>: Background type: None, Color, Texture, Video-->
|
||||
<Type>Video</Type>
|
||||
@@ -28,7 +28,7 @@
|
||||
<!--<Reflection> If exists:-->
|
||||
<!-- <Space>: Reflection Space-->
|
||||
<!-- <Height>: Reflection Height-->
|
||||
</Static1>
|
||||
</Static1>
|
||||
<StaticPlayer1>
|
||||
<!--<Skin>: Texture name-->
|
||||
<Skin>PlayerSelector</Skin>
|
||||
@@ -695,6 +695,396 @@
|
||||
<!--<NumVisible>: Number of visible elements in the slide-->
|
||||
<NumVisible>6</NumVisible>
|
||||
</SelectSlidePlayerNumber>
|
||||
<SelectSlideDuetPlayer1>
|
||||
<!--<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>Button</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>Button</SkinHighlighted>
|
||||
<!--<X>, <Y>, <Z>, <W>, <H>: SelectSlide position, width and height-->
|
||||
<X>41</X>
|
||||
<Y>105</Y>
|
||||
<Z>-4,00</Z>
|
||||
<W>88</W>
|
||||
<H>20</H>
|
||||
<!--<ArrowLeftX>, <ArrowLeftY>, <ArrowLeftZ>, <ArrowLeftW>, <ArrowLeftH>: Left arrow position, width and height-->
|
||||
<ArrowLeftX>20</ArrowLeftX>
|
||||
<ArrowLeftY>105</ArrowLeftY>
|
||||
<ArrowLeftZ>-4,01</ArrowLeftZ>
|
||||
<ArrowLeftW>20</ArrowLeftW>
|
||||
<ArrowLeftH>20</ArrowLeftH>
|
||||
<!--<ArrowRightX>, <ArrowRightY>, <ArrowRightZ>, <ArrowRightW>, <ArrowRightH>: Right arrow position, width and height-->
|
||||
<ArrowRightX>20</ArrowRightX>
|
||||
<ArrowRightY>105</ArrowRightY>
|
||||
<ArrowRightZ>-4,01</ArrowRightZ>
|
||||
<ArrowRightW>20</ArrowRightW>
|
||||
<ArrowRightH>20</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>20,00</TextH>
|
||||
<!--<TextMaxW>: Maximum text width (if exists)-->
|
||||
<TextMaxW>86,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>1</NumVisible>
|
||||
</SelectSlideDuetPlayer1>
|
||||
<SelectSlideDuetPlayer2>
|
||||
<!--<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>Button</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>Button</SkinHighlighted>
|
||||
<!--<X>, <Y>, <Z>, <W>, <H>: SelectSlide position, width and height-->
|
||||
<X>41</X>
|
||||
<Y>260</Y>
|
||||
<Z>-4,00</Z>
|
||||
<W>88</W>
|
||||
<H>20</H>
|
||||
<!--<ArrowLeftX>, <ArrowLeftY>, <ArrowLeftZ>, <ArrowLeftW>, <ArrowLeftH>: Left arrow position, width and height-->
|
||||
<ArrowLeftX>20</ArrowLeftX>
|
||||
<ArrowLeftY>260</ArrowLeftY>
|
||||
<ArrowLeftZ>-4,01</ArrowLeftZ>
|
||||
<ArrowLeftW>20</ArrowLeftW>
|
||||
<ArrowLeftH>20</ArrowLeftH>
|
||||
<!--<ArrowRightX>, <ArrowRightY>, <ArrowRightZ>, <ArrowRightW>, <ArrowRightH>: Right arrow position, width and height-->
|
||||
<ArrowRightX>20</ArrowRightX>
|
||||
<ArrowRightY>260</ArrowRightY>
|
||||
<ArrowRightZ>-4,01</ArrowRightZ>
|
||||
<ArrowRightW>20</ArrowRightW>
|
||||
<ArrowRightH>20</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>20,00</TextH>
|
||||
<!--<TextMaxW>: Maximum text width (if exists)-->
|
||||
<TextMaxW>86,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>1</NumVisible>
|
||||
</SelectSlideDuetPlayer2>
|
||||
<SelectSlideDuetPlayer3>
|
||||
<!--<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>Button</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>Button</SkinHighlighted>
|
||||
<!--<X>, <Y>, <Z>, <W>, <H>: SelectSlide position, width and height-->
|
||||
<X>41</X>
|
||||
<Y>415</Y>
|
||||
<Z>-4,00</Z>
|
||||
<W>88</W>
|
||||
<H>20</H>
|
||||
<!--<ArrowLeftX>, <ArrowLeftY>, <ArrowLeftZ>, <ArrowLeftW>, <ArrowLeftH>: Left arrow position, width and height-->
|
||||
<ArrowLeftX>20</ArrowLeftX>
|
||||
<ArrowLeftY>415</ArrowLeftY>
|
||||
<ArrowLeftZ>-4,01</ArrowLeftZ>
|
||||
<ArrowLeftW>20</ArrowLeftW>
|
||||
<ArrowLeftH>20</ArrowLeftH>
|
||||
<!--<ArrowRightX>, <ArrowRightY>, <ArrowRightZ>, <ArrowRightW>, <ArrowRightH>: Right arrow position, width and height-->
|
||||
<ArrowRightX>20</ArrowRightX>
|
||||
<ArrowRightY>415</ArrowRightY>
|
||||
<ArrowRightZ>-4,01</ArrowRightZ>
|
||||
<ArrowRightW>20</ArrowRightW>
|
||||
<ArrowRightH>20</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>20,00</TextH>
|
||||
<!--<TextMaxW>: Maximum text width (if exists)-->
|
||||
<TextMaxW>86,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>1</NumVisible>
|
||||
</SelectSlideDuetPlayer3>
|
||||
<SelectSlideDuetPlayer4>
|
||||
<!--<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>Button</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>Button</SkinHighlighted>
|
||||
<!--<X>, <Y>, <Z>, <W>, <H>: SelectSlide position, width and height-->
|
||||
<X>1152</X>
|
||||
<Y>105</Y>
|
||||
<Z>-4,00</Z>
|
||||
<W>88</W>
|
||||
<H>20</H>
|
||||
<!--<ArrowLeftX>, <ArrowLeftY>, <ArrowLeftZ>, <ArrowLeftW>, <ArrowLeftH>: Left arrow position, width and height-->
|
||||
<ArrowLeftX>1240</ArrowLeftX>
|
||||
<ArrowLeftY>105</ArrowLeftY>
|
||||
<ArrowLeftZ>-4,01</ArrowLeftZ>
|
||||
<ArrowLeftW>20</ArrowLeftW>
|
||||
<ArrowLeftH>20</ArrowLeftH>
|
||||
<!--<ArrowRightX>, <ArrowRightY>, <ArrowRightZ>, <ArrowRightW>, <ArrowRightH>: Right arrow position, width and height-->
|
||||
<ArrowRightX>1240</ArrowRightX>
|
||||
<ArrowRightY>105</ArrowRightY>
|
||||
<ArrowRightZ>-4,01</ArrowRightZ>
|
||||
<ArrowRightW>20</ArrowRightW>
|
||||
<ArrowRightH>20</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>20,00</TextH>
|
||||
<!--<TextMaxW>: Maximum text width (if exists)-->
|
||||
<TextMaxW>86,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>1</NumVisible>
|
||||
</SelectSlideDuetPlayer4>
|
||||
<SelectSlideDuetPlayer5>
|
||||
<!--<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>Button</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>Button</SkinHighlighted>
|
||||
<!--<X>, <Y>, <Z>, <W>, <H>: SelectSlide position, width and height-->
|
||||
<X>1152</X>
|
||||
<Y>260</Y>
|
||||
<Z>-4,00</Z>
|
||||
<W>88</W>
|
||||
<H>20</H>
|
||||
<!--<ArrowLeftX>, <ArrowLeftY>, <ArrowLeftZ>, <ArrowLeftW>, <ArrowLeftH>: Left arrow position, width and height-->
|
||||
<ArrowLeftX>1240</ArrowLeftX>
|
||||
<ArrowLeftY>260</ArrowLeftY>
|
||||
<ArrowLeftZ>-4,01</ArrowLeftZ>
|
||||
<ArrowLeftW>20</ArrowLeftW>
|
||||
<ArrowLeftH>20</ArrowLeftH>
|
||||
<!--<ArrowRightX>, <ArrowRightY>, <ArrowRightZ>, <ArrowRightW>, <ArrowRightH>: Right arrow position, width and height-->
|
||||
<ArrowRightX>1240</ArrowRightX>
|
||||
<ArrowRightY>260</ArrowRightY>
|
||||
<ArrowRightZ>-4,01</ArrowRightZ>
|
||||
<ArrowRightW>20</ArrowRightW>
|
||||
<ArrowRightH>20</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>20,00</TextH>
|
||||
<!--<TextMaxW>: Maximum text width (if exists)-->
|
||||
<TextMaxW>86,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>1</NumVisible>
|
||||
</SelectSlideDuetPlayer5>
|
||||
<SelectSlideDuetPlayer6>
|
||||
<!--<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>Button</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>Button</SkinHighlighted>
|
||||
<!--<X>, <Y>, <Z>, <W>, <H>: SelectSlide position, width and height-->
|
||||
<X>1152</X>
|
||||
<Y>415</Y>
|
||||
<Z>-4,00</Z>
|
||||
<W>88</W>
|
||||
<H>20</H>
|
||||
<!--<ArrowLeftX>, <ArrowLeftY>, <ArrowLeftZ>, <ArrowLeftW>, <ArrowLeftH>: Left arrow position, width and height-->
|
||||
<ArrowLeftX>1240</ArrowLeftX>
|
||||
<ArrowLeftY>415</ArrowLeftY>
|
||||
<ArrowLeftZ>-4,01</ArrowLeftZ>
|
||||
<ArrowLeftW>20</ArrowLeftW>
|
||||
<ArrowLeftH>20</ArrowLeftH>
|
||||
<!--<ArrowRightX>, <ArrowRightY>, <ArrowRightZ>, <ArrowRightW>, <ArrowRightH>: Right arrow position, width and height-->
|
||||
<ArrowRightX>1240</ArrowRightX>
|
||||
<ArrowRightY>415</ArrowRightY>
|
||||
<ArrowRightZ>-4,01</ArrowRightZ>
|
||||
<ArrowRightW>20</ArrowRightW>
|
||||
<ArrowRightH>20</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>20,00</TextH>
|
||||
<!--<TextMaxW>: Maximum text width (if exists)-->
|
||||
<TextMaxW>86,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>1</NumVisible>
|
||||
</SelectSlideDuetPlayer6>
|
||||
<NameSelection>
|
||||
<!--<X>, <Y>, <Z>, <W>, <H>: NameSelection position, width and height-->
|
||||
<X>172</X>
|
||||
@@ -738,5 +1128,167 @@
|
||||
</Name>
|
||||
</Tiles>
|
||||
</NameSelection>
|
||||
<EqualizerPlayer1>
|
||||
<!--<Skin>: Texture name-->
|
||||
<Skin>Invisible</Skin>
|
||||
<!--<X>, <Y>, <Z>, <W>, <H>: Equalizer position, width and height-->
|
||||
<X>21</X>
|
||||
<Y>152</Y>
|
||||
<Z>-4,00</Z>
|
||||
<W>108</W>
|
||||
<H>60</H>
|
||||
<!--<NumBars>: Number of equalizer-elements.-->
|
||||
<NumBars>8</NumBars>
|
||||
<!--<Space>: Space between equalizer-elements.-->
|
||||
<Space>2,00</Space>
|
||||
<!--<Style>: Style of equalizer-elements: Collumns-->
|
||||
<Style>Collumns</Style>
|
||||
<!--<Color>: Equalizer color from ColorScheme (high priority)-->
|
||||
<!--or <R>, <G>, <B>, <A> (lower priority)-->
|
||||
<Color>Player1Dim2</Color>
|
||||
<!--<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)-->
|
||||
<!--or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)-->
|
||||
<MaxColor>Player1Dim</MaxColor>
|
||||
<!--<DrawNegative>: Draw negative values: TR_CONFIG_OFF, TR_CONFIG_ON -->
|
||||
<DrawNegative>TR_CONFIG_OFF</DrawNegative>
|
||||
<!--<Reflection> If exists:-->
|
||||
<!-- <Space>: Reflection Space-->
|
||||
<!-- <Height>: Reflection Height-->
|
||||
</EqualizerPlayer1>
|
||||
<EqualizerPlayer2>
|
||||
<!--<Skin>: Texture name-->
|
||||
<Skin>Invisible</Skin>
|
||||
<!--<X>, <Y>, <Z>, <W>, <H>: Equalizer position, width and height-->
|
||||
<X>21</X>
|
||||
<Y>307</Y>
|
||||
<Z>-4,00</Z>
|
||||
<W>108</W>
|
||||
<H>60</H>
|
||||
<!--<NumBars>: Number of equalizer-elements.-->
|
||||
<NumBars>8</NumBars>
|
||||
<!--<Space>: Space between equalizer-elements.-->
|
||||
<Space>2,00</Space>
|
||||
<!--<Style>: Style of equalizer-elements: Collumns-->
|
||||
<Style>Collumns</Style>
|
||||
<!--<Color>: Equalizer color from ColorScheme (high priority)-->
|
||||
<!--or <R>, <G>, <B>, <A> (lower priority)-->
|
||||
<Color>Player2Dim2</Color>
|
||||
<!--<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)-->
|
||||
<!--or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)-->
|
||||
<MaxColor>Player2Dim</MaxColor>
|
||||
<!--<DrawNegative>: Draw negative values: TR_CONFIG_OFF, TR_CONFIG_ON -->
|
||||
<DrawNegative>TR_CONFIG_OFF</DrawNegative>
|
||||
<!--<Reflection> If exists:-->
|
||||
<!-- <Space>: Reflection Space-->
|
||||
<!-- <Height>: Reflection Height-->
|
||||
</EqualizerPlayer2>
|
||||
<EqualizerPlayer3>
|
||||
<!--<Skin>: Texture name-->
|
||||
<Skin>Invisible</Skin>
|
||||
<!--<X>, <Y>, <Z>, <W>, <H>: Equalizer position, width and height-->
|
||||
<X>21</X>
|
||||
<Y>467</Y>
|
||||
<Z>-4,00</Z>
|
||||
<W>108</W>
|
||||
<H>60</H>
|
||||
<!--<NumBars>: Number of equalizer-elements.-->
|
||||
<NumBars>8</NumBars>
|
||||
<!--<Space>: Space between equalizer-elements.-->
|
||||
<Space>2,00</Space>
|
||||
<!--<Style>: Style of equalizer-elements: Collumns-->
|
||||
<Style>Collumns</Style>
|
||||
<!--<Color>: Equalizer color from ColorScheme (high priority)-->
|
||||
<!--or <R>, <G>, <B>, <A> (lower priority)-->
|
||||
<Color>Player3Dim2</Color>
|
||||
<!--<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)-->
|
||||
<!--or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)-->
|
||||
<MaxColor>Player3Dim</MaxColor>
|
||||
<!--<DrawNegative>: Draw negative values: TR_CONFIG_OFF, TR_CONFIG_ON -->
|
||||
<DrawNegative>TR_CONFIG_OFF</DrawNegative>
|
||||
<!--<Reflection> If exists:-->
|
||||
<!-- <Space>: Reflection Space-->
|
||||
<!-- <Height>: Reflection Height-->
|
||||
</EqualizerPlayer3>
|
||||
<EqualizerPlayer4>
|
||||
<!--<Skin>: Texture name-->
|
||||
<Skin>Invisible</Skin>
|
||||
<!--<X>, <Y>, <Z>, <W>, <H>: Equalizer position, width and height-->
|
||||
<X>1153</X>
|
||||
<Y>152</Y>
|
||||
<Z>-4,00</Z>
|
||||
<W>108</W>
|
||||
<H>60</H>
|
||||
<!--<NumBars>: Number of equalizer-elements.-->
|
||||
<NumBars>8</NumBars>
|
||||
<!--<Space>: Space between equalizer-elements.-->
|
||||
<Space>2,00</Space>
|
||||
<!--<Style>: Style of equalizer-elements: Collumns-->
|
||||
<Style>Collumns</Style>
|
||||
<!--<Color>: Equalizer color from ColorScheme (high priority)-->
|
||||
<!--or <R>, <G>, <B>, <A> (lower priority)-->
|
||||
<Color>Player4Dim2</Color>
|
||||
<!--<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)-->
|
||||
<!--or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)-->
|
||||
<MaxColor>Player4Dim</MaxColor>
|
||||
<!--<DrawNegative>: Draw negative values: TR_CONFIG_OFF, TR_CONFIG_ON -->
|
||||
<DrawNegative>TR_CONFIG_OFF</DrawNegative>
|
||||
<!--<Reflection> If exists:-->
|
||||
<!-- <Space>: Reflection Space-->
|
||||
<!-- <Height>: Reflection Height-->
|
||||
</EqualizerPlayer4>
|
||||
<EqualizerPlayer5>
|
||||
<!--<Skin>: Texture name-->
|
||||
<Skin>Invisible</Skin>
|
||||
<!--<X>, <Y>, <Z>, <W>, <H>: Equalizer position, width and height-->
|
||||
<X>1153</X>
|
||||
<Y>307</Y>
|
||||
<Z>-4,00</Z>
|
||||
<W>108</W>
|
||||
<H>60</H>
|
||||
<!--<NumBars>: Number of equalizer-elements.-->
|
||||
<NumBars>8</NumBars>
|
||||
<!--<Space>: Space between equalizer-elements.-->
|
||||
<Space>2,00</Space>
|
||||
<!--<Style>: Style of equalizer-elements: Collumns-->
|
||||
<Style>Collumns</Style>
|
||||
<!--<Color>: Equalizer color from ColorScheme (high priority)-->
|
||||
<!--or <R>, <G>, <B>, <A> (lower priority)-->
|
||||
<Color>Player5Dim2</Color>
|
||||
<!--<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)-->
|
||||
<!--or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)-->
|
||||
<MaxColor>Player5Dim</MaxColor>
|
||||
<!--<DrawNegative>: Draw negative values: TR_CONFIG_OFF, TR_CONFIG_ON -->
|
||||
<DrawNegative>TR_CONFIG_OFF</DrawNegative>
|
||||
<!--<Reflection> If exists:-->
|
||||
<!-- <Space>: Reflection Space-->
|
||||
<!-- <Height>: Reflection Height-->
|
||||
</EqualizerPlayer5>
|
||||
<EqualizerPlayer6>
|
||||
<!--<Skin>: Texture name-->
|
||||
<Skin>Invisible</Skin>
|
||||
<!--<X>, <Y>, <Z>, <W>, <H>: Equalizer position, width and height-->
|
||||
<X>1153</X>
|
||||
<Y>467</Y>
|
||||
<Z>-4,00</Z>
|
||||
<W>108</W>
|
||||
<H>60</H>
|
||||
<!--<NumBars>: Number of equalizer-elements.-->
|
||||
<NumBars>8</NumBars>
|
||||
<!--<Style>: Style of equalizer-elements: Collumns-->
|
||||
<Space>2,00</Space>
|
||||
<!--<Style>: Style of equalizer-elements-->
|
||||
<Style>Collumns</Style>
|
||||
<!--<Color>: Equalizer color from ColorScheme (high priority)-->
|
||||
<!--or <R>, <G>, <B>, <A> (lower priority)-->
|
||||
<Color>Player6Dim2</Color>
|
||||
<!--<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)-->
|
||||
<!--or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)-->
|
||||
<MaxColor>Player6Dim</MaxColor>
|
||||
<!--<DrawNegative>: Draw negative values: TR_CONFIG_OFF, TR_CONFIG_ON -->
|
||||
<DrawNegative>TR_CONFIG_OFF</DrawNegative>
|
||||
<!--<Reflection> If exists:-->
|
||||
<!-- <Space>: Reflection Space-->
|
||||
<!-- <Height>: Reflection Height-->
|
||||
</EqualizerPlayer6>
|
||||
</ScreenNames>
|
||||
</root>
|
||||
</root>
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<ScreenOptionsRecord>
|
||||
<ScreenVersion>1</ScreenVersion>
|
||||
<ScreenVersion>2</ScreenVersion>
|
||||
<Background1>
|
||||
<!--<Type>: Background type: None, Color, Texture, Video-->
|
||||
<Type>Video</Type>
|
||||
@@ -858,5 +858,66 @@
|
||||
<!--<NumVisible>: Number of visible elements in the slide-->
|
||||
<NumVisible>5</NumVisible>
|
||||
</SelectSlideDelay>
|
||||
<EqualizerChannel1>
|
||||
<!--<Skin>: Texture name-->
|
||||
<Skin>Invisible</Skin>
|
||||
<!--<X>, <Y>, <Z>, <W>, <H>: Equalizer position, width and height-->
|
||||
<X>50</X>
|
||||
<Y>400</Y>
|
||||
<W>230</W>
|
||||
<H>150</H>
|
||||
<Z>-1,00</Z>
|
||||
<!--<NumBars>: Number of equalizer-elements.-->
|
||||
<NumBars>10</NumBars>
|
||||
<Space>2,00</Space>
|
||||
<!--<Style>: Style of equalizer-elements: Collumns-->
|
||||
<Style>Collumns</Style>
|
||||
<!--<Color>: Equalizer color from ColorScheme (high priority)-->
|
||||
<!--or <R>, <G>, <B>, <A> (lower priority)-->
|
||||
<Color>ButtonColor</Color>
|
||||
<!--<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)-->
|
||||
<!--or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)-->
|
||||
<MaxColor>ButtonSColor</MaxColor>
|
||||
<!--<DrawNegative>: Draw negative values: TR_CONFIG_OFF, TR_CONFIG_ON -->
|
||||
<DrawNegative>TR_CONFIG_OFF</DrawNegative>
|
||||
<!--<Reflection> If exists:-->
|
||||
<!-- <Space>: Reflection Space-->
|
||||
<!-- <Height>: Reflection Height-->
|
||||
<Reflection>
|
||||
<Space>10</Space>
|
||||
<Height>26</Height>
|
||||
</Reflection>
|
||||
</EqualizerChannel1>
|
||||
<EqualizerChannel2>
|
||||
<!--<Skin>: Texture name-->
|
||||
<Skin>Invisible</Skin>
|
||||
<!--<X>, <Y>, <Z>, <W>, <H>: Equalizer position, width and height-->
|
||||
<X>400</X>
|
||||
<Y>400</Y>
|
||||
<W>230</W>
|
||||
<H>150</H>
|
||||
<Z>-1,00</Z>
|
||||
<!--<NumBars>: Number of equalizer-elements.-->
|
||||
<NumBars>10</NumBars>
|
||||
<!--<Space>: Space between equalizer-elements.-->
|
||||
<Space>2,00</Space>
|
||||
<!--<Style>: Style of equalizer-elements: Collumns-->
|
||||
<Style>Collumns</Style>
|
||||
<!--<Color>: Equalizer color from ColorScheme (high priority)-->
|
||||
<!--or <R>, <G>, <B>, <A> (lower priority)-->
|
||||
<Color>ButtonColor</Color>
|
||||
<!--<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)-->
|
||||
<!--or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)-->
|
||||
<MaxColor>ButtonSColor</MaxColor>
|
||||
<!--<DrawNegative>: Draw negative values: TR_CONFIG_OFF, TR_CONFIG_ON -->
|
||||
<DrawNegative>TR_CONFIG_OFF</DrawNegative>
|
||||
<!--<Reflection> If exists:-->
|
||||
<!-- <Space>: Reflection Space-->
|
||||
<!-- <Height>: Reflection Height-->
|
||||
<Reflection>
|
||||
<Space>10</Space>
|
||||
<Height>26</Height>
|
||||
</Reflection>
|
||||
</EqualizerChannel2>
|
||||
</ScreenOptionsRecord>
|
||||
</root>
|
||||
</root>
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<ScreenSing>
|
||||
<ScreenVersion>4</ScreenVersion>
|
||||
<ScreenVersion>5</ScreenVersion>
|
||||
<Background1>
|
||||
<!--<Type>: Background type: None, Color, Texture, Video-->
|
||||
<Type>None</Type>
|
||||
@@ -958,6 +958,64 @@
|
||||
<!-- <Space>: Reflection Space-->
|
||||
<!-- <Height>: Reflection Height-->
|
||||
</StaticAvatarP6N6>
|
||||
<TextDuetName1>
|
||||
<!--<X>, <Y>: Text position-->
|
||||
<X>40</X>
|
||||
<Y>80</Y>
|
||||
<!--<Z>: Text position-->
|
||||
<Z>-1,00</Z>
|
||||
<!--<H>: Text height-->
|
||||
<H>35</H>
|
||||
<!--<MaxW>: Maximum text width (if exists)-->
|
||||
<!--<Color>: Text color from ColorScheme (high priority)-->
|
||||
<!--or <R>, <G>, <B>, <A> (lower priority)-->
|
||||
<Color>TextSColor</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 />
|
||||
<!--<Reflection> If exists:-->
|
||||
<!-- <Space>: Reflection Space-->
|
||||
<!-- <Height>: Reflection Height-->
|
||||
</TextDuetName1>
|
||||
<TextDuetName2>
|
||||
<!--<X>, <Y>: Text position-->
|
||||
<X>40</X>
|
||||
<Y>585</Y>
|
||||
<!--<Z>: Text position-->
|
||||
<Z>-1,00</Z>
|
||||
<!--<H>: Text height-->
|
||||
<H>35</H>
|
||||
<!--<MaxW>: Maximum text width (if exists)-->
|
||||
<!--<Color>: Text color from ColorScheme (high priority)-->
|
||||
<!--or <R>, <G>, <B>, <A> (lower priority)-->
|
||||
<Color>TextSColor</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 />
|
||||
<!--<Reflection> If exists:-->
|
||||
<!-- <Space>: Reflection Space-->
|
||||
<!-- <Height>: Reflection Height-->
|
||||
</TextDuetName2>
|
||||
<TextSongName>
|
||||
<!--<X>, <Y>: Text position-->
|
||||
<X>640</X>
|
||||
@@ -2656,4 +2714,4 @@
|
||||
</BarPositions>
|
||||
</SingBars>
|
||||
</ScreenSing>
|
||||
</root>
|
||||
</root>
|
||||
@@ -1,5 +1,11 @@
|
||||
SceenNames
|
||||
|
||||
++++++++++
|
||||
Version 3:
|
||||
|
||||
<EqualizerPlayer[1...6]> (One Equalizer for each player): Equalizer shows input from assigned mic for this player.
|
||||
<SelectSlideDuetPlayer[1...6]> (One SelectSlide for each player)
|
||||
|
||||
++++++++++
|
||||
Version 2:
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
ScreenOptionsRecord
|
||||
|
||||
++++++++++
|
||||
Version 2:
|
||||
|
||||
Add:
|
||||
<EqualizerChannel1> and <EqualizerChannel2>.
|
||||
This is a new theme-element. Check ScreenOptionsRecord.xml for style-possibilities.
|
||||
++++++++++
|
||||
@@ -1,5 +1,11 @@
|
||||
ScreenSing
|
||||
|
||||
+++++++++
|
||||
Version 5
|
||||
|
||||
Add:
|
||||
<TextDuetName1> and <TextDuetName2> (only showed when sining duet)
|
||||
|
||||
++++++++++
|
||||
Version 4:
|
||||
Added Elements for 6-player-singing!
|
||||
|
||||
@@ -117,6 +117,11 @@ namespace Vocaluxe.Base
|
||||
_Draw.DrawColor(color, rect);
|
||||
}
|
||||
|
||||
public static void DrawColorReflection(SColorF color, SRectF rect, float space, float height)
|
||||
{
|
||||
_Draw.DrawColorReflection(color, rect, space, height);
|
||||
}
|
||||
|
||||
public static void ClearScreen()
|
||||
{
|
||||
_Draw.ClearScreen();
|
||||
|
||||
@@ -315,6 +315,10 @@ namespace Vocaluxe.Base
|
||||
public CBuffer()
|
||||
{
|
||||
_ToneWeigth = new float[_NumHalfTones];
|
||||
for (int i = 0; i < _ToneWeigth.Length; i++)
|
||||
{
|
||||
_ToneWeigth[i] = 0.99f;
|
||||
}
|
||||
_Stream = new MemoryStream();
|
||||
_NewSamples = false;
|
||||
}
|
||||
|
||||
@@ -256,7 +256,7 @@ namespace Vocaluxe.GameModes
|
||||
|
||||
public virtual CSong GetSong(int Num)
|
||||
{
|
||||
if (Num - 1 < _SongQueque.Count)
|
||||
if (Num - 1 < _SongQueque.Count && Num - 1 > -1)
|
||||
return CSongs.GetSong(_SongQueque[Num - 1].SongID);
|
||||
|
||||
return null;
|
||||
|
||||
@@ -836,6 +836,19 @@ namespace Vocaluxe.Lib.Draw
|
||||
{
|
||||
DrawTexture(_BlankTexture, rect, color);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Draws reflection of a colored rectangle
|
||||
/// </summary>
|
||||
/// <param name="color">The color in which the rectangle will be drawn in</param>
|
||||
/// <param name="rect">The coordinates in a SRectF struct</param>
|
||||
/// <param name="space">The space between the texture and the reflection</param>
|
||||
/// <param name="height">The height of the reflection</param>
|
||||
public void DrawColorReflection(SColorF color, SRectF rect, float space, float height)
|
||||
{
|
||||
DrawTextureReflection(_BlankTexture, rect, color, rect, space, height);
|
||||
}
|
||||
|
||||
#endregion Basic Draw Methods
|
||||
#region Textures
|
||||
#region adding
|
||||
|
||||
@@ -352,6 +352,11 @@ namespace Vocaluxe.Lib.Draw
|
||||
|
||||
}
|
||||
|
||||
public void DrawColorReflection(SColorF color, SRectF rect, float space, float height)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public STexture AddTexture(Bitmap bmp)
|
||||
{
|
||||
Bitmap bmp2 = new Bitmap(bmp);
|
||||
|
||||
@@ -661,6 +661,59 @@ namespace Vocaluxe.Lib.Draw
|
||||
GL.Disable(EnableCap.Blend);
|
||||
}
|
||||
|
||||
public void DrawColorReflection(SColorF color, SRectF rect, float space, float height)
|
||||
{
|
||||
|
||||
if (rect.H < height)
|
||||
height = rect.H;
|
||||
|
||||
float rx1 = rect.X;
|
||||
float rx2 = rect.X + rect.W;
|
||||
float ry1 = rect.Y + rect.H + space;
|
||||
float ry2 = rect.Y + rect.H + space + height;
|
||||
|
||||
if (rx1 < rect.X)
|
||||
rx1 = rect.X;
|
||||
|
||||
if (rx2 > rect.X + rect.W)
|
||||
rx2 = rect.X + rect.W;
|
||||
|
||||
if (ry1 < rect.Y + space)
|
||||
ry1 = rect.Y + space;
|
||||
|
||||
if (ry2 > rect.Y + rect.H + space + height)
|
||||
ry2 = rect.Y + rect.H + space + height;
|
||||
|
||||
|
||||
GL.Enable(EnableCap.Blend);
|
||||
|
||||
if (rect.Rotation != 0f)
|
||||
{
|
||||
GL.Translate(0.5f, 0.5f, 0);
|
||||
GL.Rotate(-rect.Rotation, 0f, 0f, 1f);
|
||||
GL.Translate(-0.5f, -0.5f, 0);
|
||||
}
|
||||
|
||||
GL.Begin(BeginMode.Quads);
|
||||
|
||||
GL.Color4(color.R, color.G, color.B, color.A * CGraphics.GlobalAlpha);
|
||||
GL.Vertex3(rx2, ry1, rect.Z + CGraphics.ZOffset);
|
||||
|
||||
GL.Color4(color.R, color.G, color.B, 0f);
|
||||
GL.Vertex3(rx2, ry2, rect.Z + CGraphics.ZOffset);
|
||||
|
||||
GL.Color4(color.R, color.G, color.B, 0f);
|
||||
GL.Vertex3(rx1, ry2, rect.Z + CGraphics.ZOffset);
|
||||
|
||||
GL.Color4(color.R, color.G, color.B, color.A * CGraphics.GlobalAlpha);
|
||||
GL.Vertex3(rx1, ry1, rect.Z + CGraphics.ZOffset);
|
||||
|
||||
GL.End();
|
||||
|
||||
GL.Disable(EnableCap.Blend);
|
||||
|
||||
}
|
||||
|
||||
#endregion Basic Draw Methods
|
||||
|
||||
#region Textures
|
||||
|
||||
@@ -125,6 +125,7 @@ namespace Vocaluxe.Lib.Draw
|
||||
// Basic Draw Methods
|
||||
void DrawLine(int a, int r, int g, int b, int w, int x1, int y1, int x2, int y2);
|
||||
void DrawColor(SColorF color, SRectF rect);
|
||||
void DrawColorReflection(SColorF color, SRectF rect, float space, float height);
|
||||
|
||||
void ClearScreen();
|
||||
STexture CopyScreen();
|
||||
|
||||
@@ -99,6 +99,9 @@ namespace Vocaluxe.Lib.Song
|
||||
public float Gap = 0f;
|
||||
public float VideoGap = 0f;
|
||||
|
||||
public string DuetPart1 = String.Empty;
|
||||
public string DuetPart2 = String.Empty;
|
||||
|
||||
public List<string> Comment = new List<string>();
|
||||
|
||||
// Sorting
|
||||
@@ -254,6 +257,18 @@ namespace Vocaluxe.Lib.Song
|
||||
this.ArtistSorting = Value;
|
||||
}
|
||||
break;
|
||||
case "P1":
|
||||
if (Value != String.Empty)
|
||||
{
|
||||
this.DuetPart1 = Value;
|
||||
}
|
||||
break;
|
||||
case "P2":
|
||||
if (Value != String.Empty)
|
||||
{
|
||||
this.DuetPart2 = Value;
|
||||
}
|
||||
break;
|
||||
case "MP3":
|
||||
if (File.Exists(Path.Combine(this.Folder, Value)))
|
||||
{
|
||||
@@ -356,12 +371,12 @@ namespace Vocaluxe.Lib.Song
|
||||
CheckFiles();
|
||||
|
||||
//Before saving this tags to .txt: Check, if ArtistSorting and Artist are equal, then don't save this tag.
|
||||
if (this.ArtistSorting == "")
|
||||
if (this.ArtistSorting == String.Empty)
|
||||
{
|
||||
this.ArtistSorting = this.Artist;
|
||||
}
|
||||
|
||||
if (this.TitleSorting == "")
|
||||
if (this.TitleSorting == String.Empty)
|
||||
{
|
||||
this.TitleSorting = this.Title;
|
||||
}
|
||||
@@ -420,9 +435,10 @@ namespace Vocaluxe.Lib.Song
|
||||
FileLineNo++;
|
||||
if (TempC.CompareTo('P') == 0)
|
||||
{
|
||||
char chr = (char)sr.Read();
|
||||
int.TryParse(chr.ToString(), out Param1);
|
||||
char chr;
|
||||
while ((chr = (char)sr.Read()) == ' '){ }
|
||||
|
||||
int.TryParse(chr.ToString(), out Param1);
|
||||
if (Param1 == 1)
|
||||
Player = 0;
|
||||
else if (Param1 == 2)
|
||||
@@ -505,6 +521,8 @@ namespace Vocaluxe.Lib.Song
|
||||
return false;
|
||||
}
|
||||
_NotesLoaded = true;
|
||||
if(IsDuet)
|
||||
CheckDuet();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -570,5 +588,19 @@ namespace Vocaluxe.Lib.Song
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void CheckDuet()
|
||||
{
|
||||
if (DuetPart1 == String.Empty)
|
||||
{
|
||||
DuetPart1 = "Part 1";
|
||||
CLog.LogError("Warning: Can't find #P1-tag for duets in \"" + this.Artist + " - " + this.Title + "\".");
|
||||
}
|
||||
if (DuetPart2 == String.Empty)
|
||||
{
|
||||
DuetPart2 = "Part 2";
|
||||
CLog.LogError("Warning: Can't find #P2-tag for duets in \"" + this.Artist + " - " + this.Title + "\".");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using System.Xml.XPath;
|
||||
|
||||
using Vocaluxe.Base;
|
||||
using Vocaluxe.Lib.Draw;
|
||||
|
||||
namespace Vocaluxe.Menu.Animations
|
||||
{
|
||||
public class CAnimation:IAnimation
|
||||
{
|
||||
private IAnimation _Animation;
|
||||
|
||||
public CAnimation(EAnimationType Type)
|
||||
{
|
||||
setAnimation(Type);
|
||||
}
|
||||
|
||||
public void Init()
|
||||
{
|
||||
_Animation.Init();
|
||||
}
|
||||
|
||||
public bool LoadAnimation(string item, XPathNavigator navigator)
|
||||
{
|
||||
return _Animation.LoadAnimation(item, navigator);
|
||||
}
|
||||
|
||||
public bool SaveAnimation(XmlWriter writer)
|
||||
{
|
||||
return _Animation.SaveAnimation(writer);
|
||||
}
|
||||
|
||||
public void StartAnimation()
|
||||
{
|
||||
_Animation.StartAnimation();
|
||||
}
|
||||
|
||||
public void StopAnimation()
|
||||
{
|
||||
_Animation.StopAnimation();
|
||||
}
|
||||
|
||||
public void ResetAnimation()
|
||||
{
|
||||
_Animation.ResetAnimation();
|
||||
}
|
||||
|
||||
public bool AnimationActive()
|
||||
{
|
||||
return _Animation.AnimationActive();
|
||||
}
|
||||
|
||||
public void Update()
|
||||
{
|
||||
_Animation.Update();
|
||||
}
|
||||
|
||||
public void setRect(SRectF rect)
|
||||
{
|
||||
_Animation.setRect(rect);
|
||||
}
|
||||
|
||||
public SRectF getRect()
|
||||
{
|
||||
return _Animation.getRect();
|
||||
}
|
||||
|
||||
public void setColor(SColorF color)
|
||||
{
|
||||
_Animation.setColor(color);
|
||||
}
|
||||
|
||||
public SColorF getColor()
|
||||
{
|
||||
return _Animation.getColor();
|
||||
}
|
||||
|
||||
public void setAnimation(EAnimationType Type)
|
||||
{
|
||||
switch (Type)
|
||||
{
|
||||
case EAnimationType.Resize:
|
||||
_Animation = new CAnimationResize();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using System.Xml.XPath;
|
||||
|
||||
using Vocaluxe.Base;
|
||||
using Vocaluxe.Lib.Draw;
|
||||
|
||||
namespace Vocaluxe.Menu.Animations
|
||||
{
|
||||
public enum EAnimationType
|
||||
{
|
||||
Resize
|
||||
}
|
||||
|
||||
public enum EAnimationRepeat
|
||||
{
|
||||
None,
|
||||
Reset,
|
||||
Repeat,
|
||||
RepeatWithReset
|
||||
}
|
||||
|
||||
public abstract class CAnimationFramework:IAnimation
|
||||
{
|
||||
public bool _AnimationLoaded;
|
||||
|
||||
public EAnimationType Type;
|
||||
public EAnimationRepeat Repeat;
|
||||
public float Speed;
|
||||
|
||||
public Stopwatch Timer = new Stopwatch();
|
||||
public bool ResetMode = false;
|
||||
|
||||
public abstract void Init();
|
||||
|
||||
public virtual bool LoadAnimation(string item, XPathNavigator navigator)
|
||||
{
|
||||
_AnimationLoaded = true;
|
||||
|
||||
_AnimationLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Speed", navigator, ref Speed);
|
||||
_AnimationLoaded &= CHelper.TryGetEnumValueFromXML<EAnimationRepeat>(item + "/Repeat", navigator, ref Repeat);
|
||||
|
||||
return _AnimationLoaded;
|
||||
}
|
||||
|
||||
public virtual bool SaveAnimation(XmlWriter writer)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public virtual void StartAnimation()
|
||||
{
|
||||
Timer.Start();
|
||||
}
|
||||
|
||||
public virtual void StopAnimation()
|
||||
{
|
||||
Timer.Stop();
|
||||
Timer.Reset();
|
||||
}
|
||||
|
||||
public virtual void ResetAnimation()
|
||||
{
|
||||
ResetMode = !ResetMode;
|
||||
}
|
||||
|
||||
public virtual bool AnimationActive()
|
||||
{
|
||||
return Timer.IsRunning;
|
||||
}
|
||||
|
||||
public virtual void setRect(SRectF rect)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual SRectF getRect()
|
||||
{
|
||||
return new SRectF();
|
||||
}
|
||||
|
||||
public virtual void setColor(SColorF color)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual SColorF getColor()
|
||||
{
|
||||
return new SColorF();
|
||||
}
|
||||
|
||||
public abstract void Update();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using System.Xml.XPath;
|
||||
|
||||
using Vocaluxe.Base;
|
||||
using Vocaluxe.Lib.Draw;
|
||||
|
||||
namespace Vocaluxe.Menu.Animations
|
||||
{
|
||||
public class CAnimationResize : CAnimationFramework
|
||||
{
|
||||
public SRectF FinalRect;
|
||||
public SRectF CurrentRect;
|
||||
public SRectF OriginalRect;
|
||||
|
||||
public CAnimationResize()
|
||||
{
|
||||
}
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
Type = EAnimationType.Resize;
|
||||
}
|
||||
|
||||
public override bool LoadAnimation(string item, XPathNavigator navigator)
|
||||
{
|
||||
//Load normal animation-options
|
||||
_AnimationLoaded &= base.LoadAnimation(item, navigator);
|
||||
|
||||
//Load specific animation-options
|
||||
_AnimationLoaded &= CHelper.TryGetFloatValueFromXML(item + "/X", navigator, ref FinalRect.X);
|
||||
_AnimationLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Y", navigator, ref FinalRect.Y);
|
||||
_AnimationLoaded &= CHelper.TryGetFloatValueFromXML(item + "/W", navigator, ref FinalRect.W);
|
||||
_AnimationLoaded &= CHelper.TryGetFloatValueFromXML(item + "/H", navigator, ref FinalRect.H);
|
||||
|
||||
return _AnimationLoaded;
|
||||
}
|
||||
|
||||
public override void setRect(SRectF rect)
|
||||
{
|
||||
OriginalRect = rect;
|
||||
}
|
||||
|
||||
public override SRectF getRect()
|
||||
{
|
||||
return CurrentRect;
|
||||
}
|
||||
|
||||
public override void StartAnimation()
|
||||
{
|
||||
base.StartAnimation();
|
||||
|
||||
CurrentRect = OriginalRect;
|
||||
}
|
||||
|
||||
public override void Update()
|
||||
{
|
||||
//Update CurrentRect
|
||||
if (!ResetMode)
|
||||
{
|
||||
CLog.LogError((CurrentRect.X + ((FinalRect.X - CurrentRect.X) / Speed * Timer.ElapsedMilliseconds)).ToString("#.#####"));
|
||||
CurrentRect.X = CurrentRect.X + ((FinalRect.X - CurrentRect.X) / Speed * Timer.ElapsedMilliseconds);
|
||||
CurrentRect.Y = CurrentRect.Y + ((FinalRect.Y - CurrentRect.Y) / Speed * Timer.ElapsedMilliseconds);
|
||||
CurrentRect.H = CurrentRect.H + ((FinalRect.H - CurrentRect.H) / Speed * Timer.ElapsedMilliseconds);
|
||||
CurrentRect.W = CurrentRect.W + ((FinalRect.W - CurrentRect.W) / Speed * Timer.ElapsedMilliseconds);
|
||||
}
|
||||
else
|
||||
{
|
||||
CurrentRect.X = CurrentRect.X + ((OriginalRect.X - CurrentRect.X) / Speed * Timer.ElapsedMilliseconds);
|
||||
CurrentRect.Y = CurrentRect.Y + ((OriginalRect.Y - CurrentRect.Y) / Speed * Timer.ElapsedMilliseconds);
|
||||
CurrentRect.H = CurrentRect.H + ((OriginalRect.H - CurrentRect.H) / Speed * Timer.ElapsedMilliseconds);
|
||||
CurrentRect.W = CurrentRect.W + ((OriginalRect.W - CurrentRect.W) / Speed * Timer.ElapsedMilliseconds);
|
||||
}
|
||||
|
||||
if (CurrentRect.X == FinalRect.X && CurrentRect.Y == FinalRect.Y && CurrentRect.H == FinalRect.H && CurrentRect.W == FinalRect.W)
|
||||
{
|
||||
switch (Repeat)
|
||||
{
|
||||
case EAnimationRepeat.Repeat:
|
||||
StopAnimation();
|
||||
CurrentRect = OriginalRect;
|
||||
StartAnimation();
|
||||
break;
|
||||
|
||||
case EAnimationRepeat.RepeatWithReset:
|
||||
ResetAnimation();
|
||||
break;
|
||||
|
||||
case EAnimationRepeat.Reset:
|
||||
if (!ResetMode)
|
||||
ResetAnimation();
|
||||
else
|
||||
StopAnimation();
|
||||
break;
|
||||
|
||||
case EAnimationRepeat.None:
|
||||
StopAnimation();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using System.Xml.XPath;
|
||||
|
||||
using Vocaluxe.Base;
|
||||
using Vocaluxe.Lib.Draw;
|
||||
|
||||
namespace Vocaluxe.Menu.Animations
|
||||
{
|
||||
interface IAnimation
|
||||
{
|
||||
void Init();
|
||||
bool LoadAnimation(string item, XPathNavigator navigator);
|
||||
bool SaveAnimation(XmlWriter writer);
|
||||
|
||||
void setRect(SRectF rect);
|
||||
SRectF getRect();
|
||||
void setColor(SColorF color);
|
||||
SColorF getColor();
|
||||
|
||||
void StartAnimation();
|
||||
void StopAnimation();
|
||||
void ResetAnimation();
|
||||
bool AnimationActive();
|
||||
void Update();
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,9 @@ namespace Vocaluxe.Menu
|
||||
public SColorF Color;
|
||||
public SColorF SColor;
|
||||
|
||||
public bool SelText;
|
||||
public CText Text;
|
||||
public CText SText;
|
||||
|
||||
public bool Reflection;
|
||||
public float ReflectionSpace;
|
||||
@@ -60,7 +62,9 @@ namespace Vocaluxe.Menu
|
||||
Color = new SColorF();
|
||||
SColor = new SColorF();
|
||||
|
||||
SelText = false;
|
||||
Text = new CText();
|
||||
SText = new CText();
|
||||
Selected = false;
|
||||
Visible = true;
|
||||
|
||||
@@ -113,6 +117,13 @@ namespace Vocaluxe.Menu
|
||||
|
||||
_ThemeLoaded &= Text.LoadTheme(item, "Text", navigator, SkinIndex, true);
|
||||
Text.Z = Rect.Z;
|
||||
if (CHelper.ItemExistsInXML(item + "/SText", navigator))
|
||||
{
|
||||
SelText = true;
|
||||
_ThemeLoaded &= SText.LoadTheme(item, "SText", navigator, SkinIndex, true);
|
||||
SText.Z = Rect.Z;
|
||||
}
|
||||
|
||||
|
||||
//Reflections
|
||||
if (CHelper.ItemExistsInXML(item + "/Reflection", navigator))
|
||||
@@ -189,6 +200,8 @@ namespace Vocaluxe.Menu
|
||||
}
|
||||
|
||||
Text.SaveTheme(writer);
|
||||
if (SelText)
|
||||
SText.SaveTheme(writer);
|
||||
|
||||
writer.WriteComment("<Reflection> If exists:");
|
||||
writer.WriteComment(" <Space>: Reflection Space");
|
||||
@@ -240,25 +253,34 @@ namespace Vocaluxe.Menu
|
||||
{
|
||||
texture = CTheme.GetSkinTexture(_Theme.TextureName);
|
||||
CDraw.DrawTexture(texture, Rect, Color);
|
||||
Text.DrawRelative(Rect.X, Rect.Y);
|
||||
if (Reflection)
|
||||
{
|
||||
CDraw.DrawTextureReflection(texture, Rect, Color, Rect, ReflectionSpace, ReflectionHeight);
|
||||
Text.DrawRelative(Rect.X, Rect.Y, ReflectionSpace, ReflectionHeight, Rect.H);
|
||||
}
|
||||
}
|
||||
else
|
||||
else if(!SelText)
|
||||
{
|
||||
texture = CTheme.GetSkinTexture(_Theme.STextureName);
|
||||
CDraw.DrawTexture(texture, Rect, SColor);
|
||||
Text.DrawRelative(Rect.X, Rect.Y);
|
||||
if (Reflection)
|
||||
{
|
||||
CDraw.DrawTextureReflection(texture, Rect, SColor, Rect, ReflectionSpace, ReflectionHeight);
|
||||
Text.DrawRelative(Rect.X, Rect.Y, ReflectionSpace, ReflectionHeight, Rect.H);
|
||||
}
|
||||
}
|
||||
|
||||
Text.DrawRelative(Rect.X, Rect.Y);
|
||||
if (Reflection)
|
||||
else if(SelText)
|
||||
{
|
||||
Text.DrawRelative(Rect.X, Rect.Y, ReflectionSpace, ReflectionHeight, Rect.H);
|
||||
texture = CTheme.GetSkinTexture(_Theme.STextureName);
|
||||
CDraw.DrawTexture(texture, Rect, SColor);
|
||||
SText.DrawRelative(Rect.X, Rect.Y);
|
||||
if (Reflection)
|
||||
{
|
||||
CDraw.DrawTextureReflection(texture, Rect, SColor, Rect, ReflectionSpace, ReflectionHeight);
|
||||
SText.DrawRelative(Rect.X, Rect.Y, ReflectionSpace, ReflectionHeight, Rect.H);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,305 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using System.Xml.XPath;
|
||||
|
||||
using Vocaluxe.Base;
|
||||
using Vocaluxe.Lib.Draw;
|
||||
|
||||
namespace Vocaluxe.Menu
|
||||
{
|
||||
enum EEqualizerStyle
|
||||
{
|
||||
Collums
|
||||
}
|
||||
|
||||
struct SThemeEqualizer
|
||||
{
|
||||
public string Name;
|
||||
|
||||
public string ColorName;
|
||||
public string MaxColorName;
|
||||
public string TextureName;
|
||||
|
||||
public int NumBars;
|
||||
|
||||
public EEqualizerStyle Style;
|
||||
public EOffOn DrawNegative;
|
||||
}
|
||||
|
||||
class CEqualizer : IMenuElement
|
||||
{
|
||||
private SThemeEqualizer _Theme;
|
||||
private bool _ThemeLoaded;
|
||||
|
||||
public SRectF Rect;
|
||||
public SColorF Color;
|
||||
public SColorF MaxColor;
|
||||
public float Space;
|
||||
|
||||
public bool Reflection;
|
||||
public float ReflectionSpace;
|
||||
public float ReflectionHeight;
|
||||
|
||||
public bool Selected;
|
||||
public bool Visible;
|
||||
public bool ScreenHandles;
|
||||
|
||||
private float[] _Bars;
|
||||
|
||||
public CEqualizer()
|
||||
{
|
||||
_Theme = new SThemeEqualizer();
|
||||
_ThemeLoaded = false;
|
||||
|
||||
Rect = new SRectF();
|
||||
Color = new SColorF();
|
||||
MaxColor = new SColorF();
|
||||
|
||||
Selected = false;
|
||||
Visible = true;
|
||||
ScreenHandles = false;
|
||||
|
||||
Reflection = false;
|
||||
ReflectionSpace = 0f;
|
||||
ReflectionHeight = 0f;
|
||||
}
|
||||
|
||||
public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex)
|
||||
{
|
||||
string item = XmlPath + "/" + ElementName;
|
||||
_ThemeLoaded = true;
|
||||
|
||||
_ThemeLoaded &= CHelper.GetValueFromXML(item + "/Skin", navigator, ref _Theme.TextureName, String.Empty);
|
||||
|
||||
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/X", navigator, ref Rect.X);
|
||||
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Y", navigator, ref Rect.Y);
|
||||
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Z", navigator, ref Rect.Z);
|
||||
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/W", navigator, ref Rect.W);
|
||||
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/H", navigator, ref Rect.H);
|
||||
|
||||
_ThemeLoaded &= CHelper.TryGetIntValueFromXML(item + "/NumBars", navigator, ref _Theme.NumBars);
|
||||
|
||||
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Space", navigator, ref Space);
|
||||
|
||||
_ThemeLoaded &= CHelper.TryGetEnumValueFromXML<EEqualizerStyle>(item + "/Style", navigator, ref _Theme.Style);
|
||||
|
||||
_ThemeLoaded &= CHelper.TryGetEnumValueFromXML<EOffOn>(item + "/DrawNegative", navigator, ref _Theme.DrawNegative);
|
||||
|
||||
if (CHelper.GetValueFromXML(item + "/Color", navigator, ref _Theme.ColorName, String.Empty))
|
||||
{
|
||||
_ThemeLoaded &= CTheme.GetColor(_Theme.ColorName, SkinIndex, ref Color);
|
||||
}
|
||||
else
|
||||
{
|
||||
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/R", navigator, ref Color.R);
|
||||
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/G", navigator, ref Color.G);
|
||||
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/B", navigator, ref Color.B);
|
||||
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/A", navigator, ref Color.A);
|
||||
}
|
||||
|
||||
if (CHelper.GetValueFromXML(item + "/MaxColor", navigator, ref _Theme.MaxColorName, String.Empty))
|
||||
{
|
||||
_ThemeLoaded &= CTheme.GetColor(_Theme.ColorName, SkinIndex, ref Color);
|
||||
}
|
||||
else
|
||||
{
|
||||
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/MaxR", navigator, ref MaxColor.R);
|
||||
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/MaxG", navigator, ref MaxColor.G);
|
||||
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/MaxB", navigator, ref MaxColor.B);
|
||||
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/MaxA", navigator, ref MaxColor.A);
|
||||
}
|
||||
|
||||
//Reflection
|
||||
if (CHelper.ItemExistsInXML(item + "/Reflection", navigator))
|
||||
{
|
||||
Reflection = true;
|
||||
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Reflection/Space", navigator, ref ReflectionSpace);
|
||||
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Reflection/Height", navigator, ref ReflectionHeight);
|
||||
}
|
||||
else
|
||||
Reflection = false;
|
||||
|
||||
if (_ThemeLoaded)
|
||||
{
|
||||
_Theme.Name = ElementName;
|
||||
_Bars = new float[_Theme.NumBars];
|
||||
for (int i = 0; i < _Bars.Length; i++)
|
||||
{
|
||||
_Bars[i] = 0f;
|
||||
}
|
||||
LoadTextures();
|
||||
}
|
||||
return _ThemeLoaded;
|
||||
}
|
||||
|
||||
public bool SaveTheme(XmlWriter writer)
|
||||
{
|
||||
if (_ThemeLoaded)
|
||||
{
|
||||
writer.WriteStartElement(_Theme.Name);
|
||||
|
||||
writer.WriteComment("<Skin>: Texture name");
|
||||
writer.WriteElementString("Skin", _Theme.TextureName);
|
||||
|
||||
writer.WriteComment("<X>, <Y>, <Z>, <W>, <H>: Equalizer position, width and height");
|
||||
writer.WriteElementString("X", Rect.X.ToString("#0"));
|
||||
writer.WriteElementString("Y", Rect.Y.ToString("#0"));
|
||||
writer.WriteElementString("Z", Rect.Z.ToString("#0.00"));
|
||||
writer.WriteElementString("W", Rect.W.ToString("#0"));
|
||||
writer.WriteElementString("H", Rect.H.ToString("#0"));
|
||||
|
||||
writer.WriteComment("<NumBars>: Number of equalizer-elements.");
|
||||
writer.WriteElementString("NumBars", _Theme.NumBars.ToString("#0"));
|
||||
writer.WriteComment("<Space>: Space between equalizer-elements.");
|
||||
writer.WriteElementString("Space", Space.ToString("#0.00"));
|
||||
writer.WriteComment("<Style>: Style of equalizer-elements: " + CConfig.ListStrings(Enum.GetNames(typeof(EEqualizerStyle))));
|
||||
writer.WriteElementString("Style", Enum.GetName(typeof(EEqualizerStyle), _Theme.Style));
|
||||
writer.WriteComment("<DrawNegative>: Draw negative values: " + CConfig.ListStrings(Enum.GetNames(typeof(EOffOn))));
|
||||
writer.WriteElementString("Style", Enum.GetName(typeof(EOffOn), _Theme.DrawNegative));
|
||||
|
||||
writer.WriteComment("<Color>: Equalizer color from ColorScheme (high priority)");
|
||||
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
||||
if (_Theme.ColorName != String.Empty)
|
||||
{
|
||||
writer.WriteElementString("Color", _Theme.ColorName);
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.WriteElementString("R", Color.R.ToString("#0.00"));
|
||||
writer.WriteElementString("G", Color.G.ToString("#0.00"));
|
||||
writer.WriteElementString("B", Color.B.ToString("#0.00"));
|
||||
writer.WriteElementString("A", Color.A.ToString("#0.00"));
|
||||
}
|
||||
writer.WriteComment("<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)");
|
||||
writer.WriteComment("or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)");
|
||||
if (_Theme.ColorName != String.Empty)
|
||||
{
|
||||
writer.WriteElementString("MaxColor", _Theme.ColorName);
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.WriteElementString("MaxR", Color.R.ToString("#0.00"));
|
||||
writer.WriteElementString("MaxG", Color.G.ToString("#0.00"));
|
||||
writer.WriteElementString("MaxB", Color.B.ToString("#0.00"));
|
||||
writer.WriteElementString("MaxA", Color.A.ToString("#0.00"));
|
||||
}
|
||||
|
||||
writer.WriteComment("<Reflection> If exists:");
|
||||
writer.WriteComment(" <Space>: Reflection Space");
|
||||
writer.WriteComment(" <Height>: Reflection Height");
|
||||
if (Reflection)
|
||||
{
|
||||
writer.WriteStartElement("Reflection");
|
||||
writer.WriteElementString("Space", ReflectionSpace.ToString("#0"));
|
||||
writer.WriteElementString("Height", ReflectionHeight.ToString("#0"));
|
||||
writer.WriteEndElement();
|
||||
}
|
||||
|
||||
writer.WriteEndElement();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void Update(float[] weights)
|
||||
{
|
||||
if (weights == null || weights.Length == 0 || _Bars == null)
|
||||
return;
|
||||
for (int i = 0; i < _Bars.Length; i++)
|
||||
{
|
||||
if (weights.Length > i){
|
||||
_Bars[i] = 1f - weights[i];
|
||||
if (_Theme.DrawNegative == EOffOn.TR_CONFIG_OFF && weights[i] < 0)
|
||||
_Bars[i] = (1f + weights[i]);
|
||||
}
|
||||
else
|
||||
_Bars[i] = 0f;
|
||||
}
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
if (_Bars == null || _Bars.Length == 0)
|
||||
return;
|
||||
|
||||
for (int i = 0; i < _Bars.Length; i++)
|
||||
{
|
||||
_Bars[i] = 0f;
|
||||
}
|
||||
}
|
||||
|
||||
public void Draw()
|
||||
{
|
||||
if (_Bars == null)
|
||||
return;
|
||||
|
||||
float dx = (Rect.W ) / _Bars.Length;
|
||||
int max = _Bars.Length - 1;
|
||||
float maxB = _Bars[max];
|
||||
for (int i = 0; i < _Bars.Length - 1; i++)
|
||||
{
|
||||
if (_Bars[i] > maxB)
|
||||
{
|
||||
maxB = _Bars[i];
|
||||
max = i;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < _Bars.Length; i++)
|
||||
{
|
||||
SRectF bar = new SRectF(Rect.X + dx * i, Rect.Y + Rect.H - _Bars[i] * Rect.H, dx - Space, _Bars[i] * Rect.H, Rect.Z);
|
||||
SColorF color = Color;
|
||||
if (i == max)
|
||||
{
|
||||
color = MaxColor;
|
||||
}
|
||||
|
||||
CDraw.DrawColor(color, bar);
|
||||
|
||||
if (Reflection)
|
||||
CDraw.DrawColorReflection(color, bar, ReflectionSpace, ReflectionHeight);
|
||||
}
|
||||
}
|
||||
|
||||
public void UnloadTextures()
|
||||
{
|
||||
}
|
||||
|
||||
public void LoadTextures()
|
||||
{
|
||||
if (_Theme.ColorName != String.Empty)
|
||||
Color = CTheme.GetColor(_Theme.ColorName);
|
||||
|
||||
if (_Theme.MaxColorName != String.Empty)
|
||||
MaxColor = CTheme.GetColor(_Theme.MaxColorName);
|
||||
}
|
||||
|
||||
public void ReloadTextures()
|
||||
{
|
||||
UnloadTextures();
|
||||
LoadTextures();
|
||||
}
|
||||
|
||||
#region ThemeEdit
|
||||
public void MoveElement(int stepX, int stepY)
|
||||
{
|
||||
Rect.X += stepX;
|
||||
Rect.Y += stepY;
|
||||
}
|
||||
|
||||
public void ResizeElement(int stepW, int stepH)
|
||||
{
|
||||
Rect.W += stepW;
|
||||
if (Rect.W <= 0)
|
||||
Rect.W = 1;
|
||||
|
||||
Rect.H += stepH;
|
||||
if (Rect.H <= 0)
|
||||
Rect.H = 1;
|
||||
}
|
||||
#endregion ThemeEdit
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,8 @@ namespace Vocaluxe.Menu
|
||||
TSongMenu,
|
||||
TLyric,
|
||||
TSingNote,
|
||||
TNameSelection
|
||||
TNameSelection,
|
||||
TEqualizer
|
||||
}
|
||||
|
||||
class CInteraction
|
||||
@@ -42,7 +43,8 @@ namespace Vocaluxe.Menu
|
||||
_Type == EType.TStatic ||
|
||||
_Type == EType.TSongMenu ||
|
||||
_Type == EType.TLyric ||
|
||||
_Type == EType.TSingNote);
|
||||
_Type == EType.TSingNote ||
|
||||
_Type == EType.TEqualizer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+102
-1
@@ -36,6 +36,7 @@ namespace Vocaluxe.Menu
|
||||
private List<CLyric> _Lyrics;
|
||||
private List<CSingNotes> _SingNotes;
|
||||
private List<CNameSelection> _NameSelections;
|
||||
private List<CEqualizer> _Equalizers;
|
||||
|
||||
private Hashtable _htBackgrounds;
|
||||
private Hashtable _htStatics;
|
||||
@@ -46,6 +47,7 @@ namespace Vocaluxe.Menu
|
||||
private Hashtable _htSelectSlides;
|
||||
private Hashtable _htSingNotes;
|
||||
private Hashtable _htNameSelections;
|
||||
private Hashtable _htEqualizers;
|
||||
|
||||
|
||||
private int _PrevMouseX;
|
||||
@@ -67,6 +69,7 @@ namespace Vocaluxe.Menu
|
||||
protected string[] _ThemeSelectSlides;
|
||||
protected string[] _ThemeSingNotes;
|
||||
protected string[] _ThemeNameSelections;
|
||||
protected string[] _ThemeEqualizers;
|
||||
|
||||
protected SRectF _ScreenArea;
|
||||
|
||||
@@ -99,6 +102,7 @@ namespace Vocaluxe.Menu
|
||||
_Lyrics = new List<CLyric>();
|
||||
_SingNotes = new List<CSingNotes>();
|
||||
_NameSelections = new List<CNameSelection>();
|
||||
_Equalizers = new List<CEqualizer>();
|
||||
|
||||
_htBackgrounds = new Hashtable();
|
||||
_htStatics = new Hashtable();
|
||||
@@ -109,6 +113,7 @@ namespace Vocaluxe.Menu
|
||||
_htSelectSlides = new Hashtable();
|
||||
_htSingNotes = new Hashtable();
|
||||
_htNameSelections = new Hashtable();
|
||||
_htEqualizers = new Hashtable();
|
||||
|
||||
_PrevMouseX = 0;
|
||||
_PrevMouseY = 0;
|
||||
@@ -129,6 +134,7 @@ namespace Vocaluxe.Menu
|
||||
_ThemeSelectSlides = null;
|
||||
_ThemeSingNotes = null;
|
||||
_ThemeNameSelections = null;
|
||||
_ThemeEqualizers = null;
|
||||
|
||||
}
|
||||
#region ThemeHandler
|
||||
@@ -311,6 +317,22 @@ namespace Vocaluxe.Menu
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (_ThemeEqualizers != null)
|
||||
{
|
||||
for (int i = 0; i < _ThemeEqualizers.Length; i++)
|
||||
{
|
||||
CEqualizer eq = new CEqualizer();
|
||||
if (eq.LoadTheme("//root/" + _ThemeName, _ThemeEqualizers[i], navigator, SkinIndex))
|
||||
{
|
||||
_htEqualizers.Add(_ThemeEqualizers[i], AddEqualizer(eq));
|
||||
}
|
||||
else
|
||||
{
|
||||
CLog.LogError("Can't load equalizer \"" + _ThemeEqualizers[i] + "\" in screen " + _ThemeName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -386,6 +408,12 @@ namespace Vocaluxe.Menu
|
||||
_NameSelections[i].SaveTheme(writer);
|
||||
}
|
||||
|
||||
//Equalizers
|
||||
for (int i = 0; i < _Equalizers.Count; i++)
|
||||
{
|
||||
_Equalizers[i].SaveTheme(writer);
|
||||
}
|
||||
|
||||
writer.WriteEndElement();
|
||||
|
||||
// End of File
|
||||
@@ -442,6 +470,11 @@ namespace Vocaluxe.Menu
|
||||
{
|
||||
ns.ReloadTextures();
|
||||
}
|
||||
|
||||
foreach (CEqualizer eq in _Equalizers)
|
||||
{
|
||||
eq.ReloadTextures();
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void UnloadTextures()
|
||||
@@ -491,6 +524,10 @@ namespace Vocaluxe.Menu
|
||||
ns.UnloadTextures();
|
||||
}
|
||||
|
||||
foreach (CEqualizer eq in _Equalizers)
|
||||
{
|
||||
eq.UnloadTextures();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -547,6 +584,11 @@ namespace Vocaluxe.Menu
|
||||
{
|
||||
return _NameSelections;
|
||||
}
|
||||
|
||||
public List<CEqualizer> GetEqualizers()
|
||||
{
|
||||
return _Equalizers;
|
||||
}
|
||||
#endregion GetLists
|
||||
|
||||
#region ElementHandler
|
||||
@@ -622,6 +664,14 @@ namespace Vocaluxe.Menu
|
||||
return _NameSelections.ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
public CEqualizer[] Equalizers
|
||||
{
|
||||
get
|
||||
{
|
||||
return _Equalizers.ToArray();
|
||||
}
|
||||
}
|
||||
#endregion Get Arrays
|
||||
|
||||
#region Hashtables
|
||||
@@ -741,6 +791,19 @@ namespace Vocaluxe.Menu
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public int htEqualizer(string key)
|
||||
{
|
||||
try
|
||||
{
|
||||
return (int)_htEqualizers[key];
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
CLog.LogError("Can't find Equalizer Element \"" + key + "\" in Screen " + _ThemeName);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
#endregion Hashtables
|
||||
#endregion ElementHandler
|
||||
|
||||
@@ -999,7 +1062,8 @@ namespace Vocaluxe.Menu
|
||||
_Interactions[i].Type == EType.TStatic ||
|
||||
_Interactions[i].Type == EType.TNameSelection ||
|
||||
_Interactions[i].Type == EType.TText ||
|
||||
_Interactions[i].Type == EType.TSongMenu))
|
||||
_Interactions[i].Type == EType.TSongMenu ||
|
||||
_Interactions[i].Type == EType.TEqualizer))
|
||||
{
|
||||
ZSort zs = new ZSort();
|
||||
zs.ID = i;
|
||||
@@ -1085,6 +1149,13 @@ namespace Vocaluxe.Menu
|
||||
_AddInteraction(_NameSelections.Count - 1, EType.TNameSelection);
|
||||
return _NameSelections.Count - 1;
|
||||
}
|
||||
|
||||
public int AddEqualizer(CEqualizer eq)
|
||||
{
|
||||
_Equalizers.Add(eq);
|
||||
_AddInteraction(_Equalizers.Count - 1, EType.TEqualizer);
|
||||
return _Equalizers.Count - 1;
|
||||
}
|
||||
#endregion Elements
|
||||
|
||||
#region InteractionHandling
|
||||
@@ -1233,6 +1304,10 @@ namespace Vocaluxe.Menu
|
||||
if (CHelper.IsInBounds(_NameSelections[interact.Num].Rect, x, y))
|
||||
return true;
|
||||
break;
|
||||
case EType.TEqualizer:
|
||||
if (CHelper.IsInBounds(_Equalizers[interact.Num].Rect, x, y))
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -1255,6 +1330,8 @@ namespace Vocaluxe.Menu
|
||||
return _Lyrics[interact.Num].Rect.Z;
|
||||
case EType.TNameSelection:
|
||||
return _NameSelections[interact.Num].Rect.Z;
|
||||
case EType.TEqualizer:
|
||||
return _Equalizers[interact.Num].Rect.Z;
|
||||
}
|
||||
return CSettings.zFar;
|
||||
}
|
||||
@@ -1283,6 +1360,9 @@ namespace Vocaluxe.Menu
|
||||
|
||||
case EType.TNameSelection:
|
||||
return _NameSelections[_Interactions[interaction].Num].Rect.Z;
|
||||
|
||||
case EType.TEqualizer:
|
||||
return _Equalizers[_Interactions[interaction].Num].Rect.Z;
|
||||
}
|
||||
|
||||
return CSettings.zFar;
|
||||
@@ -1605,6 +1685,9 @@ namespace Vocaluxe.Menu
|
||||
case EType.TNameSelection:
|
||||
_NameSelections[_Interactions[_Selection].Num].Selected = true;
|
||||
break;
|
||||
case EType.TEqualizer:
|
||||
_Equalizers[_Interactions[_Selection].Num].Selected = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1633,6 +1716,9 @@ namespace Vocaluxe.Menu
|
||||
case EType.TNameSelection:
|
||||
_NameSelections[_Interactions[_Selection].Num].Selected = false;
|
||||
break;
|
||||
case EType.TEqualizer:
|
||||
_Equalizers[_Interactions[_Selection].Num].Selected = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1744,6 +1830,9 @@ namespace Vocaluxe.Menu
|
||||
|
||||
case EType.TNameSelection:
|
||||
return _NameSelections[_Interactions[interaction].Num].Visible;
|
||||
|
||||
case EType.TEqualizer:
|
||||
return _Equalizers[_Interactions[interaction].Num].Visible;
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -1774,6 +1863,9 @@ namespace Vocaluxe.Menu
|
||||
|
||||
case EType.TNameSelection:
|
||||
return _NameSelections[_Interactions[interaction].Num].Rect;
|
||||
|
||||
case EType.TEqualizer:
|
||||
return _Equalizers[_Interactions[interaction].Num].Rect;
|
||||
}
|
||||
|
||||
return Result;
|
||||
@@ -1815,6 +1907,15 @@ namespace Vocaluxe.Menu
|
||||
case EType.TNameSelection:
|
||||
_NameSelections[_Interactions[interaction].Num].Draw();
|
||||
break;
|
||||
|
||||
case EType.TEqualizer:
|
||||
if (!_Equalizers[_Interactions[interaction].Num].ScreenHandles)
|
||||
{
|
||||
//TODO:
|
||||
//Call Update-Method of Equalizer and give infos about bg-sound.
|
||||
//_Equalizers[_Interactions[interaction].Num].Draw();
|
||||
}
|
||||
break;
|
||||
|
||||
//TODO:
|
||||
//case EType.TLyric:
|
||||
|
||||
@@ -581,14 +581,14 @@ namespace Vocaluxe.Menu
|
||||
|
||||
public void ProcessMouseMove(int x, int y)
|
||||
{
|
||||
_ArrowLeftSelected = CHelper.IsInBounds(RectArrowLeft, x, y);
|
||||
_ArrowRightSelected = CHelper.IsInBounds(RectArrowRight, x, y);
|
||||
_ArrowLeftSelected = CHelper.IsInBounds(RectArrowLeft, x, y) && _Selection > 0;
|
||||
_ArrowRightSelected = CHelper.IsInBounds(RectArrowRight, x, y) && _Selection < _ValueNames.Count - 1;
|
||||
}
|
||||
|
||||
public void ProcessMouseLBClick(int x, int y)
|
||||
{
|
||||
_ArrowLeftSelected = CHelper.IsInBounds(RectArrowLeft, x, y);
|
||||
_ArrowRightSelected = CHelper.IsInBounds(RectArrowRight, x, y);
|
||||
_ArrowLeftSelected = CHelper.IsInBounds(RectArrowLeft, x, y) && _Selection > 0;
|
||||
_ArrowRightSelected = CHelper.IsInBounds(RectArrowRight, x, y) && _Selection < _ValueNames.Count - 1;
|
||||
|
||||
if (_ArrowLeftSelected)
|
||||
PrevValue();
|
||||
|
||||
@@ -1,10 +1,48 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using Vocaluxe.Base;
|
||||
using Vocaluxe.Lib.Draw;
|
||||
using Vocaluxe.Lib.Song;
|
||||
|
||||
namespace Vocaluxe.Menu.SongMenu
|
||||
{
|
||||
class CSongMenuDreidel : CSongMenuFramework
|
||||
{
|
||||
private SRectF _ScrollRect;
|
||||
private CStatic _CoverBig;
|
||||
private CStatic _TextBG;
|
||||
|
||||
private CStatic _DuetIcon;
|
||||
private CStatic _VideoIcon;
|
||||
|
||||
private CText _Artist;
|
||||
private CText _Title;
|
||||
private CText _SongLength;
|
||||
|
||||
private int _actualSelection = -1;
|
||||
|
||||
public override int GetActualSelection()
|
||||
{
|
||||
return _actualSelection;
|
||||
}
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
base.Init();
|
||||
/**
|
||||
_CoverBig = _Theme.songMenuDreidel.StaticCoverBig;
|
||||
_TextBG = _Theme.songMenuDreidel.StaticTextBG;
|
||||
_DuetIcon = _Theme.songMenuDreidel.StaticDuetIcon;
|
||||
_VideoIcon = _Theme.songMenuDreidel.StaticVideoIcon;
|
||||
|
||||
_Artist = _Theme.songMenuDreidel.TextArtist;
|
||||
_Title = _Theme.songMenuDreidel.TextTitle;
|
||||
_SongLength = _Theme.songMenuDreidel.TextSongLength;
|
||||
**/
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,7 @@ namespace Vocaluxe.Screens
|
||||
class CScreenNames : 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 CStatic chooseAvatarStatic;
|
||||
private int OldMouseX;
|
||||
@@ -29,10 +29,13 @@ namespace Vocaluxe.Screens
|
||||
private readonly string[] StaticPlayer = new string[] { "StaticPlayer1", "StaticPlayer2", "StaticPlayer3", "StaticPlayer4", "StaticPlayer5", "StaticPlayer6" };
|
||||
private readonly string[] StaticPlayerAvatar = new string[] { "StaticPlayerAvatar1", "StaticPlayerAvatar2", "StaticPlayerAvatar3", "StaticPlayerAvatar4", "StaticPlayerAvatar5", "StaticPlayerAvatar6" };
|
||||
private readonly string[] TextPlayer = new string[] { "TextPlayer1", "TextPlayer2", "TextPlayer3", "TextPlayer4", "TextPlayer5", "TextPlayer6" };
|
||||
private readonly string[] EqualizerPlayer = new string[] { "EqualizerPlayer1", "EqualizerPlayer2", "EqualizerPlayer3", "EqualizerPlayer4", "EqualizerPlayer5", "EqualizerPlayer6" };
|
||||
private readonly string[] SelectSlideDuetPlayer = new string[] { "SelectSlideDuetPlayer1", "SelectSlideDuetPlayer2", "SelectSlideDuetPlayer3", "SelectSlideDuetPlayer4", "SelectSlideDuetPlayer5", "SelectSlideDuetPlayer6" };
|
||||
private STexture[] OriginalPlayerAvatarTextures = new STexture[CSettings.MaxNumPlayer];
|
||||
|
||||
private bool selectingMouseActive = false;
|
||||
private bool selectingKeyboardActive = false;
|
||||
private bool selectingKeyboardUnendless = false;
|
||||
private int selectingKeyboardPlayerNr = 0;
|
||||
private int SelectedPlayerNr;
|
||||
|
||||
@@ -63,8 +66,9 @@ namespace Vocaluxe.Screens
|
||||
_ThemeStatics = statics.ToArray();
|
||||
|
||||
List<string> texts = new List<string>();
|
||||
|
||||
_ThemeSelectSlides = new string[] { SelectSlidePlayerNumber };
|
||||
texts.Add(SelectSlidePlayerNumber);
|
||||
texts.AddRange(SelectSlideDuetPlayer);
|
||||
_ThemeSelectSlides = texts.ToArray();
|
||||
|
||||
texts.Clear();
|
||||
texts.Add(TextWarningMics);
|
||||
@@ -84,6 +88,10 @@ namespace Vocaluxe.Screens
|
||||
texts.Add(NameSelection);
|
||||
_ThemeNameSelections = texts.ToArray();
|
||||
|
||||
texts.Clear();
|
||||
texts.AddRange(EqualizerPlayer);
|
||||
_ThemeEqualizers = texts.ToArray();
|
||||
|
||||
chooseAvatarStatic = new CStatic();
|
||||
chooseAvatarStatic.Visible = false;
|
||||
}
|
||||
@@ -102,6 +110,11 @@ namespace Vocaluxe.Screens
|
||||
{
|
||||
OriginalPlayerAvatarTextures[i] = Statics[htStatics(StaticPlayerAvatar[i])].Texture;
|
||||
}
|
||||
|
||||
for (int i = 1; i <= CSettings.MaxNumPlayer; i++)
|
||||
{
|
||||
Equalizers[htEqualizer("EqualizerPlayer" + i)].ScreenHandles = true;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool HandleInput(KeyEvent KeyEvent)
|
||||
@@ -127,6 +140,22 @@ namespace Vocaluxe.Screens
|
||||
NameSelections[htNameSelections(NameSelection)].UpdateList();
|
||||
}
|
||||
break;
|
||||
|
||||
case Keys.P:
|
||||
if (!selectingKeyboardActive)
|
||||
{
|
||||
selectingKeyboardPlayerNr = 1;
|
||||
selectingKeyboardUnendless = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (selectingKeyboardPlayerNr + 1 <= CGame.NumPlayer)
|
||||
selectingKeyboardPlayerNr++;
|
||||
else
|
||||
selectingKeyboardPlayerNr = 1;
|
||||
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(true, selectingKeyboardPlayerNr);
|
||||
}
|
||||
break;
|
||||
}
|
||||
//Check if selecting with keyboard is active
|
||||
if (selectingKeyboardActive)
|
||||
@@ -156,10 +185,29 @@ namespace Vocaluxe.Screens
|
||||
NameSelections[htNameSelections(NameSelection)].UpdateList();
|
||||
SetInteractionToButton(Buttons[htButtons(ButtonStart)]);
|
||||
}
|
||||
//Reset all values
|
||||
selectingKeyboardPlayerNr = 0;
|
||||
selectingKeyboardActive = false;
|
||||
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(false, -1);
|
||||
//Started selecting with 'P'
|
||||
if (selectingKeyboardUnendless)
|
||||
{
|
||||
if (selectingKeyboardPlayerNr == CGame.NumPlayer)
|
||||
{
|
||||
//Reset all values
|
||||
selectingKeyboardPlayerNr = 0;
|
||||
selectingKeyboardActive = false;
|
||||
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(false, -1);
|
||||
}
|
||||
else
|
||||
{
|
||||
selectingKeyboardPlayerNr++;
|
||||
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(true, selectingKeyboardPlayerNr);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//Reset all values
|
||||
selectingKeyboardPlayerNr = 0;
|
||||
selectingKeyboardActive = false;
|
||||
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(false, -1);
|
||||
}
|
||||
break;
|
||||
|
||||
case Keys.D1:
|
||||
@@ -176,6 +224,7 @@ namespace Vocaluxe.Screens
|
||||
selectingKeyboardPlayerNr = 1;
|
||||
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(true, 1);
|
||||
}
|
||||
selectingKeyboardUnendless = false;
|
||||
break;
|
||||
case Keys.D2:
|
||||
case Keys.NumPad2:
|
||||
@@ -191,6 +240,7 @@ namespace Vocaluxe.Screens
|
||||
selectingKeyboardPlayerNr = 2;
|
||||
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(true, 2);
|
||||
}
|
||||
selectingKeyboardUnendless = false;
|
||||
break;
|
||||
case Keys.D3:
|
||||
case Keys.NumPad3:
|
||||
@@ -206,6 +256,7 @@ namespace Vocaluxe.Screens
|
||||
selectingKeyboardPlayerNr = 3;
|
||||
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(true, 3);
|
||||
}
|
||||
selectingKeyboardUnendless = false;
|
||||
break;
|
||||
case Keys.D4:
|
||||
case Keys.NumPad4:
|
||||
@@ -221,6 +272,7 @@ namespace Vocaluxe.Screens
|
||||
selectingKeyboardPlayerNr = 4;
|
||||
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(true, 4);
|
||||
}
|
||||
selectingKeyboardUnendless = false;
|
||||
break;
|
||||
case Keys.D5:
|
||||
case Keys.NumPad5:
|
||||
@@ -236,6 +288,7 @@ namespace Vocaluxe.Screens
|
||||
selectingKeyboardPlayerNr = 5;
|
||||
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(true, 5);
|
||||
}
|
||||
selectingKeyboardUnendless = false;
|
||||
break;
|
||||
case Keys.D6:
|
||||
case Keys.NumPad6:
|
||||
@@ -251,11 +304,14 @@ namespace Vocaluxe.Screens
|
||||
selectingKeyboardPlayerNr = 6;
|
||||
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(true, 6);
|
||||
}
|
||||
selectingKeyboardUnendless = false;
|
||||
break;
|
||||
|
||||
case Keys.Escape:
|
||||
//Reset all values
|
||||
selectingKeyboardPlayerNr = 0;
|
||||
selectingKeyboardActive = false;
|
||||
selectingKeyboardUnendless = false;
|
||||
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(false, -1);
|
||||
break;
|
||||
|
||||
@@ -279,6 +335,22 @@ namespace Vocaluxe.Screens
|
||||
//Update Tiles-List
|
||||
NameSelections[htNameSelections(NameSelection)].UpdateList();
|
||||
break;
|
||||
|
||||
case Keys.F10:
|
||||
if (CGame.GetNumSongs() == 1 && CGame.GetSong(1).IsDuet)
|
||||
{
|
||||
if (SelectSlides[htSelectSlides(SelectSlideDuetPlayer[selectingKeyboardPlayerNr - 1])].Selection == 0)
|
||||
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[selectingKeyboardPlayerNr - 1])].SetSelectionByValueIndex(1);
|
||||
else
|
||||
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[selectingKeyboardPlayerNr - 1])].SetSelectionByValueIndex(0);
|
||||
//Reset all values
|
||||
selectingKeyboardPlayerNr = 0;
|
||||
selectingKeyboardActive = false;
|
||||
selectingKeyboardUnendless = false;
|
||||
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(false, -1);
|
||||
SetInteractionToButton(Buttons[htButtons(ButtonStart)]);
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -503,13 +575,18 @@ namespace Vocaluxe.Screens
|
||||
|
||||
public override bool UpdateGame()
|
||||
{
|
||||
|
||||
for (int i = 1; i <= CGame.NumPlayer; i++)
|
||||
{
|
||||
CSound.AnalyzeBuffer((i-1));
|
||||
Equalizers[htEqualizer("EqualizerPlayer" + i)].Update(CSound.ToneWeigth((i-1)));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void OnShow()
|
||||
{
|
||||
base.OnShow();
|
||||
CSound.RecordStart();
|
||||
|
||||
NameSelections[htNameSelections(NameSelection)].Init();
|
||||
|
||||
@@ -526,11 +603,33 @@ namespace Vocaluxe.Screens
|
||||
Statics[htStatics(StaticPlayerAvatar[i])].Texture = CProfiles.Profiles[CGame.Player[i].ProfileID].Avatar.Texture;
|
||||
Texts[htTexts(TextPlayer[i])].Text = CProfiles.Profiles[CGame.Player[i].ProfileID].PlayerName;
|
||||
}
|
||||
if (CGame.GetNumSongs() == 1 && CGame.GetSong(1).IsDuet)
|
||||
{
|
||||
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[i])].Clear();
|
||||
if (i + 1 <= CGame.NumPlayer)
|
||||
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[i])].Visible = true;
|
||||
else
|
||||
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[i])].Visible = false;
|
||||
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[i])].AddValue(CGame.GetSong(1).DuetPart1);
|
||||
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[i])].AddValue(CGame.GetSong(1).DuetPart2);
|
||||
if ((i + 1) % 2 == 0)
|
||||
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[i])].SetSelectionByValueIndex(1);
|
||||
else
|
||||
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[i])].SetSelectionByValueIndex(0);
|
||||
}
|
||||
else
|
||||
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[i])].Visible = false;
|
||||
}
|
||||
|
||||
SetInteractionToButton(Buttons[htButtons(ButtonStart)]);
|
||||
}
|
||||
|
||||
public override void OnClose()
|
||||
{
|
||||
base.OnClose();
|
||||
CSound.RecordStop();
|
||||
}
|
||||
|
||||
public override bool Draw()
|
||||
{
|
||||
base.Draw();
|
||||
@@ -539,7 +638,10 @@ namespace Vocaluxe.Screens
|
||||
{
|
||||
chooseAvatarStatic.Draw();
|
||||
}
|
||||
|
||||
for (int i = 1; i <= CGame.NumPlayer; i++)
|
||||
{
|
||||
Equalizers[htEqualizer("EqualizerPlayer" + i)].Draw();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -561,6 +663,10 @@ namespace Vocaluxe.Screens
|
||||
CGame.Player[i].Name = "";
|
||||
}
|
||||
}
|
||||
if (CGame.GetNumSongs() == 1 && CGame.GetSong(1).IsDuet)
|
||||
{
|
||||
CGame.Player[i].LineNr = SelectSlides[htSelectSlides(SelectSlideDuetPlayer[i])].Selection;
|
||||
}
|
||||
}
|
||||
|
||||
CGraphics.FadeTo(EScreens.ScreenSing);
|
||||
@@ -591,12 +697,17 @@ namespace Vocaluxe.Screens
|
||||
{
|
||||
Texts[htTexts("TextPlayer" + i)].Text = CLanguage.Translate("TR_SCREENNAMES_PLAYER") + " " + i.ToString();
|
||||
}
|
||||
Equalizers[htEqualizer("EqualizerPlayer" + i)].Visible = true;
|
||||
if (CGame.GetNumSongs() == 1 && CGame.GetSong(1).IsDuet)
|
||||
SelectSlides[htSelectSlides("SelectSlideDuetPlayer" + i)].Visible = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Statics[htStatics("StaticPlayer" + i)].Visible = false;
|
||||
Statics[htStatics("StaticPlayerAvatar" + i)].Visible = false;
|
||||
Texts[htTexts("TextPlayer" + i)].Visible = false;
|
||||
Equalizers[htEqualizer("EqualizerPlayer" + i)].Visible = false;
|
||||
SelectSlides[htSelectSlides("SelectSlideDuetPlayer" + i)].Visible = false;
|
||||
}
|
||||
}
|
||||
CConfig.SaveConfig();
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace Vocaluxe.Screens
|
||||
class CScreenOptionsRecord : 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 float MaxDelayTime = 1f;
|
||||
private const string SelectSlideRecordDevices = "SelectSlideRecordDevices";
|
||||
@@ -40,6 +40,9 @@ namespace Vocaluxe.Screens
|
||||
private const string TextDelayChannel1 = "TextDelayChannel1";
|
||||
private const string TextDelayChannel2 = "TextDelayChannel2";
|
||||
|
||||
private const string EqualizerChannel1 = "EqualizerChannel1";
|
||||
private const string EqualizerChannel2 = "EqualizerChannel2";
|
||||
|
||||
private readonly string[] StaticEnergyChannel = new string[] { "StaticEnergyChannel1", "StaticEnergyChannel2" };
|
||||
private float[] ChannelEnergy;
|
||||
|
||||
@@ -51,8 +54,6 @@ namespace Vocaluxe.Screens
|
||||
private bool _DelayTestRunning;
|
||||
private int _DelaySound;
|
||||
|
||||
private Equalizer[] _Equalizer;
|
||||
|
||||
public CScreenOptionsRecord()
|
||||
{
|
||||
Init();
|
||||
@@ -73,6 +74,7 @@ namespace Vocaluxe.Screens
|
||||
_ThemeTexts = new string[] { TextWarning, TextDelayChannel1, TextDelayChannel2 };
|
||||
_ThemeButtons = new string[] { ButtonExit, ButtonDelayTest };
|
||||
_ThemeSelectSlides = new string[] { SelectSlideRecordDevices, SelectSlideRecordInputs, SelectSlideRecordChannel1, SelectSlideRecordChannel2, SelectSlideDelay };
|
||||
_ThemeEqualizers = new string[] { EqualizerChannel1, EqualizerChannel2 };
|
||||
}
|
||||
|
||||
public override void LoadTheme()
|
||||
@@ -107,6 +109,9 @@ namespace Vocaluxe.Screens
|
||||
Statics[htStatics(StaticEnergyChannel[i])].Visible = false;
|
||||
ChannelEnergy[i] = 0f;
|
||||
}
|
||||
|
||||
Equalizers[htEqualizer(EqualizerChannel1)].ScreenHandles = true;
|
||||
Equalizers[htEqualizer(EqualizerChannel2)].ScreenHandles = true;
|
||||
}
|
||||
|
||||
public override bool HandleInput(KeyEvent KeyEvent)
|
||||
@@ -277,28 +282,29 @@ namespace Vocaluxe.Screens
|
||||
if (player > 0)
|
||||
{
|
||||
ChannelEnergy[0] = CSound.RecordGetMaxVolume(player - 1);
|
||||
_Equalizer[0].Update(CSound.ToneWeigth(player - 1));
|
||||
Equalizers[htEqualizer(EqualizerChannel1)].Update(CSound.ToneWeigth(player - 1));
|
||||
}
|
||||
else
|
||||
_Equalizer[0].Reset();
|
||||
Equalizers[htEqualizer(EqualizerChannel1)].Reset();
|
||||
|
||||
ChannelEnergy[1] = 0f;
|
||||
player = SelectSlides[htSelectSlides(SelectSlideRecordChannel2)].Selection;
|
||||
if (player > 0)
|
||||
{
|
||||
ChannelEnergy[1] = CSound.RecordGetMaxVolume(player - 1);
|
||||
_Equalizer[1].Update(CSound.ToneWeigth(player - 1));
|
||||
Equalizers[htEqualizer(EqualizerChannel2)].Update(CSound.ToneWeigth(player - 1));
|
||||
}
|
||||
else
|
||||
_Equalizer[1].Reset();
|
||||
Equalizers[htEqualizer(EqualizerChannel2)].Reset();
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < ChannelEnergy.Length; i++)
|
||||
{
|
||||
ChannelEnergy[i] = 0f;
|
||||
_Equalizer[i].Reset();
|
||||
}
|
||||
Equalizers[htEqualizer(EqualizerChannel1)].Reset();
|
||||
Equalizers[htEqualizer(EqualizerChannel2)].Reset();
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -361,13 +367,6 @@ namespace Vocaluxe.Screens
|
||||
|
||||
_DelayTestRunning = false;
|
||||
_DelaySound = -1;
|
||||
|
||||
_Equalizer = new Equalizer[2];
|
||||
|
||||
for (int i = 0; i < _Equalizer.Length; i++)
|
||||
{
|
||||
_Equalizer[i] = new Equalizer(new SRectF(50 + 350 * i, 400, 230, 150, -1), CSound.NumHalfTones(0), 2);
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnShowFinish()
|
||||
@@ -406,10 +405,8 @@ namespace Vocaluxe.Screens
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < _Equalizer.Length; i++)
|
||||
{
|
||||
_Equalizer[i].Draw();
|
||||
}
|
||||
Equalizers[htEqualizer(EqualizerChannel1)].Draw();
|
||||
Equalizers[htEqualizer(EqualizerChannel2)].Draw();
|
||||
|
||||
DrawFG();
|
||||
|
||||
@@ -594,88 +591,4 @@ namespace Vocaluxe.Screens
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Equalizer
|
||||
{
|
||||
|
||||
private SRectF _Bounds;
|
||||
private float _Space;
|
||||
|
||||
private float[] _Bars;
|
||||
|
||||
public Equalizer(SRectF bounds, int numBars, float space)
|
||||
{
|
||||
_Bounds = bounds;
|
||||
_Space = space;
|
||||
|
||||
if (numBars > 0)
|
||||
_Bars = new float[numBars];
|
||||
}
|
||||
|
||||
public void Update(float[] weights)
|
||||
{
|
||||
if (weights == null || weights.Length == 0 || _Bars == null)
|
||||
return;
|
||||
|
||||
if (_Bars.Length < weights.Length)
|
||||
{
|
||||
}
|
||||
else if (_Bars.Length > weights.Length)
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < _Bars.Length; i++)
|
||||
{
|
||||
//if (weights[i] > 0)
|
||||
_Bars[i] = weights[i];
|
||||
//else
|
||||
// _Bars[i] = 0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
if (_Bars == null || _Bars.Length == 0)
|
||||
return;
|
||||
|
||||
for (int i = 0; i < _Bars.Length; i++)
|
||||
{
|
||||
_Bars[i] = 0f;
|
||||
}
|
||||
}
|
||||
|
||||
public void Draw()
|
||||
{
|
||||
if (_Bars == null)
|
||||
return;
|
||||
|
||||
float dx = _Bounds.W / _Bars.Length + _Space;
|
||||
int max = _Bars.Length - 1;
|
||||
float maxB = _Bars[max];
|
||||
for (int i = 0; i < _Bars.Length - 1; i++)
|
||||
{
|
||||
if (_Bars[i] > maxB)
|
||||
{
|
||||
maxB = _Bars[i];
|
||||
max = i;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (int i = 0; i < _Bars.Length; i++)
|
||||
{
|
||||
SRectF bar = new SRectF(_Bounds.X + dx * i, _Bounds.Y + _Bounds.H - _Bars[i] * _Bounds.H, dx - _Space, _Bars[i] * _Bounds.H, _Bounds.Z);
|
||||
SColorF color = new SColorF(1f, 1f, 1f, 1f);
|
||||
if (i == max)
|
||||
{
|
||||
color.B = 0f;
|
||||
color.G = 0f;
|
||||
}
|
||||
|
||||
CDraw.DrawColor(color, bar);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+126
-11
@@ -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 = 4;
|
||||
const int ScreenVersion = 5;
|
||||
|
||||
struct TimeRect
|
||||
{
|
||||
@@ -25,10 +25,12 @@ namespace Vocaluxe.Screens
|
||||
public float startBeat;
|
||||
public float endBeat;
|
||||
}
|
||||
|
||||
|
||||
private const string TextSongName = "TextSongName";
|
||||
private const string TextTime = "TextTime";
|
||||
private const string TextPause = "TextPause";
|
||||
private const string TextDuetName1 = "TextDuetName1";
|
||||
private const string TextDuetName2 = "TextDuetName2";
|
||||
private string[,] TextScores;
|
||||
private string[,] TextNames;
|
||||
|
||||
@@ -85,6 +87,8 @@ namespace Vocaluxe.Screens
|
||||
private int[] NoteLines = new int[CSettings.MaxNumPlayer];
|
||||
|
||||
private Stopwatch _TimerSongText;
|
||||
private Stopwatch _TimerDuetText1;
|
||||
private Stopwatch _TimerDuetText2;
|
||||
|
||||
private bool _Pause;
|
||||
|
||||
@@ -104,6 +108,8 @@ namespace Vocaluxe.Screens
|
||||
texts.Add(TextSongName);
|
||||
texts.Add(TextTime);
|
||||
texts.Add(TextPause);
|
||||
texts.Add(TextDuetName1);
|
||||
texts.Add(TextDuetName2);
|
||||
BuildTextStrings(ref texts);
|
||||
_ThemeTexts = texts.ToArray();
|
||||
|
||||
@@ -134,6 +140,8 @@ namespace Vocaluxe.Screens
|
||||
|
||||
_TimeRects = new List<TimeRect>();
|
||||
_TimerSongText = new Stopwatch();
|
||||
_TimerDuetText1 = new Stopwatch();
|
||||
_TimerDuetText2 = new Stopwatch();
|
||||
}
|
||||
|
||||
public override void LoadTheme()
|
||||
@@ -257,6 +265,7 @@ namespace Vocaluxe.Screens
|
||||
}
|
||||
|
||||
UpdateSongText();
|
||||
UpdateDuetText();
|
||||
|
||||
if (_FadeOut)
|
||||
return true;
|
||||
@@ -286,15 +295,15 @@ namespace Vocaluxe.Screens
|
||||
SingNotes[htSingNotes(SingBars)].SetAlpha(NoteLines[p], Alpha[CGame.Player[p].LineNr * 2]);
|
||||
if (CConfig.FadePlayerInfo == EFadePlayerInfo.TR_CONFIG_FADEPLAYERINFO_INFO || CConfig.FadePlayerInfo == EFadePlayerInfo.TR_CONFIG_FADEPLAYERINFO_ALL)
|
||||
{
|
||||
Statics[htStatics(StaticAvatars[p,CGame.NumPlayer-1])].Alpha = Alpha[0];
|
||||
Texts[htTexts(TextNames[p,CGame.NumPlayer-1])].Alpha = Alpha[0];
|
||||
Statics[htStatics(StaticAvatars[p, CGame.NumPlayer - 1])].Alpha = Alpha[CGame.Player[p].LineNr * 2];
|
||||
Texts[htTexts(TextNames[p, CGame.NumPlayer - 1])].Alpha = Alpha[CGame.Player[p].LineNr * 2];
|
||||
}
|
||||
if (CConfig.FadePlayerInfo == EFadePlayerInfo.TR_CONFIG_FADEPLAYERINFO_ALL)
|
||||
{
|
||||
Statics[htStatics(StaticScores[p, CGame.NumPlayer - 1])].Alpha = Alpha[0];
|
||||
Statics[htStatics(StaticAvatars[p, CGame.NumPlayer - 1])].Alpha = Alpha[0];
|
||||
Texts[htTexts(TextNames[p, CGame.NumPlayer - 1])].Alpha = Alpha[0];
|
||||
Texts[htTexts(TextScores[p, CGame.NumPlayer - 1])].Alpha = Alpha[0];
|
||||
Statics[htStatics(StaticScores[p, CGame.NumPlayer - 1])].Alpha = Alpha[CGame.Player[p].LineNr * 2];
|
||||
Statics[htStatics(StaticAvatars[p, CGame.NumPlayer - 1])].Alpha = Alpha[CGame.Player[p].LineNr * 2];
|
||||
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];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -484,6 +493,8 @@ namespace Vocaluxe.Screens
|
||||
Lyrics[htLyrics(LyricMainTop)].Clear();
|
||||
Lyrics[htLyrics(LyricSubTop)].Clear();
|
||||
Texts[htTexts(TextSongName)].Text = String.Empty;
|
||||
Texts[htTexts(TextDuetName1)].Text = String.Empty;
|
||||
Texts[htTexts(TextDuetName2)].Text = String.Empty;
|
||||
}
|
||||
|
||||
private void LoadNextSong()
|
||||
@@ -523,6 +534,15 @@ namespace Vocaluxe.Screens
|
||||
_FinishTime = song.Finish;
|
||||
_TimeToFirstNote = 0f;
|
||||
_TimeToFirstNoteDuet = 0f;
|
||||
int[] duet_player = new int[CGame.NumPlayer];
|
||||
if (song.IsDuet)
|
||||
{
|
||||
//Save duet-assignment before resetting
|
||||
for (int i = 0; i < duet_player.Length; i++)
|
||||
{
|
||||
duet_player[i] = CGame.Player[i].LineNr;
|
||||
}
|
||||
}
|
||||
CGame.ResetPlayer();
|
||||
|
||||
CDraw.RemoveTexture(ref _CurrentVideoTexture);
|
||||
@@ -542,10 +562,24 @@ namespace Vocaluxe.Screens
|
||||
|
||||
bool LyricsOnTop = (CGame.NumPlayer != 1) && CConfig.LyricsOnTop == EOffOn.TR_CONFIG_ON;
|
||||
if (song.IsDuet)
|
||||
{
|
||||
for (int i = 1; i <= CGame.NumPlayer; i = i + 2)
|
||||
{
|
||||
Texts[htTexts(TextDuetName1)].Text = song.DuetPart1;
|
||||
Texts[htTexts(TextDuetName2)].Text = song.DuetPart2;
|
||||
//More than one song: Player is not assigned to line by user
|
||||
//Otherwise, this is done by CScreenNames
|
||||
if (CGame.GetNumSongs() > 1)
|
||||
{
|
||||
CGame.Player[i].LineNr = 1;
|
||||
for (int i = 1; i <= CGame.NumPlayer; i = i + 2)
|
||||
{
|
||||
CGame.Player[i].LineNr = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < CGame.NumPlayer; i++)
|
||||
{
|
||||
CGame.Player[i].LineNr = duet_player[i];
|
||||
}
|
||||
}
|
||||
Statics[htStatics(StaticLyricsDuet)].Visible = true;
|
||||
Lyrics[htLyrics(LyricMainDuet)].Visible = true;
|
||||
@@ -586,9 +620,15 @@ namespace Vocaluxe.Screens
|
||||
|
||||
_TimerSongText.Stop();
|
||||
_TimerSongText.Reset();
|
||||
_TimerDuetText1.Stop();
|
||||
_TimerDuetText1.Reset();
|
||||
_TimerDuetText2.Stop();
|
||||
_TimerDuetText2.Reset();
|
||||
|
||||
if (song.Notes.Lines.Length != 2)
|
||||
{
|
||||
_TimerSongText.Start();
|
||||
}
|
||||
|
||||
StartSong();
|
||||
}
|
||||
@@ -772,6 +812,8 @@ namespace Vocaluxe.Screens
|
||||
|
||||
Statics[htStatics(StaticSongText)].Visible = false;
|
||||
Texts[htTexts(TextSongName)].Visible = false;
|
||||
Texts[htTexts(TextDuetName1)].Visible = false;
|
||||
Texts[htTexts(TextDuetName2)].Visible = false;
|
||||
|
||||
for (int numplayer = 0; numplayer < CSettings.MaxNumPlayer; numplayer++)
|
||||
{
|
||||
@@ -1042,6 +1084,79 @@ namespace Vocaluxe.Screens
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateDuetText()
|
||||
{
|
||||
if (CGame.GetSong() != null)
|
||||
{
|
||||
//Timer for first duet-part
|
||||
if (_TimerDuetText1.IsRunning)
|
||||
{
|
||||
float t = _TimerDuetText1.ElapsedMilliseconds / 1000f;
|
||||
if (t < 10f)
|
||||
{
|
||||
Texts[htTexts(TextDuetName1)].Visible = true;
|
||||
|
||||
if (t < 3f)
|
||||
{
|
||||
Texts[htTexts(TextDuetName1)].Color.A = (3f - (3f - t)) / 3f;
|
||||
}
|
||||
else if (t < 7f)
|
||||
{
|
||||
Texts[htTexts(TextDuetName1)].Color.A = 1f;
|
||||
}
|
||||
else
|
||||
{
|
||||
Texts[htTexts(TextDuetName1)].Color.A = (3f - (t - 7f)) / 3f;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Texts[htTexts(TextDuetName1)].Visible = false;
|
||||
_TimerDuetText1.Stop();
|
||||
}
|
||||
}
|
||||
else if (!_TimerDuetText1.IsRunning && _TimerDuetText1.ElapsedMilliseconds == 0 && Lyrics[htLyrics(LyricMainDuet)].Alpha > 0 && CGame.GetSong().IsDuet)
|
||||
_TimerDuetText1.Start();
|
||||
else
|
||||
{
|
||||
Texts[htTexts(TextDuetName1)].Visible = false;
|
||||
}
|
||||
//Timer for second duet-part
|
||||
if (_TimerDuetText2.IsRunning)
|
||||
{
|
||||
float t = _TimerDuetText2.ElapsedMilliseconds / 1000f;
|
||||
if (t < 10f)
|
||||
{
|
||||
Texts[htTexts(TextDuetName2)].Visible = true;
|
||||
|
||||
if (t < 3f)
|
||||
{
|
||||
Texts[htTexts(TextDuetName2)].Color.A = (3f - (3f - t)) / 3f;
|
||||
}
|
||||
else if (t < 7f)
|
||||
{
|
||||
Texts[htTexts(TextDuetName2)].Color.A = 1f;
|
||||
}
|
||||
else
|
||||
{
|
||||
Texts[htTexts(TextDuetName2)].Color.A = (3f - (t - 7f)) / 3f;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Texts[htTexts(TextDuetName2)].Visible = false;
|
||||
_TimerDuetText2.Stop();
|
||||
}
|
||||
}
|
||||
else if (!_TimerDuetText2.IsRunning && _TimerDuetText2.ElapsedMilliseconds == 0 && Lyrics[htLyrics(LyricMain)].Alpha > 0 && CGame.GetSong().IsDuet)
|
||||
_TimerDuetText2.Start();
|
||||
else
|
||||
{
|
||||
Texts[htTexts(TextDuetName2)].Visible = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateTimeLine()
|
||||
{
|
||||
CSong song = CGame.GetSong();
|
||||
|
||||
@@ -207,6 +207,7 @@
|
||||
<Compile Include="Lib\Video\IVideoDecoder.cs" />
|
||||
<Compile Include="Menu\CBackground.cs" />
|
||||
<Compile Include="Menu\CButton.cs" />
|
||||
<Compile Include="Menu\CEqualizer.cs" />
|
||||
<Compile Include="Menu\CGraphics.cs" />
|
||||
<Compile Include="Menu\CNameSelection.cs" />
|
||||
<Compile Include="Menu\CLyric.cs" />
|
||||
|
||||
Reference in new issue
Block a user