Merge pull request #309 from flokuep/rating-bar

Rating bar
This commit is contained in:
Florian Küpper authored and GitHub committed 2017-09-11 20:20:24 +02:00
commit e67202eb9b
19 files changed
+2258 -569

No files matched your search

@@ -1,5 +1,9 @@
ScreenScore
++++++++++
Version 4:
Removed <ScreenSettingAnimationDirection>, <StaticPointsBarBGP$N$>, <StaticPointsBarP$N$>
Added <ProgressBarPointsP$N$>
++++++++++++++++++++
Version 3:
Add <ScreenSettingShortScore>, <ScreenSettingShortRating>, <ScreenSettingShortDifficulty> to change text-string with player-num >= <Value>
Add <ScreenSettingAnimationDirection>, set <Value> to "vertical" to draw animation in vertical direction.
@@ -1,5 +1,11 @@
ScreenSing
+++++++++
Version 9
Add:
<StaticRatingBar$P$N$>
+++++++++
Version 8
+43 -1
View File
@@ -260,6 +260,42 @@
<B>1.000</B>
<A>0.700</A>
</TextNameColor>
<RatingAwful>
<R>0.878</R>
<G>0.274</G>
<B>0.254</B>
<A>1.000</A>
</RatingAwful>
<RatingPoor>
<R>0.988</R>
<G>0.494</G>
<B>0.207</B>
<A>1.000</A>
</RatingPoor>
<RatingNotBad>
<R>0.988</R>
<G>0.843</G>
<B>0.207</B>
<A>1.000</A>
</RatingNotBad>
<RatingGood>
<R>0.921</R>
<G>0.988</G>
<B>0.207</B>
<A>1.000</A>
</RatingGood>
<RatingGreat>
<R>0.807</R>
<G>0.968</G>
<B>0.278</B>
<A>1.000</A>
</RatingGreat>
<RatingPerfect>
<R>0.482</R>
<G>0.937</G>
<B>0.027</B>
<A>1.000</A>
</RatingPerfect>
</Colors>
<Skins>
<BG_Default>BG_Default.png</BG_Default>
@@ -316,6 +352,12 @@
<VolUp>VolUp.png</VolUp>
<VolDown>VolDown.png</VolDown>
<Random>RandomIcon.png</Random>
<RatingBar>RatingBar.png</RatingBar>
<RatingBarBackground>RatingBar.png</RatingBarBackground>
<RatingBarForeground>RatingBar.png</RatingBarForeground>
<RatingBarProgressLeft>NotesFillLeft.png</RatingBarProgressLeft>
<RatingBarProgressMid>NotesFillMid.png</RatingBarProgressMid>
<RatingBarProgressRight>NotesFillRight.png</RatingBarProgressRight>
<PopupBG>PopupBG.png</PopupBG>
<ScrollUp>ScrollUp.png</ScrollUp>
<ScrollDown>ScrollDown.png</ScrollDown>
@@ -331,4 +373,4 @@
<IntroMid>IntroMid.mp4</IntroMid>
<IntroOut>IntroOut.mp4</IntroOut>
</Videos>
</root>
</root>
+43 -1
View File
@@ -260,6 +260,42 @@
<B>0.945</B>
<A>0.700</A>
</TextNameColor>
<RatingAwful>
<R>0.878</R>
<G>0.274</G>
<B>0.254</B>
<A>1.000</A>
</RatingAwful>
<RatingPoor>
<R>0.988</R>
<G>0.494</G>
<B>0.207</B>
<A>1.000</A>
</RatingPoor>
<RatingNotBad>
<R>0.988</R>
<G>0.843</G>
<B>0.207</B>
<A>1.000</A>
</RatingNotBad>
<RatingGood>
<R>0.921</R>
<G>0.988</G>
<B>0.207</B>
<A>1.000</A>
</RatingGood>
<RatingGreat>
<R>0.807</R>
<G>0.968</G>
<B>0.278</B>
<A>1.000</A>
</RatingGreat>
<RatingPerfect>
<R>0.482</R>
<G>0.937</G>
<B>0.027</B>
<A>1.000</A>
</RatingPerfect>
</Colors>
<Skins>
<BG_Default>BG_Default.png</BG_Default>
@@ -316,6 +352,12 @@
<VolUp>VolUp.png</VolUp>
<VolDown>VolDown.png</VolDown>
<Random>RandomIcon.png</Random>
<RatingBar>RatingBar.png</RatingBar>
<RatingBarBackground>RatingBar.png</RatingBarBackground>
<RatingBarForeground>RatingBar.png</RatingBarForeground>
<RatingBarProgressLeft>NotesFillLeft.png</RatingBarProgressLeft>
<RatingBarProgressMid>NotesFillMid.png</RatingBarProgressMid>
<RatingBarProgressRight>NotesFillRight.png</RatingBarProgressRight>
<PopupBG>PopupBG.png</PopupBG>
<ScrollUp>ScrollUp.png</ScrollUp>
<ScrollDown>ScrollDown.png</ScrollDown>
@@ -331,4 +373,4 @@
<IntroMid>IntroMid.mp4</IntroMid>
<IntroOut>IntroOut.mp4</IntroOut>
</Videos>
</root>
</root>
+43 -1
View File
@@ -260,6 +260,42 @@
<B>0.733</B>
<A>0.700</A>
</TextNameColor>
<RatingAwful>
<R>0.878</R>
<G>0.274</G>
<B>0.254</B>
<A>1.000</A>
</RatingAwful>
<RatingPoor>
<R>0.988</R>
<G>0.494</G>
<B>0.207</B>
<A>1.000</A>
</RatingPoor>
<RatingNotBad>
<R>0.988</R>
<G>0.843</G>
<B>0.207</B>
<A>1.000</A>
</RatingNotBad>
<RatingGood>
<R>0.921</R>
<G>0.988</G>
<B>0.207</B>
<A>1.000</A>
</RatingGood>
<RatingGreat>
<R>0.807</R>
<G>0.968</G>
<B>0.278</B>
<A>1.000</A>
</RatingGreat>
<RatingPerfect>
<R>0.482</R>
<G>0.937</G>
<B>0.027</B>
<A>1.000</A>
</RatingPerfect>
</Colors>
<Skins>
<BG_Default>BG_Default.png</BG_Default>
@@ -316,6 +352,12 @@
<VolUp>VolUp.png</VolUp>
<VolDown>VolDown.png</VolDown>
<Random>RandomIcon.png</Random>
<RatingBar>RatingBar.png</RatingBar>
<RatingBarBackground>RatingBar.png</RatingBarBackground>
<RatingBarForeground>RatingBar.png</RatingBarForeground>
<RatingBarProgressLeft>NotesFillLeft.png</RatingBarProgressLeft>
<RatingBarProgressMid>NotesFillMid.png</RatingBarProgressMid>
<RatingBarProgressRight>NotesFillRight.png</RatingBarProgressRight>
<PopupBG>PopupBG.png</PopupBG>
<ScrollUp>ScrollUp.png</ScrollUp>
<ScrollDown>ScrollDown.png</ScrollDown>
@@ -331,4 +373,4 @@
<IntroMid>IntroMid.mp4</IntroMid>
<IntroOut>IntroOut.mp4</IntroOut>
</Videos>
</root>
</root>
Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because it is too large. Load diff
+954 -6
View File
@@ -2,7 +2,7 @@
<Screen xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Informations>
<ScreenName>ScreenSing</ScreenName>
<ScreenVersion>8</ScreenVersion>
<ScreenVersion>9</ScreenVersion>
</Informations>
<Backgrounds>
<Background Name="Background1">
@@ -174,7 +174,7 @@
<H>50</H>
<Z>-0.75</Z>
</Rect>
</Static>
</Static>
<Static Name="StaticAvatarP1N1">
<Skin/>
<Color Name="StaticAvatarColor" />
@@ -196,7 +196,7 @@
<H>50</H>
<Z>-0.75</Z>
</Rect>
</Static>
</Static>
<Static Name="StaticAvatarP1N2">
<Skin/>
<Color Name="StaticAvatarColor" />
@@ -218,7 +218,8 @@
<H>50</H>
<Z>-0.75</Z>
</Rect>
</Static>
</Static>
<Static Name="StaticAvatarP2N2">
<Skin/>
<Color Name="StaticAvatarColor" />
@@ -344,7 +345,7 @@
<Skin/>
<Color Name="Invisible" />
<Rect>
<X>1150</X>
<X>1085</X>
<Y>150</Y>
<W>100</W>
<H>50</H>
@@ -1684,5 +1685,952 @@
<Equalizers />
<Playlists />
<ParticleEffects />
<ProgressBars>
<ProgressBar Name="ProgressBarRatingP1N1">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>1085</X>
<Y>410</Y>
<W>160</W>
<H>13</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP1N2">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>1085</X>
<Y>170</Y>
<W>160</W>
<H>13</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP2N2">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>1085</X>
<Y>430</Y>
<W>160</W>
<H>13</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP1N3">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>1155</X>
<Y>135</Y>
<W>85</W>
<H>7</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP2N3">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>1155</X>
<Y>305</Y>
<W>85</W>
<H>7</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP3N3">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>1155</X>
<Y>475</Y>
<W>85</W>
<H>7</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP1N4">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>471</X>
<Y>170</Y>
<W>160</W>
<H>13</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP2N4">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>471</X>
<Y>430</Y>
<W>160</W>
<H>13</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP3N4">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>1105</X>
<Y>170</Y>
<W>160</W>
<H>13</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP4N4">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>1105</X>
<Y>430</Y>
<W>160</W>
<H>13</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP1N5">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>540</X>
<Y>135</Y>
<W>85</W>
<H>7</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP2N5">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>540</X>
<Y>305</Y>
<W>85</W>
<H>7</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP3N5">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>540</X>
<Y>475</Y>
<W>85</W>
<H>7</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP4N5">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>1175</X>
<Y>135</Y>
<W>85</W>
<H>7</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP5N5">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>1175</X>
<Y>305</Y>
<W>85</W>
<H>7</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP1N6">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>540</X>
<Y>135</Y>
<W>85</W>
<H>7</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP2N6">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>540</X>
<Y>305</Y>
<W>85</W>
<H>7</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP3N6">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>540</X>
<Y>475</Y>
<W>85</W>
<H>7</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP4N6">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>1175</X>
<Y>135</Y>
<W>85</W>
<H>7</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP5N6">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>1175</X>
<Y>305</Y>
<W>85</W>
<H>7</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
<ProgressBar Name="ProgressBarRatingP6N6">
<SkinBackground>RatingBarBackground</SkinBackground>
<SkinForeground>RatingBarForeground</SkinForeground>
<SkinProgressLeft>RatingBarProgressLeft</SkinProgressLeft>
<SkinProgressMid>RatingBarProgressMid</SkinProgressMid>
<SkinProgressRight>RatingBarProgressRight</SkinProgressRight>
<ColorBackground Name="Visible" />
<ColorForeground Name="Invisible" />
<Direction>Right</Direction>
<AnimateMovement>TR_CONFIG_ON</AnimateMovement>
<AnimateColoring>TR_CONFIG_ON</AnimateColoring>
<Rect>
<X>1175</X>
<Y>475</Y>
<W>85</W>
<H>7</H>
<Z>-0.75</Z>
</Rect>
<ProgressColors>
<ProgressColor>
<From>0</From>
<Color Name="RatingAwful" />
</ProgressColor>
<ProgressColor>
<From>0.16</From>
<Color Name="RatingPoor" />
</ProgressColor>
<ProgressColor>
<From>0.33</From>
<Color Name="RatingNotBad" />
</ProgressColor>
<ProgressColor>
<From>0.5</From>
<Color Name="RatingGood" />
</ProgressColor>
<ProgressColor>
<From>0.62</From>
<Color Name="RatingGreat" />
</ProgressColor>
<ProgressColor>
<From>0.8</From>
<Color Name="RatingPerfect" />
</ProgressColor>
</ProgressColors>
</ProgressBar>
</ProgressBars>
<ScreenSettings />
</Screen>
</Screen>
-5
View File
@@ -134,7 +134,6 @@ namespace Vocaluxe.Base
// ReSharper restore MemberHidesStaticFromOuterClass
[DefaultValue(ESongSorting.TR_CONFIG_ARTIST)] public ESongSorting SongSorting;
[DefaultValue(EOffOn.TR_CONFIG_ON)] public EOffOn IgnoreArticles;
[DefaultValue(10)] public float ScoreAnimationTime;
[DefaultValue(ETimerMode.TR_CONFIG_TIMERMODE_REMAINING)] public ETimerMode TimerMode;
[XmlAltName("NumPlayer"), DefaultValue(2)] public int NumPlayers;
[DefaultValue(EOffOn.TR_CONFIG_OFF)] public EOffOn Tabs;
@@ -344,8 +343,6 @@ namespace Vocaluxe.Base
{
Config.Game.SongFolder = SongFolders.ToArray();
}
if ((Config.Game.ScoreAnimationTime > 0 && Config.Game.ScoreAnimationTime < 1) || Config.Game.ScoreAnimationTime < 0)
Config.Game.ScoreAnimationTime = 1;
if (Config.Game.MinLineBreakTime < 0)
Config.Game.MinLineBreakTime = 0.1f;
@@ -469,8 +466,6 @@ namespace Vocaluxe.Base
return "SongSorting: " + CHelper.ListStrings(Enum.GetNames(typeof(ESongSorting)));
case "IgnoreArticles":
return "Ignore articles on song-sorting: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn)));
case "ScoreAnimationTime":
return "ScoreAnimationTime: Values >= 1 or 0 for no animation. Time is in seconds.";
case "TimerMode":
return "TimerMode: " + CHelper.ListStrings(Enum.GetNames(typeof(ETimerMode)));
case "NumPlayers":
+8 -1
View File
@@ -199,6 +199,7 @@ namespace Vocaluxe.Base
Players[i].Points = 0f;
Players[i].PointsLineBonus = 0f;
Players[i].PointsGoldenNotes = 0f;
Players[i].Rating = 0.5f;
Players[i].VoiceNr = 0;
Players[i].NoteDiff = 0;
Players[i].SungLines = new List<CSungLine>();
@@ -343,10 +344,11 @@ namespace Vocaluxe.Base
}
}
// Line Bonus
// Check if line ended
int numLinesWithPoints = song.Notes.GetNumLinesWithPoints(Players[p].VoiceNr);
if (beat == lines[line].LastNoteBeat && lines[line].Points > 0 && numLinesWithPoints > 0)
{
// Line Bonus
double factor = Players[p].SungLines[line].Points / (double)lines[line].Points;
if (factor <= 0.4)
factor = 0.0;
@@ -363,6 +365,11 @@ namespace Vocaluxe.Base
Players[p].Points += points;
Players[p].PointsLineBonus += points;
Players[p].SungLines[line].BonusPoints += points;
//Calculate rating
//Shift fraction of correct sung notes to [-0.1, 0.1], player needs to sing five lines fully correctly to get highest ranking
double current = Players[p].SungLines[line].Points / (double)lines[line].Points;
Players[p].Rating = (Players[p].Rating + (current * 0.2 - 0.1)).Clamp(0, 1);
}
}
}
+29 -79
View File
@@ -33,7 +33,7 @@ namespace Vocaluxe.Screens
// Version number for theme files. Increment it, if you've changed something on the theme files!
protected override int _ScreenVersion
{
get { return 3; }
get { return 4; }
}
private const string _TextSong = "TextSong";
@@ -41,7 +41,6 @@ namespace Vocaluxe.Screens
private const string _ScreenSettingShortScore = "ScreenSettingShortScore";
private const string _ScreenSettingShortRating = "ScreenSettingShortRating";
private const string _ScreenSettingShortDifficulty = "ScreenSettingShortDifficulty";
private const string _ScreenSettingAnimationDirection = "ScreenSettingAnimationDirection";
private CBackground _SlideShowBG;
@@ -49,13 +48,10 @@ namespace Vocaluxe.Screens
private string[,] _TextScores;
private string[,] _TextRatings;
private string[,] _TextDifficulty;
private string[,] _StaticPointsBarBG;
private string[,] _StaticPointsBar;
private string[,] _ProgressBarPoints;
private string[,] _StaticAvatar;
private double[] _StaticPointsBarDrawnPoints;
private int _Round;
private CPoints _Points;
private Stopwatch _Timer;
public override EMusicType CurrentMusicType
{
@@ -77,9 +73,12 @@ namespace Vocaluxe.Screens
_ThemeStatics = statics.ToArray();
_ThemeScreenSettings = new string[] {_ScreenSettingShortScore, _ScreenSettingShortRating, _ScreenSettingShortDifficulty, _ScreenSettingAnimationDirection};
var progressBars = new List<string>();
_BuildProgressBarString(ref progressBars);
_StaticPointsBarDrawnPoints = new double[CSettings.MaxNumPlayer];
_ThemeProgressBars = progressBars.ToArray();
_ThemeScreenSettings = new string[] {_ScreenSettingShortScore, _ScreenSettingShortRating, _ScreenSettingShortDifficulty};
_SlideShowBG = GetNewBackground();
_AddBackground(_SlideShowBG);
@@ -157,34 +156,6 @@ namespace Vocaluxe.Screens
for (int p = 0; p < players.Length; p++)
players[p].Points = (int)(players[p].Points / CGame.NumRounds);
}
for (int p = 0; p < players.Length; p++)
{
if (_StaticPointsBarDrawnPoints[p] < players[p].Points)
{
if (CConfig.Config.Game.ScoreAnimationTime >= 1)
{
_StaticPointsBarDrawnPoints[p] = (_Timer.ElapsedMilliseconds / 1000f) / CConfig.Config.Game.ScoreAnimationTime * 10000;
if (_StaticPointsBarDrawnPoints[p] > players[p].Points)
_StaticPointsBarDrawnPoints[p] = players[p].Points;
var direction = (string)_ScreenSettings[_ScreenSettingAnimationDirection].GetValue();
if (direction.ToLower() == "vertical")
{
_Statics[_StaticPointsBar[p, CGame.NumPlayers - 1]].W = ((float)_StaticPointsBarDrawnPoints[p]) *
(_Statics[_StaticPointsBarBG[p, CGame.NumPlayers - 1]].W / CSettings.MaxScore);
}
else
{
_Statics[_StaticPointsBar[p, CGame.NumPlayers - 1]].H = ((float)_StaticPointsBarDrawnPoints[p]) *
(_Statics[_StaticPointsBarBG[p, CGame.NumPlayers - 1]].H / CSettings.MaxScore);
_Statics[_StaticPointsBar[p, CGame.NumPlayers - 1]].Y = _Statics[_StaticPointsBarBG[p, CGame.NumPlayers - 1]].H +
_Statics[_StaticPointsBarBG[p, CGame.NumPlayers - 1]].Y -
_Statics[_StaticPointsBar[p, CGame.NumPlayers - 1]].H;
}
}
}
}
return true;
}
@@ -242,8 +213,6 @@ namespace Vocaluxe.Screens
private void _BuildStaticStrings(ref List<string> statics)
{
_StaticPointsBar = new string[CSettings.MaxNumPlayer,CSettings.MaxNumPlayer];
_StaticPointsBarBG = new string[CSettings.MaxNumPlayer,CSettings.MaxNumPlayer];
_StaticAvatar = new string[CSettings.MaxNumPlayer,CSettings.MaxNumPlayer];
for (int numplayer = 0; numplayer < CSettings.MaxNumPlayer; numplayer++)
@@ -253,17 +222,31 @@ namespace Vocaluxe.Screens
if (player > numplayer)
continue;
string target = "P" + (player + 1) + "N" + (numplayer + 1);
_StaticPointsBarBG[player, numplayer] = "StaticPointsBarBG" + target;
_StaticPointsBar[player, numplayer] = "StaticPointsBar" + target;
_StaticAvatar[player, numplayer] = "StaticAvatar" + target;
statics.Add(_StaticPointsBarBG[player, numplayer]);
statics.Add(_StaticPointsBar[player, numplayer]);
statics.Add(_StaticAvatar[player, numplayer]);
}
}
}
private void _BuildProgressBarString(ref List<string> progressBars)
{
_ProgressBarPoints = new string[CSettings.MaxNumPlayer, CSettings.MaxNumPlayer];
for (int numplayer = 0; numplayer < CSettings.MaxNumPlayer; numplayer++)
{
for (int player = 0; player < CSettings.MaxNumPlayer; player++)
{
if (player > numplayer)
continue;
string target = "P" + (player + 1) + "N" + (numplayer + 1);
_ProgressBarPoints[player, numplayer] = "ProgressBarPoints" + target;
progressBars.Add(_ProgressBarPoints[player, numplayer]);
}
}
}
private void _UpdateRatings()
{
CSong song = null;
@@ -296,7 +279,6 @@ namespace Vocaluxe.Screens
players[p].Points = (int)Math.Round(players[p].Points / CGame.NumRounds);
}
var pointAnimDirection = (string)_ScreenSettings[_ScreenSettingAnimationDirection].GetValue();
for (int p = 0; p < players.Length; p++)
{
string name = CProfiles.GetPlayerName(players[p].ProfileID, p);
@@ -326,43 +308,11 @@ namespace Vocaluxe.Screens
else
_Texts[_TextRatings[p, CGame.NumPlayers - 1]].Text = CLanguage.Translate(_GetRating((int)Math.Round(players[p].Points)));
_StaticPointsBarDrawnPoints[p] = 0.0;
if (pointAnimDirection.ToLower() == "vertical")
_Statics[_StaticPointsBar[p, CGame.NumPlayers - 1]].W = 0;
else
{
_Statics[_StaticPointsBar[p, CGame.NumPlayers - 1]].H = 0;
_Statics[_StaticPointsBar[p, CGame.NumPlayers - 1]].Y = _Statics[_StaticPointsBarBG[p, CGame.NumPlayers - 1]].H +
_Statics[_StaticPointsBarBG[p, CGame.NumPlayers - 1]].Y -
_Statics[_StaticPointsBar[p, CGame.NumPlayers - 1]].H;
}
_ProgressBars[_ProgressBarPoints[p, CGame.NumPlayers - 1]].Progress = (float)players[p].Points / CSettings.MaxScore;
if (CProfiles.IsProfileIDValid(players[p].ProfileID))
_Statics[_StaticAvatar[p, CGame.NumPlayers - 1]].Texture = CProfiles.GetAvatarTextureFromProfile(players[p].ProfileID);
}
if (CConfig.Config.Game.ScoreAnimationTime < 1)
{
for (int p = 0; p < CGame.NumPlayers; p++)
{
if (pointAnimDirection.ToLower() == "vertical")
{
_Statics[_StaticPointsBar[p, CGame.NumPlayers - 1]].W = ((float)players[p].Points) *
(_Statics[_StaticPointsBarBG[p, CGame.NumPlayers - 1]].W / CSettings.MaxScore);
}
else
{
_Statics[_StaticPointsBar[p, CGame.NumPlayers - 1]].H = ((float)players[p].Points) *
(_Statics[_StaticPointsBarBG[p, CGame.NumPlayers - 1]].H / CSettings.MaxScore);
_Statics[_StaticPointsBar[p, CGame.NumPlayers - 1]].Y = _Statics[_StaticPointsBarBG[p, CGame.NumPlayers - 1]].H +
_Statics[_StaticPointsBarBG[p, CGame.NumPlayers - 1]].Y -
_Statics[_StaticPointsBar[p, CGame.NumPlayers - 1]].H;
}
_StaticPointsBarDrawnPoints[p] = players[p].Points;
}
}
_Timer = new Stopwatch();
_Timer.Start();
}
private void _SetVisibility()
@@ -377,8 +327,8 @@ namespace Vocaluxe.Screens
_Texts[_TextScores[player, numplayer]].Visible = numplayer + 1 == CGame.NumPlayers;
_Texts[_TextRatings[player, numplayer]].Visible = numplayer + 1 == CGame.NumPlayers;
_Texts[_TextDifficulty[player, numplayer]].Visible = numplayer + 1 == CGame.NumPlayers;
_Statics[_StaticPointsBar[player, numplayer]].Visible = numplayer + 1 == CGame.NumPlayers;
_Statics[_StaticPointsBarBG[player, numplayer]].Visible = numplayer + 1 == CGame.NumPlayers;
_ProgressBars[_ProgressBarPoints[player, numplayer]].Visible = numplayer + 1 == CGame.NumPlayers;
_ProgressBars[_ProgressBarPoints[player, numplayer]].Reset(true);
_Statics[_StaticAvatar[player, numplayer]].Visible = numplayer + 1 == CGame.NumPlayers;
_Statics[_StaticAvatar[player, numplayer]].Texture = null;
+48 -9
View File
@@ -38,7 +38,7 @@ namespace Vocaluxe.Screens
// Version number for theme files. Increment it, if you've changed something on the theme files!
protected override int _ScreenVersion
{
get { return 8; }
get { return 9; }
}
private struct STimeRect
@@ -74,6 +74,8 @@ namespace Vocaluxe.Screens
private string[,] _StaticScores;
private string[,] _StaticAvatars;
private string[,] _ProgressBarsRating;
private const string _ButtonCancel = "ButtonCancel";
private const string _ButtonContinue = "ButtonContinue";
private const string _ButtonSkip = "ButtonSkip";
@@ -150,7 +152,10 @@ namespace Vocaluxe.Screens
_StaticPauseBG
};
_BuildStaticStrings(ref statics);
_ThemeStatics = statics.ToArray();
var progressbars = new List<string>();
_BuildProgressBarStrings(ref progressbars);
_ThemeProgressBars = progressbars.ToArray();
_ThemeButtons = new string[] {_ButtonCancel, _ButtonContinue, _ButtonSkip};
_ThemeLyrics = new string[] {_LyricMain, _LyricSub, _LyricMainDuet, _LyricSubDuet, _LyricMainTop, _LyricSubTop};
@@ -303,12 +308,14 @@ namespace Vocaluxe.Screens
_UpdateSongText();
_UpdateDuetNames();
if (_FadeOut)
return true;
_UpdateTimeLine();
CGame.UpdatePoints(_CurrentTime);
_UpdateRatingBars();
_UpdateLyrics();
if (CGame.GameMode == EGameMode.TR_GAMEMODE_MEDLEY)
_UpdateMedleyCountdown();
@@ -343,6 +350,7 @@ namespace Vocaluxe.Screens
_Statics[_StaticAvatars[p, CGame.NumPlayers - 1]].Alpha = alpha[CGame.Players[p].VoiceNr * 2];
_Texts[_TextNames[p, CGame.NumPlayers - 1]].Alpha = alpha[CGame.Players[p].VoiceNr * 2];
_Texts[_TextScores[p, CGame.NumPlayers - 1]].Alpha = alpha[CGame.Players[p].VoiceNr * 2];
_ProgressBars[_ProgressBarsRating[p, CGame.NumPlayers - 1]].Alpha = alpha[CGame.Players[p].VoiceNr * 2];
}
}
@@ -596,6 +604,9 @@ namespace Vocaluxe.Screens
_DynamicLyricsTop = true;
}
for (int p = 0; p < CGame.NumPlayers; p++)
_ProgressBars[_ProgressBarsRating[p, CGame.NumPlayers - 1]].Reset();
_SetDuetLyricsVisibility(song.IsDuet);
_SetNormalLyricsVisibility();
@@ -783,6 +794,7 @@ namespace Vocaluxe.Screens
}
}
private void _TogglePause()
{
_SetPause(!_Pause);
@@ -826,8 +838,8 @@ namespace Vocaluxe.Screens
private void _BuildStaticStrings(ref List<string> statics)
{
_StaticScores = new string[CSettings.MaxNumPlayer,CSettings.MaxNumPlayer];
_StaticAvatars = new string[CSettings.MaxNumPlayer,CSettings.MaxNumPlayer];
_StaticScores = new string[CSettings.MaxNumPlayer, CSettings.MaxNumPlayer];
_StaticAvatars = new string[CSettings.MaxNumPlayer, CSettings.MaxNumPlayer];
for (int numplayer = 0; numplayer < CSettings.MaxNumPlayer; numplayer++)
{
@@ -846,6 +858,24 @@ namespace Vocaluxe.Screens
}
}
private void _BuildProgressBarStrings(ref List<string> progressbars)
{
_ProgressBarsRating = new string[CSettings.MaxNumPlayer, CSettings.MaxNumPlayer];
for (int numplayer = 0; numplayer < CSettings.MaxNumPlayer; numplayer++)
{
for (int player = 0; player < CSettings.MaxNumPlayer; player++)
{
if (player <= numplayer)
{
string target = "P" + (player + 1) + "N" + (numplayer + 1);
_ProgressBarsRating[player, numplayer] = "ProgressBarRating" + target;
progressbars.Add(_ProgressBarsRating[player, numplayer]);
}
}
}
}
private void _SetVisibility()
{
_Statics[_StaticLyricsDuet].Visible = false;
@@ -890,15 +920,16 @@ namespace Vocaluxe.Screens
{
for (int player = 0; player < CSettings.MaxNumPlayer && player <= numplayer; player++)
{
bool isIvisible = numplayer + 1 == CGame.NumPlayers && player <= CGame.NumPlayers;
_Texts[_TextScores[player, numplayer]].Visible = isIvisible;
_Texts[_TextNames[player, numplayer]].Visible = isIvisible &&
bool isVisible = numplayer + 1 == CGame.NumPlayers && player <= CGame.NumPlayers;
_Texts[_TextScores[player, numplayer]].Visible = isVisible;
_Texts[_TextNames[player, numplayer]].Visible = isVisible &&
(CConfig.Config.Theme.PlayerInfo == EPlayerInfo.TR_CONFIG_PLAYERINFO_BOTH ||
CConfig.Config.Theme.PlayerInfo == EPlayerInfo.TR_CONFIG_PLAYERINFO_NAME);
_Statics[_StaticScores[player, numplayer]].Visible = isIvisible;
_Statics[_StaticAvatars[player, numplayer]].Visible = isIvisible &&
_Statics[_StaticScores[player, numplayer]].Visible = isVisible;
_Statics[_StaticAvatars[player, numplayer]].Visible = isVisible &&
(CConfig.Config.Theme.PlayerInfo == EPlayerInfo.TR_CONFIG_PLAYERINFO_BOTH ||
CConfig.Config.Theme.PlayerInfo == EPlayerInfo.TR_CONFIG_PLAYERINFO_AVATAR);
_ProgressBars[_ProgressBarsRating[player, numplayer]].Visible = isVisible;
}
}
@@ -1371,5 +1402,13 @@ namespace Vocaluxe.Screens
_Texts[_TextNames[i, CGame.NumPlayers - 1]].Visible = false;
}
}
private void _UpdateRatingBars()
{
for (int i = 0; i < CGame.NumPlayers; i++)
{
_ProgressBars[_ProgressBarsRating[i, CGame.NumPlayers - 1]].Progress = (float)CGame.Players[i].Rating;
}
}
}
}
+2 -1
View File
@@ -30,7 +30,8 @@ namespace VocaluxeLib.Menu
NameSelection,
Equalizer,
Playlist,
ParticleEffect
ParticleEffect,
ProgressBar
}
public class CInteraction
+18 -1
View File
@@ -51,6 +51,7 @@ namespace VocaluxeLib.Menu
[XmlArray("Playlists")] public List<SThemePlaylist> Playlists;
[XmlArray("ParticleEffects")] public List<SThemeParticleEffect> ParticleEffects;
[XmlArray("ScreenSettings")] public List<SThemeScreenSetting> ScreenSettings;
[XmlArray("ProgressBars")] public List<SThemeProgressBar> ProgressBars;
}
struct SZSort
@@ -82,6 +83,7 @@ namespace VocaluxeLib.Menu
protected string[] _ThemePlaylists;
protected string[] _ThemeParticleEffects;
protected string[] _ThemeScreenSettings;
protected string[] _ThemeProgressBars;
protected readonly Dictionary<string, CScreenSetting> _ScreenSettings = new Dictionary<string, CScreenSetting>();
// ReSharper restore MemberCanBePrivate.Global
@@ -117,6 +119,7 @@ namespace VocaluxeLib.Menu
_ThemePlaylists = null;
_ThemeParticleEffects = null;
_ThemeScreenSettings = null;
_ThemeProgressBars = null;
}
protected virtual void _OnSongMenuChanged()
@@ -158,7 +161,7 @@ namespace VocaluxeLib.Menu
private static readonly string[] _AllowedMissing = new string[]
{
"Backgrounds", "Statics", "Texts", "Buttons", "SongMenus", "Lyrics", "SelectSlides", "SingNotes",
"NameSelections", "Equalizers", "Playlists", "ParticleEffects", "ScreenSettings"
"NameSelections", "Equalizers", "Playlists", "ParticleEffects", "ScreenSettings", "ProgressBars"
};
public override void HandleError(CXmlException e)
@@ -211,6 +214,9 @@ namespace VocaluxeLib.Menu
foreach (SThemePlaylist pl in Theme.Playlists)
_AddPlaylist(new CPlaylist(pl, PartyModeID), pl.Name);
foreach (SThemeProgressBar pb in Theme.ProgressBars)
_AddProgressBar(new CProgressBar(pb, PartyModeID), pb.Name);
foreach (SThemeScreenSetting ss in Theme.ScreenSettings)
_AddScreenSetting(new CScreenSetting(ss, PartyModeID), ss.Name);
@@ -351,6 +357,7 @@ namespace VocaluxeLib.Menu
_AddThemeablesToList(Theme.NameSelections, _NameSelections);
_AddThemeablesToList(Theme.ParticleEffects, _ParticleEffects);
_AddThemeablesToList(Theme.Playlists, _Playlists);
_AddThemeablesToList(Theme.ProgressBars, _ProgressBars);
_AddThemeablesToList(Theme.ScreenSettings, _ScreenSettings.Values);
_AddThemeablesToList(Theme.SelectSlides, _SelectSlides);
_AddThemeablesToList(Theme.Statics, _Statics);
@@ -471,6 +478,16 @@ namespace VocaluxeLib.Menu
return new CParticleEffect(PartyModeID, maxNumber, color, area, texture, size, type);
}
public CProgressBar GetNewProgressBar()
{
return new CProgressBar(PartyModeID);
}
public CProgressBar GetNewProgressBar(CProgressBar pb)
{
return new CProgressBar(pb);
}
// ReSharper restore MemberCanBeProtected.Global
// ReSharper restore UnusedMember.Global
#endregion Create Elements
+10
View File
@@ -46,6 +46,7 @@ namespace VocaluxeLib.Menu
protected readonly COrderedDictionaryLite<CEqualizer> _Equalizers;
protected readonly COrderedDictionaryLite<CPlaylist> _Playlists;
protected readonly COrderedDictionaryLite<CParticleEffect> _ParticleEffects;
protected readonly COrderedDictionaryLite<CProgressBar> _ProgressBars;
private readonly SColorF _HighlightColor = new SColorF(1, 0, 0, 0);
protected CObjectInteractions()
@@ -62,6 +63,7 @@ namespace VocaluxeLib.Menu
_Equalizers = new COrderedDictionaryLite<CEqualizer>(this);
_Playlists = new COrderedDictionaryLite<CPlaylist>(this);
_ParticleEffects = new COrderedDictionaryLite<CParticleEffect>(this);
_ProgressBars = new COrderedDictionaryLite<CProgressBar>(this);
}
public virtual void Init()
@@ -86,6 +88,7 @@ namespace VocaluxeLib.Menu
_Equalizers.Clear();
_Playlists.Clear();
_ParticleEffects.Clear();
_ProgressBars.Clear();
}
private void _SetSelected(int newSelection)
@@ -297,6 +300,8 @@ namespace VocaluxeLib.Menu
return _Playlists[element.Num];
case EType.ParticleEffect:
return _ParticleEffects[element.Num];
case EType.ProgressBar:
return _ProgressBars[element.Num];
}
throw new ArgumentException("Invalid element type: " + element.Type);
}
@@ -401,6 +406,11 @@ namespace VocaluxeLib.Menu
{
_AddElement(_ParticleEffects.Add(pe, key), EType.ParticleEffect);
}
protected void _AddProgressBar(CProgressBar pb, String key = null)
{
_AddElement(_ProgressBars.Add(pb, key), EType.ProgressBar);
}
#endregion Element-Adding
#region InteractionHandling
+497
View File
@@ -0,0 +1,497 @@
#region license
// This file is part of Vocaluxe.
//
// Vocaluxe is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Vocaluxe is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>.
#endregion
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Xml.Serialization;
using VocaluxeLib.Draw;
using VocaluxeLib.Xml;
namespace VocaluxeLib.Menu
{
[XmlType("ProgressColor")]
public struct SThemeProgressBarColor
{
public float From;
public SThemeColor Color;
}
[XmlType("ProgressBar")]
public struct SThemeProgressBar
{
[XmlAttribute(AttributeName = "Name")] public string Name;
public string SkinBackground;
public string SkinForeground;
public string SkinProgressLeft;
public string SkinProgressMid;
public string SkinProgressRight;
public SThemeColor ColorBackground;
public SThemeColor ColorForeground;
public EDirection Direction;
public EOffOn AnimateMovement;
public EOffOn AnimateColoring;
public SRectF Rect;
[XmlArrayItem("ProgressColor"), XmlArray] public List<SThemeProgressBarColor> ProgressColors;
public SReflection? Reflection;
}
public sealed class CProgressBar : CMenuElementBase, IMenuElement, IThemeable
{
private readonly int _PartyModeID;
private SThemeProgressBar _Theme;
public string GetThemeName()
{
return _Theme.Name;
}
public bool ThemeLoaded { get; private set; }
public bool Selectable
{
get { return false; }
}
private CTextureRef _TextureBackground;
public CTextureRef TextureBackground
{
get { return _TextureBackground ?? CBase.Themes.GetSkinTexture(_Theme.SkinBackground, _PartyModeID); }
set { _TextureBackground = value; }
}
private CTextureRef _TextureForeground;
public CTextureRef TextureForeground
{
get { return _TextureForeground ?? CBase.Themes.GetSkinTexture(_Theme.SkinForeground, _PartyModeID); }
set { _TextureForeground = value; }
}
private CTextureRef _TextureProgressLeft;
public CTextureRef TextureProgressLeft
{
get { return _TextureProgressLeft ?? CBase.Themes.GetSkinTexture(_Theme.SkinProgressLeft, _PartyModeID); }
set { _TextureProgressLeft = value; }
}
private CTextureRef _TextureProgressMid;
public CTextureRef TextureProgressMid
{
get { return _TextureProgressMid ?? CBase.Themes.GetSkinTexture(_Theme.SkinProgressMid, _PartyModeID); }
set { _TextureProgressMid = value; }
}
private CTextureRef _TextureProgressRight;
public CTextureRef TextureProgressRight
{
get { return _TextureProgressRight ?? CBase.Themes.GetSkinTexture(_Theme.SkinProgressRight, _PartyModeID); }
set { _TextureProgressRight = value; }
}
public SColorF ColorBackground;
public SColorF ColorForeground;
public bool Reflection;
public float ReflectionSpace;
public float ReflectionHeight;
public float Alpha = 1;
private float _ProgressTarget;
public float Progress
{
get { return _ProgressTarget; }
set
{
//Animation is still running, so use current state for calculations
if(_ProgressCurrent != _ProgressTarget)
{
_ProgressLast = _ProgressCurrent;
_ColorProgressLast = _ColorProgressCurrent;
}
_ProgressTarget = value;
}
}
private float _ProgressCurrent;
private float _ProgressLast;
private SColorF _ColorProgressCurrent;
private SColorF _ColorProgressTarget;
private SColorF _ColorProgressLast;
private SRectF _RectProgressBegin;
private SRectF _RectProgressMid;
private SRectF _RectProgressEnd;
private CTextureRef _TextureProgressBegin;
private CTextureRef _TextureProgressEnd;
private Stopwatch _AnimTimer;
private float _AnimDuration;
private bool _Animate;
public CProgressBar(int partyModeID)
{
_PartyModeID = partyModeID;
_AnimTimer = new Stopwatch();
}
public CProgressBar(CProgressBar pb)
{
_PartyModeID = pb._PartyModeID;
_TextureBackground = pb.TextureBackground;
_TextureForeground = pb.TextureForeground;
_TextureProgressLeft = pb.TextureProgressLeft;
_TextureProgressMid = pb._TextureProgressMid;
_TextureProgressRight = pb._TextureProgressRight;
ColorBackground = pb.ColorBackground;
ColorForeground = pb.ColorForeground;
MaxRect = pb.MaxRect;
Reflection = pb.Reflection;
ReflectionSpace = pb.ReflectionHeight;
ReflectionHeight = pb.ReflectionSpace;
Alpha = pb.Alpha;
Visible = pb.Visible;
_AnimTimer = new Stopwatch();
}
public CProgressBar(SThemeProgressBar theme, int partyModeID)
{
_PartyModeID = partyModeID;
_Theme = theme;
_Theme.ProgressColors.Sort((x, y) => x.From.CompareTo(y.From));
_UpdateProgress();
ThemeLoaded = true;
_AnimTimer = new Stopwatch();
}
public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader)
{
//Will be removed
return false;
}
public void Reset(bool animateInit = false)
{
_Animate = animateInit;
_Theme.ProgressColors[0].Color.Get(_PartyModeID, out _ColorProgressLast);
}
public void Draw()
{
Draw(1f);
}
public void Draw(float scale = 1f, float zModify = 0f, bool forceDraw = false)
{
if (scale <= 0)
return;
if (Visible || forceDraw || (CBase.Settings.GetProgramState() == EProgramState.EditTheme))
{
_UpdateProgress();
//Draw background
SColorF color = new SColorF(ColorBackground.R, ColorBackground.G, ColorBackground.B, ColorBackground.A * Alpha);
if (_TextureBackground != null)
{
CBase.Drawing.DrawTexture(_TextureBackground, Rect, color);
if (Reflection)
CBase.Drawing.DrawTextureReflection(_TextureBackground, Rect, color, Rect, ReflectionSpace, ReflectionHeight);
}
//Draw progress
color = new SColorF(_ColorProgressCurrent.R, _ColorProgressCurrent.G, _ColorProgressCurrent.B, _ColorProgressCurrent.A * Alpha);
if (_TextureProgressBegin != null)
{
CBase.Drawing.DrawTexture(_TextureProgressBegin, _RectProgressBegin, color);
if (Reflection)
CBase.Drawing.DrawTextureReflection(_TextureProgressBegin, _RectProgressBegin, color, _RectProgressBegin, ReflectionSpace, ReflectionHeight);
}
if (_TextureProgressMid != null)
{
CBase.Drawing.DrawTexture(_TextureProgressMid, _RectProgressMid, color);
if (Reflection)
CBase.Drawing.DrawTextureReflection(_TextureProgressMid, _RectProgressMid, color, _RectProgressMid, ReflectionSpace, ReflectionHeight);
}
else
CBase.Drawing.DrawRect(_ColorProgressCurrent, _RectProgressMid);
if (_TextureProgressEnd != null)
{
CBase.Drawing.DrawTexture(_TextureProgressEnd, _RectProgressEnd, color);
if (Reflection)
CBase.Drawing.DrawTextureReflection(_TextureProgressEnd, _RectProgressEnd, color, _RectProgressEnd, ReflectionSpace, ReflectionHeight);
}
//Draw foreground
color = new SColorF(ColorForeground.R, ColorForeground.G, ColorForeground.B, ColorForeground.A * Alpha);
if (_TextureForeground != null)
{
CBase.Drawing.DrawTexture(_TextureForeground, Rect, color);
if (Reflection)
CBase.Drawing.DrawTextureReflection(_TextureForeground, Rect, color, Rect, ReflectionSpace, ReflectionHeight);
}
}
if (Selected && (CBase.Settings.GetProgramState() == EProgramState.EditTheme))
CBase.Drawing.DrawRect(new SColorF(1f, 1f, 1f, 0.5f), Rect);
}
public void UnloadSkin() {}
public void LoadSkin()
{
if (!ThemeLoaded)
return;
_Theme.ColorBackground.Get(_PartyModeID, out ColorBackground);
_Theme.ColorForeground.Get(_PartyModeID, out ColorForeground);
TextureBackground = CBase.Themes.GetSkinTexture(_Theme.SkinBackground, _PartyModeID);
TextureForeground = CBase.Themes.GetSkinTexture(_Theme.SkinForeground, _PartyModeID);
TextureProgressLeft = CBase.Themes.GetSkinTexture(_Theme.SkinProgressLeft, _PartyModeID);
TextureProgressMid = CBase.Themes.GetSkinTexture(_Theme.SkinProgressMid, _PartyModeID);
TextureProgressRight = CBase.Themes.GetSkinTexture(_Theme.SkinProgressRight, _PartyModeID);
MaxRect = _Theme.Rect;
Reflection = _Theme.Reflection.HasValue;
if (Reflection)
{
Debug.Assert(_Theme.Reflection != null);
ReflectionSpace = _Theme.Reflection.Value.Space;
ReflectionHeight = _Theme.Reflection.Value.Height;
}
}
public void ReloadSkin()
{
UnloadSkin();
LoadSkin();
}
public object GetTheme()
{
return _Theme;
}
private void _UpdateProgress()
{
if (_ProgressCurrent == _ProgressTarget)
return;
if (_Animate)
_CheckAnimation();
else
_ProgressCurrent = _ProgressLast = _ProgressTarget;
_UpdateProgressColor();
_UpdateProgressLeft();
_UpdateProgressMid();
_UpdateProgressRight();
}
private void _CheckAnimation()
{
//Check if animation needs to be started
if (_Theme.AnimateColoring == EOffOn.TR_CONFIG_ON || _Theme.AnimateMovement == EOffOn.TR_CONFIG_ON)
{
if (!_AnimTimer.IsRunning)
{
_AnimTimer.Restart();
//Calc animation duration in ms based on rect size and progress change
if (_Theme.Direction == EDirection.Left || _Theme.Direction == EDirection.Right)
_AnimDuration = Math.Max(100f, (_Theme.Rect.W * 0.015f * 1000) * Math.Abs(_ProgressTarget - _ProgressCurrent));
else
_AnimDuration = Math.Max(100f, (_Theme.Rect.H * 0.015f * 1000) * Math.Abs(_ProgressTarget - _ProgressCurrent));
}
}
//Movement animation
if (_Theme.AnimateMovement == EOffOn.TR_CONFIG_ON)
_ProgressCurrent = _ProgressLast + (_AnimTimer.ElapsedMilliseconds / _AnimDuration).Clamp(0, 1) * (_ProgressTarget - _ProgressLast);
//Check if animation needs to be stopped
if (_ProgressCurrent == _ProgressTarget)
{
_AnimTimer.Stop();
_ProgressLast = _ProgressCurrent = _ProgressTarget;
_ColorProgressLast = _ColorProgressCurrent = _ColorProgressTarget;
}
_Animate = true;
}
private void _UpdateProgressColor()
{
foreach (SThemeProgressBarColor col in _Theme.ProgressColors)
if (col.From < _ProgressTarget)
col.Color.Get(_PartyModeID, out _ColorProgressTarget);
if(_Animate && _Theme.AnimateColoring == EOffOn.TR_CONFIG_ON)
{
float animFactor = (_AnimTimer.ElapsedMilliseconds / _AnimDuration).Clamp(0, 1);
_ColorProgressCurrent.R = _ColorProgressLast.R + animFactor * (_ColorProgressTarget.R - _ColorProgressLast.R);
_ColorProgressCurrent.G = _ColorProgressLast.G + animFactor * (_ColorProgressTarget.G - _ColorProgressLast.G);
_ColorProgressCurrent.B = _ColorProgressLast.B + animFactor * (_ColorProgressTarget.B - _ColorProgressLast.B);
_ColorProgressCurrent.A = _ColorProgressLast.A + animFactor * (_ColorProgressTarget.A - _ColorProgressLast.A);
}
else
_ColorProgressCurrent = _ColorProgressLast = _ColorProgressTarget;
}
private void _UpdateProgressLeft()
{
switch (_Theme.Direction)
{
case EDirection.Right:
_TextureProgressBegin = TextureProgressLeft;
if (_TextureProgressBegin == null)
_RectProgressBegin = new SRectF(Rect.X, Rect.Y, 0, 0, Rect.Z);
else
_RectProgressBegin = new SRectF(Rect.X, Rect.Y, Rect.H * _TextureProgressBegin.OrigAspect, Rect.H, Rect.Z);
break;
case EDirection.Up:
_TextureProgressBegin = TextureProgressRight;
if (_TextureProgressBegin == null)
_RectProgressBegin = new SRectF(Rect.X, Rect.Y + Rect.H, 0, 0, Rect.Z);
else
_RectProgressBegin = new SRectF(Rect.X, Rect.Y + Rect.H - Rect.W * _TextureProgressBegin.OrigAspect, Rect.W, Rect.W * _TextureProgressBegin.OrigAspect, Rect.Z);
break;
case EDirection.Left:
_TextureProgressBegin = TextureProgressRight;
if (_TextureProgressBegin == null)
_RectProgressBegin = new SRectF(Rect.X + Rect.W, Rect.Y, 0, 0, Rect.Z);
else
_RectProgressBegin = new SRectF(Rect.X + Rect.W - Rect.H * _TextureProgressBegin.OrigAspect, Rect.Y, Rect.H *_TextureProgressBegin.OrigAspect, Rect.H, Rect.Z);
break;
case EDirection.Down:
_TextureProgressBegin = TextureProgressLeft;
if (_TextureProgressBegin == null)
_RectProgressBegin = new SRectF(Rect.X, Rect.Y, 0, 0, Rect.Z);
else
_RectProgressBegin = new SRectF(Rect.X, Rect.Y, Rect.W, Rect.W * _TextureProgressBegin.OrigAspect, Rect.Z);
break;
}
}
private void _UpdateProgressMid()
{
switch (_Theme.Direction)
{
case EDirection.Right:
_RectProgressMid = new SRectF(_RectProgressBegin.X + _RectProgressBegin.W, Rect.Y, (Rect.W - 2 * _RectProgressBegin.W) * _ProgressCurrent, Rect.H, Rect.Z);
break;
case EDirection.Up:
float newHeight = (Rect.H - 2 * _RectProgressBegin.H) * _ProgressCurrent;
_RectProgressMid = new SRectF(Rect.X, _RectProgressBegin.Y - newHeight, Rect.W, newHeight, Rect.Z);
break;
case EDirection.Left:
float newWidth = (Rect.W - 2 * _RectProgressBegin.H) * _ProgressCurrent;
_RectProgressMid = new SRectF(_RectProgressBegin.X - newWidth, Rect.Y, newWidth, Rect.H, Rect.Z);
break;
case EDirection.Down:
_RectProgressMid = new SRectF(Rect.X, _RectProgressBegin.Y + _RectProgressBegin.H, (Rect.H - 2 * _RectProgressBegin.W) * _ProgressCurrent, Rect.W, Rect.Z);
break;
}
}
private void _UpdateProgressRight()
{
switch (_Theme.Direction)
{
case EDirection.Right:
_TextureProgressEnd = _TextureProgressRight;
if (_TextureProgressEnd == null)
_RectProgressEnd = new SRectF(_RectProgressMid.X + _RectProgressMid.W, Rect.Y, 0, 0, Rect.Z);
else
_RectProgressEnd = new SRectF(_RectProgressMid.X + _RectProgressMid.W, Rect.Y, Rect.H * _TextureProgressBegin.OrigAspect, Rect.H, Rect.Z);
break;
case EDirection.Up:
_TextureProgressEnd = _TextureProgressLeft;
if (_TextureProgressEnd == null)
_RectProgressEnd = new SRectF(Rect.X, _RectProgressMid.Y + Rect.W, 0, 0, Rect.Z);
else
_RectProgressEnd = new SRectF(Rect.X, _RectProgressMid.Y + Rect.W, Rect.W, Rect.W * _TextureProgressBegin.OrigAspect, Rect.Z);
break;
case EDirection.Left:
_TextureProgressEnd = _TextureProgressLeft;
if (_TextureProgressEnd == null)
_RectProgressEnd = new SRectF(_RectProgressMid.X - Rect.H, Rect.Y, 0, 0, Rect.Z);
else
_RectProgressEnd = new SRectF(_RectProgressMid.X - Rect.H, Rect.Y, Rect.H * _TextureProgressBegin.OrigAspect, Rect.H, Rect.Z);
break;
case EDirection.Down:
_TextureProgressEnd = _TextureProgressRight;
if (_TextureProgressEnd == null)
_RectProgressEnd = new SRectF(Rect.X, _RectProgressMid.Y + _RectProgressMid.H, 0, 0, Rect.Z);
else
_RectProgressEnd = new SRectF(Rect.X, _RectProgressMid.Y + _RectProgressMid.H, Rect.W, Rect.W * _TextureProgressBegin.OrigAspect, Rect.Z);
break;
}
}
#region ThemeEdit
public void MoveElement(int stepX, int stepY)
{
X += stepX;
Y += stepY;
_Theme.Rect.X += stepX;
_Theme.Rect.Y += stepY;
}
public void ResizeElement(int stepW, int stepH)
{
W += stepW;
if (W <= 0)
W = 1;
H += stepH;
if (H <= 0)
H = 1;
_Theme.Rect.W = Rect.W;
_Theme.Rect.H = Rect.H;
}
#endregion ThemeEdit
}
}
+22
View File
@@ -69,6 +69,15 @@ namespace VocaluxeLib.Menu
public EAspect Aspect = EAspect.Stretch;
/// <summary>
/// Adjust this value if you want to draw only a part of your texture, width
/// </summary>
public float ModW = -1f;
/// <summary>
/// Adjust this value if you want to draw only a part of your texture, height
/// </summary>
public float ModH = -1f;
public CStatic(int partyModeID)
{
_PartyModeID = partyModeID;
@@ -168,8 +177,21 @@ namespace VocaluxeLib.Menu
{
CTextureRef texture = Texture;
SRectF bounds = Rect.Scale(scale);
//Change bounds if rect size should be modified without adjusting texture
if (ModH != -1)
bounds.H = ModH * scale;
if (ModW != -1)
bounds.W = ModW * scale;
bounds.Z += zModify;
SRectF rect = texture == null ? bounds : CHelper.FitInBounds(bounds, texture.OrigAspect, aspect);
//Use original rect
if (ModH != -1 || ModW != -1)
rect = Rect.Scale(scale);
var color = new SColorF(Color.R, Color.G, Color.B, Color.A * Alpha);
if (Visible || forceDraw || (CBase.Settings.GetProgramState() == EProgramState.EditTheme))
{
+1
View File
@@ -362,6 +362,7 @@ namespace VocaluxeLib
public double Points;
public double PointsLineBonus;
public double PointsGoldenNotes;
public double Rating;
public int NoteDiff;
public int VoiceNr;
public List<CSungLine> SungLines;
+1
View File
@@ -105,6 +105,7 @@
<Compile Include="Game\CPoints.cs" />
<Compile Include="Menu\CScreenSetting.cs" />
<Compile Include="Menu\CSelectSlide.cs" />
<Compile Include="Menu\CProgressBar.cs" />
<Compile Include="Menu\CStatic.cs" />
<Compile Include="Menu\CText.cs" />
<Compile Include="Draw\CTextureRef.cs" />