Small improvements for 3 screens (#934)
* Improve profile and player selection screens - Ask before deleting a profile, Delete only removes a character while editing the name - Ask to save or discard unsaved profile changes when leaving the profile screen - Restore the previous name with Escape and prevent empty profile names - Stop the webcam when leaving the profile screen and discard snapshots on avatar change - Show inactive profiles dimmed in the profile screen - Play the missing mic/profile warning each time the player selection is shown - Fix crash when clicking a profile after removing a player with Delete in fast selection - Keep the duet part selection when profiles are reloaded - Only save the player number when it has changed * Use party mode selection look in statistics screens - Tiles and selection use the ButtonTile skin like the party mode selection, the selected tile uses the selection color of the skin - The detail list uses the CoverTextBackground skin, inner cards and row stripes the ButtonTile skin - More space between the title and the columns of the best list - Show the date in the recently sung list left aligned inside the list * Changelog * Improve sing screen and redesign pause menu - Fix jumping to the old pause position after restarting or skipping a song in vocals mode - Keep name and avatar hidden for players without a valid profile - Show the placeholder avatar for profiles without avatar image - Hide player information and rating popups during the start countdown - Fix pause select slides not being shown or hidden - Show "no more songs" only when Ctrl+S is pressed - Select "Continue" when opening the pause menu with Escape - Darken the game behind the pause menu - Pause buttons as vertical list with icons, hidden buttons leave no gaps (visible buttons are placed in the slots of all pause buttons) - New PauseButton skin with rounded corners for wide buttons, used for the pause buttons and the vocals volume selection - Larger pause title centered above the pause panels - Info panel with cover, title, artist, song progress and player scores - Vocals volume selection with icon and centered caption in the full width of the info panel, showing five values - Pause panels and icons are animated together with the pause buttons --------- Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
This commit is contained in:
1 parent
c8213bdcda
commit
2cdd30c6fc
22 files changed
+1324
-429
No files matched your search
@@ -7,6 +7,9 @@
|
||||
<string name="TR_BUTTON_SAVE">Save</string>
|
||||
<string name="TR_BUTTON_BACK">Back</string>
|
||||
<string name="TR_BUTTON_START">Start</string>
|
||||
<string name="TR_BUTTON_YES">Yes</string>
|
||||
<string name="TR_BUTTON_NO">No</string>
|
||||
<string name="TR_BUTTON_CANCEL">Cancel</string>
|
||||
<string name="TR_DEBUG_AUDIO_STREAMS">Audio streams</string>
|
||||
<string name="TR_DEBUG_VIDEO_STREAMS">Video streams</string>
|
||||
<string name="TR_DEBUG_TEXTURES">Textures</string>
|
||||
@@ -280,6 +283,8 @@
|
||||
<string name="TR_SCREENPROFILES_BUTTON_SAVESNAPSHOT">Save snapshot</string>
|
||||
<string name="TR_SCREENPROFILES_BUTTON_DISCARDSNAPSHOT">Delete snapshot</string>
|
||||
<string name="TR_SCREENPROFILES_BUTTON_WEBCAM">Webcam</string>
|
||||
<string name="TR_SCREENPROFILES_POPUP_DELETE">Do you really want to delete the profile %s?</string>
|
||||
<string name="TR_SCREENPROFILES_POPUP_UNSAVED">Do you want to save your changes?</string>
|
||||
<string name="TR_SCREENO_OPTIONS">Options</string>
|
||||
<string name="TR_SCREENO_BUTTON_GAME">Game</string>
|
||||
<string name="TR_SCREENO_BUTTON_SOUND">Sound</string>
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
ScreenProfiles
|
||||
++++++++++
|
||||
Version 5:
|
||||
Add: <StaticPopupBG>, <TextPopup>, <ButtonPopupYes>, <ButtonPopupNo>, <ButtonPopupCancel> (popup to confirm deleting a profile and to save changes before leaving)
|
||||
|
||||
++++++++++
|
||||
Version 4:
|
||||
Add: <NameSelection>
|
||||
|
||||
@@ -1,4 +1,30 @@
|
||||
ScreenSing
|
||||
+++++++++
|
||||
Version 16
|
||||
|
||||
Add:
|
||||
<StaticPauseIconContinue>, <StaticPauseIconSkip>, <StaticPauseIconRestartRound>, <StaticPauseIconRestartGame>, <StaticPauseIconCancel> Icons of the pause buttons, they move with their button and use the text color of their button
|
||||
<StaticPauseCover> Cover of the current song
|
||||
<StaticPauseTimeLineProgress> Progress of the current song, the width is scaled by the progress
|
||||
<StaticPauseVocalsIcon> Only visible in vocals audio mode, keeps its horizontal distance to the left edge of <TextPauseVocalsVolume>
|
||||
<StaticPauseAvatarP1> - <StaticPauseAvatarP6>
|
||||
<TextPauseArtist>
|
||||
<TextPauseTimeCurrent>
|
||||
<TextPauseTimeRemaining>
|
||||
<TextPauseNameP1> - <TextPauseNameP6>
|
||||
<TextPauseScoreP1> - <TextPauseScoreP6>
|
||||
|
||||
Change:
|
||||
Visible pause buttons are placed without gaps in the slots of all pause buttons (sorted by Y, then X) in the order Continue, Skip, RestartRound, RestartGame, Cancel
|
||||
<TextPauseSongName> Shows only the title of the song
|
||||
Statics starting with "StaticPause" that do not cover the whole screen are animated together with the pause buttons
|
||||
|
||||
+++++++++
|
||||
Version 15
|
||||
|
||||
Add:
|
||||
<StaticPauseDim> Darkens the game behind the pause menu (all statics starting with "StaticPause" are shown in the pause menu)
|
||||
|
||||
+++++++++
|
||||
Version 14
|
||||
|
||||
|
||||
@@ -1,8 +1,16 @@
|
||||
ScreenStatistics
|
||||
|
||||
++++++++++
|
||||
Version 2:
|
||||
|
||||
Change (same look as the party mode selection):
|
||||
<StaticTile1> to <StaticTile4> use the skin ButtonTile with ButtonMainColor
|
||||
<StaticTileSelection> uses the skin ButtonTile with ButtonSelColor and replaces the selected tile (like <StaticTileSelected> in ScreenParty)
|
||||
<StaticBestColumn1> to <StaticBestColumn3> use the skin ButtonTile with ButtonMainColor
|
||||
Columns of the best list (<StaticBestColumn$N$>, <StaticBestMedal$N$$M$>, <TextDifficulty$N$>, <TextBestName$N$$M$>, <TextBestScore$N$$M$>) moved 20 pixels down
|
||||
|
||||
++++++++++
|
||||
Version 1:
|
||||
(2026 Oct 16)
|
||||
|
||||
New screen: statistics dashboard with four tiles (overview, recently sung, best list per difficulty, players)
|
||||
Help text <TextHint> at the bottom of the screen
|
||||
@@ -1,5 +1,13 @@
|
||||
ScreenStatisticsDetail
|
||||
|
||||
++++++++++
|
||||
Version 2:
|
||||
(2026 Oct 18)
|
||||
|
||||
Change (same look as the party mode selection):
|
||||
<StaticList> uses the skin CoverTextBackground with StaticColorAlpha
|
||||
<StaticRowStripe$N$> use the skin ButtonTile with ButtonMainColor
|
||||
|
||||
++++++++++
|
||||
Version 1:
|
||||
(2026 Oct 16)
|
||||
|
||||
@@ -382,6 +382,7 @@
|
||||
<NoAvatar>NoAvatar.png</NoAvatar>
|
||||
<SongMenu>SongMenu.png</SongMenu>
|
||||
<PauseBG>PauseBG.png</PauseBG>
|
||||
<PauseButton>PauseButton.png</PauseButton>
|
||||
<EnergyBeam>EnergyBeam.png</EnergyBeam>
|
||||
<SearchBar>SearchBar.png</SearchBar>
|
||||
<PlaylistBG>PlaylistBG.png</PlaylistBG>
|
||||
|
||||
@@ -382,6 +382,7 @@
|
||||
<NoAvatar>NoAvatar.png</NoAvatar>
|
||||
<SongMenu>SongMenu.png</SongMenu>
|
||||
<PauseBG>PauseBG.png</PauseBG>
|
||||
<PauseButton>PauseButton.png</PauseButton>
|
||||
<EnergyBeam>EnergyBeam.png</EnergyBeam>
|
||||
<SearchBar>SearchBar.png</SearchBar>
|
||||
<PlaylistBG>PlaylistBG.png</PlaylistBG>
|
||||
|
||||
@@ -382,6 +382,7 @@
|
||||
<NoAvatar>NoAvatar.png</NoAvatar>
|
||||
<SongMenu>SongMenu.png</SongMenu>
|
||||
<PauseBG>PauseBG.png</PauseBG>
|
||||
<PauseButton>PauseButton.png</PauseButton>
|
||||
<EnergyBeam>EnergyBeam.png</EnergyBeam>
|
||||
<SearchBar>SearchBar.png</SearchBar>
|
||||
<PlaylistBG>PlaylistBG.png</PlaylistBG>
|
||||
|
||||
@@ -382,6 +382,7 @@
|
||||
<NoAvatar>NoAvatar.png</NoAvatar>
|
||||
<SongMenu>SongMenu.png</SongMenu>
|
||||
<PauseBG>PauseBG.png</PauseBG>
|
||||
<PauseButton>PauseButton.png</PauseButton>
|
||||
<EnergyBeam>EnergyBeam.png</EnergyBeam>
|
||||
<SearchBar>SearchBar.png</SearchBar>
|
||||
<PlaylistBG>PlaylistBG.png</PlaylistBG>
|
||||
|
||||
@@ -382,6 +382,7 @@
|
||||
<NoAvatar>NoAvatar.png</NoAvatar>
|
||||
<SongMenu>SongMenu.png</SongMenu>
|
||||
<PauseBG>PauseBG.png</PauseBG>
|
||||
<PauseButton>PauseButton.png</PauseButton>
|
||||
<EnergyBeam>EnergyBeam.png</EnergyBeam>
|
||||
<SearchBar>SearchBar.png</SearchBar>
|
||||
<PlaylistBG>PlaylistBG.png</PlaylistBG>
|
||||
|
||||
@@ -382,6 +382,7 @@
|
||||
<NoAvatar>NoAvatar.png</NoAvatar>
|
||||
<SongMenu>SongMenu.png</SongMenu>
|
||||
<PauseBG>PauseBG.png</PauseBG>
|
||||
<PauseButton>PauseButton.png</PauseButton>
|
||||
<EnergyBeam>EnergyBeam.png</EnergyBeam>
|
||||
<SearchBar>SearchBar.png</SearchBar>
|
||||
<PlaylistBG>PlaylistBG.png</PlaylistBG>
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 717 B |
@@ -2,7 +2,7 @@
|
||||
<Screen xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<Informations>
|
||||
<ScreenName>ScreenProfiles</ScreenName>
|
||||
<ScreenVersion>4</ScreenVersion>
|
||||
<ScreenVersion>5</ScreenVersion>
|
||||
</Informations>
|
||||
<Backgrounds>
|
||||
<Background Name="Background1">
|
||||
@@ -36,6 +36,17 @@
|
||||
<Z>-1</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPopupBG">
|
||||
<Skin>PopupBG</Skin>
|
||||
<Color Name="StaticColor" />
|
||||
<Rect>
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<W>1920</W>
|
||||
<H>1080</H>
|
||||
<Z>-10</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
</Statics>
|
||||
<Texts>
|
||||
<Text Name="TextTitle">
|
||||
@@ -122,6 +133,20 @@
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_SCREENPROFILES_ACTIVE</Text>
|
||||
</Text>
|
||||
<Text Name="TextPopup">
|
||||
<X>960</X>
|
||||
<Y>405</Y>
|
||||
<Z>-11</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>900</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
</Texts>
|
||||
<Buttons>
|
||||
<Button Name="ButtonPlayerName">
|
||||
@@ -415,6 +440,111 @@
|
||||
<Space>15</Space>
|
||||
</SelReflection>
|
||||
</Button>
|
||||
<Button Name="ButtonPopupYes">
|
||||
<Skin>Button</Skin>
|
||||
<SkinSelected>Button</SkinSelected>
|
||||
<Rect>
|
||||
<X>547.5</X>
|
||||
<Y>540</Y>
|
||||
<W>225</W>
|
||||
<H>75</H>
|
||||
<Z>-11</Z>
|
||||
</Rect>
|
||||
<Color Name="ButtonColor" />
|
||||
<SelColor Name="ButtonSelColor" />
|
||||
<Text Name="Text">
|
||||
<X>112.5</X>
|
||||
<Y>18</Y>
|
||||
<Z>0</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>213</MaxW>
|
||||
<Color Name="ButtonTextColor" />
|
||||
<SelColor Name="ButtonTextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_BUTTON_YES</Text>
|
||||
</Text>
|
||||
<Reflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</Reflection>
|
||||
<SelReflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</SelReflection>
|
||||
</Button>
|
||||
<Button Name="ButtonPopupNo">
|
||||
<Skin>Button</Skin>
|
||||
<SkinSelected>Button</SkinSelected>
|
||||
<Rect>
|
||||
<X>847.5</X>
|
||||
<Y>540</Y>
|
||||
<W>225</W>
|
||||
<H>75</H>
|
||||
<Z>-11</Z>
|
||||
</Rect>
|
||||
<Color Name="ButtonColor" />
|
||||
<SelColor Name="ButtonSelColor" />
|
||||
<Text Name="Text">
|
||||
<X>112.5</X>
|
||||
<Y>18</Y>
|
||||
<Z>0</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>213</MaxW>
|
||||
<Color Name="ButtonTextColor" />
|
||||
<SelColor Name="ButtonTextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_BUTTON_NO</Text>
|
||||
</Text>
|
||||
<Reflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</Reflection>
|
||||
<SelReflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</SelReflection>
|
||||
</Button>
|
||||
<Button Name="ButtonPopupCancel">
|
||||
<Skin>Button</Skin>
|
||||
<SkinSelected>Button</SkinSelected>
|
||||
<Rect>
|
||||
<X>1147.5</X>
|
||||
<Y>540</Y>
|
||||
<W>225</W>
|
||||
<H>75</H>
|
||||
<Z>-11</Z>
|
||||
</Rect>
|
||||
<Color Name="ButtonColor" />
|
||||
<SelColor Name="ButtonSelColor" />
|
||||
<Text Name="Text">
|
||||
<X>112.5</X>
|
||||
<Y>18</Y>
|
||||
<Z>0</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>213</MaxW>
|
||||
<Color Name="ButtonTextColor" />
|
||||
<SelColor Name="ButtonTextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_BUTTON_CANCEL</Text>
|
||||
</Text>
|
||||
<Reflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</Reflection>
|
||||
<SelReflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</SelReflection>
|
||||
</Button>
|
||||
</Buttons>
|
||||
<SongMenus />
|
||||
<Lyrics />
|
||||
|
||||
@@ -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>14</ScreenVersion>
|
||||
<ScreenVersion>16</ScreenVersion>
|
||||
</Informations>
|
||||
<Backgrounds>
|
||||
<Background Name="Background1">
|
||||
@@ -169,6 +169,22 @@
|
||||
<Z>0</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPauseDim">
|
||||
<Skin />
|
||||
<Color>
|
||||
<R>0</R>
|
||||
<G>0</G>
|
||||
<B>0</B>
|
||||
<A>0.55</A>
|
||||
</Color>
|
||||
<Rect>
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<W>1920</W>
|
||||
<H>1080</H>
|
||||
<Z>-2.05</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPauseBG">
|
||||
<Skin>PauseBG</Skin>
|
||||
<Color Name="Visible" />
|
||||
@@ -180,6 +196,195 @@
|
||||
<Z>-2.1</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPauseMenuPanel">
|
||||
<Skin>CoverTextBackground</Skin>
|
||||
<Color Name="StaticColorAlpha" />
|
||||
<Rect>
|
||||
<X>105</X>
|
||||
<Y>240</Y>
|
||||
<W>660</W>
|
||||
<H>720</H>
|
||||
<Z>-2.105</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPauseInfoPanel">
|
||||
<Skin>CoverTextBackground</Skin>
|
||||
<Color Name="StaticColorAlpha" />
|
||||
<Rect>
|
||||
<X>855</X>
|
||||
<Y>240</Y>
|
||||
<W>960</W>
|
||||
<H>720</H>
|
||||
<Z>-2.105</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPauseIconContinue">
|
||||
<Skin>PlayIcon</Skin>
|
||||
<Color Name="ButtonTextColor" />
|
||||
<Rect>
|
||||
<X>157.5</X>
|
||||
<Y>285.5</Y>
|
||||
<W>44</W>
|
||||
<H>44</H>
|
||||
<Z>-2.13</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPauseIconSkip">
|
||||
<Skin>NextIcon</Skin>
|
||||
<Color Name="ButtonTextColor" />
|
||||
<Rect>
|
||||
<X>157.5</X>
|
||||
<Y>375.5</Y>
|
||||
<W>44</W>
|
||||
<H>44</H>
|
||||
<Z>-2.13</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPauseIconRestartRound">
|
||||
<Skin>RepeatIcon</Skin>
|
||||
<Color Name="ButtonTextColor" />
|
||||
<Rect>
|
||||
<X>157.5</X>
|
||||
<Y>465.5</Y>
|
||||
<W>44</W>
|
||||
<H>44</H>
|
||||
<Z>-2.13</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPauseIconRestartGame">
|
||||
<Skin>RepeatIcon</Skin>
|
||||
<Color Name="ButtonTextColor" />
|
||||
<Rect>
|
||||
<X>157.5</X>
|
||||
<Y>555.5</Y>
|
||||
<W>44</W>
|
||||
<H>44</H>
|
||||
<Z>-2.13</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPauseIconCancel">
|
||||
<Skin>CloseIcon</Skin>
|
||||
<Color Name="ButtonTextColor" />
|
||||
<Rect>
|
||||
<X>157.5</X>
|
||||
<Y>645.5</Y>
|
||||
<W>44</W>
|
||||
<H>44</H>
|
||||
<Z>-2.13</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPauseCover">
|
||||
<Skin />
|
||||
<Color Name="Visible" />
|
||||
<Rect>
|
||||
<X>900</X>
|
||||
<Y>285</Y>
|
||||
<W>180</W>
|
||||
<H>180</H>
|
||||
<Z>-2.11</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPauseTimeLine">
|
||||
<Skin>TimeLine</Skin>
|
||||
<Color Name="TimeBar">
|
||||
<A>0.2</A>
|
||||
</Color>
|
||||
<Rect>
|
||||
<X>900</X>
|
||||
<Y>490</Y>
|
||||
<W>870</W>
|
||||
<H>6</H>
|
||||
<Z>-2.11</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPauseTimeLineProgress">
|
||||
<Skin>TimeLine</Skin>
|
||||
<Color Name="TimeBar" />
|
||||
<Rect>
|
||||
<X>900</X>
|
||||
<Y>490</Y>
|
||||
<W>870</W>
|
||||
<H>6</H>
|
||||
<Z>-2.12</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPauseAvatarP1">
|
||||
<Skin />
|
||||
<Color Name="StaticAvatarColor" />
|
||||
<Rect>
|
||||
<X>900</X>
|
||||
<Y>560</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>-2.11</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPauseAvatarP2">
|
||||
<Skin />
|
||||
<Color Name="StaticAvatarColor" />
|
||||
<Rect>
|
||||
<X>1350</X>
|
||||
<Y>560</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>-2.11</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPauseAvatarP3">
|
||||
<Skin />
|
||||
<Color Name="StaticAvatarColor" />
|
||||
<Rect>
|
||||
<X>900</X>
|
||||
<Y>630</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>-2.11</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPauseAvatarP4">
|
||||
<Skin />
|
||||
<Color Name="StaticAvatarColor" />
|
||||
<Rect>
|
||||
<X>1350</X>
|
||||
<Y>630</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>-2.11</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPauseAvatarP5">
|
||||
<Skin />
|
||||
<Color Name="StaticAvatarColor" />
|
||||
<Rect>
|
||||
<X>900</X>
|
||||
<Y>700</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>-2.11</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPauseAvatarP6">
|
||||
<Skin />
|
||||
<Color Name="StaticAvatarColor" />
|
||||
<Rect>
|
||||
<X>1350</X>
|
||||
<Y>700</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>-2.11</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticPauseVocalsIcon">
|
||||
<Skin>VocalsIcon</Skin>
|
||||
<Color Name="ButtonTextColor" />
|
||||
<Rect>
|
||||
<X>1109</X>
|
||||
<Y>784</Y>
|
||||
<W>44</W>
|
||||
<H>44</H>
|
||||
<Z>-2.11</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticScoreP1N1">
|
||||
<Skin />
|
||||
<Color Name="Invisible" />
|
||||
@@ -698,9 +903,9 @@
|
||||
<Text /></Text>
|
||||
<Text Name="TextPause">
|
||||
<X>960</X>
|
||||
<Y>675</Y>
|
||||
<Y>55</Y>
|
||||
<Z>-2.11</Z>
|
||||
<H>150</H>
|
||||
<H>130</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color Name="TextPauseColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
@@ -711,31 +916,241 @@
|
||||
<Text>TR_SCREENSING_PAUSE</Text>
|
||||
</Text>
|
||||
<Text Name="TextPauseSongName">
|
||||
<X>960</X>
|
||||
<Y>15</Y>
|
||||
<X>1110</X>
|
||||
<Y>310</Y>
|
||||
<Z>-2.11</Z>
|
||||
<H>60</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color Name="White" />
|
||||
<SelColor Name="White" />
|
||||
<Align>Center</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Normal</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextPauseVocalsVolume">
|
||||
<X>217.5</X>
|
||||
<Y>818</Y>
|
||||
<Z>-2.11</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>520</MaxW>
|
||||
<H>48</H>
|
||||
<MaxW>660</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextPauseArtist">
|
||||
<X>1110</X>
|
||||
<Y>370</Y>
|
||||
<Z>-2.11</Z>
|
||||
<H>36</H>
|
||||
<MaxW>660</MaxW>
|
||||
<Color Name="TextColorAlpha" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Normal</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextPauseTimeCurrent">
|
||||
<X>900</X>
|
||||
<Y>508</Y>
|
||||
<Z>-2.11</Z>
|
||||
<H>30</H>
|
||||
<MaxW>300</MaxW>
|
||||
<Color Name="TextColorAlpha" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Normal</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextPauseTimeRemaining">
|
||||
<X>1770</X>
|
||||
<Y>508</Y>
|
||||
<Z>-2.11</Z>
|
||||
<H>30</H>
|
||||
<MaxW>300</MaxW>
|
||||
<Color Name="TextColorAlpha" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Right</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Normal</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextPauseNameP1">
|
||||
<X>975</X>
|
||||
<Y>572</Y>
|
||||
<Z>-2.11</Z>
|
||||
<H>36</H>
|
||||
<MaxW>240</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextPauseScoreP1">
|
||||
<X>1320</X>
|
||||
<Y>572</Y>
|
||||
<Z>-2.11</Z>
|
||||
<H>36</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color Name="Player1" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Right</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextPauseNameP2">
|
||||
<X>1425</X>
|
||||
<Y>572</Y>
|
||||
<Z>-2.11</Z>
|
||||
<H>36</H>
|
||||
<MaxW>240</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextPauseScoreP2">
|
||||
<X>1770</X>
|
||||
<Y>572</Y>
|
||||
<Z>-2.11</Z>
|
||||
<H>36</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color Name="Player2" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Right</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextPauseNameP3">
|
||||
<X>975</X>
|
||||
<Y>642</Y>
|
||||
<Z>-2.11</Z>
|
||||
<H>36</H>
|
||||
<MaxW>240</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextPauseScoreP3">
|
||||
<X>1320</X>
|
||||
<Y>642</Y>
|
||||
<Z>-2.11</Z>
|
||||
<H>36</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color Name="Player3" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Right</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextPauseNameP4">
|
||||
<X>1425</X>
|
||||
<Y>642</Y>
|
||||
<Z>-2.11</Z>
|
||||
<H>36</H>
|
||||
<MaxW>240</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextPauseScoreP4">
|
||||
<X>1770</X>
|
||||
<Y>642</Y>
|
||||
<Z>-2.11</Z>
|
||||
<H>36</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color Name="Player4" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Right</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextPauseNameP5">
|
||||
<X>975</X>
|
||||
<Y>712</Y>
|
||||
<Z>-2.11</Z>
|
||||
<H>36</H>
|
||||
<MaxW>240</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextPauseScoreP5">
|
||||
<X>1320</X>
|
||||
<Y>712</Y>
|
||||
<Z>-2.11</Z>
|
||||
<H>36</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color Name="Player5" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Right</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextPauseNameP6">
|
||||
<X>1425</X>
|
||||
<Y>712</Y>
|
||||
<Z>-2.11</Z>
|
||||
<H>36</H>
|
||||
<MaxW>240</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextPauseScoreP6">
|
||||
<X>1770</X>
|
||||
<Y>712</Y>
|
||||
<Z>-2.11</Z>
|
||||
<H>36</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color Name="Player6" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Right</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextPauseVocalsVolume">
|
||||
<X>1335</X>
|
||||
<Y>786</Y>
|
||||
<Z>-2.11</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>810</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_SCREENSING_VOCALSVOLUME</Text>
|
||||
</Text>
|
||||
<Text Name="TextDuetName1">
|
||||
@@ -1367,180 +1782,140 @@
|
||||
<Text /></Text>
|
||||
</Texts>
|
||||
<Buttons>
|
||||
<Button Name="ButtonCancel">
|
||||
<Skin>Button</Skin>
|
||||
<SkinSelected>Button</SkinSelected>
|
||||
<Rect>
|
||||
<X>1477.5</X>
|
||||
<Y>900</Y>
|
||||
<W>225</W>
|
||||
<H>75</H>
|
||||
<Z>-2.11</Z>
|
||||
</Rect>
|
||||
<Color Name="ButtonColor" />
|
||||
<SelColor Name="ButtonSelColor" />
|
||||
<Text Name="Text">
|
||||
<X>112.5</X>
|
||||
<Y>18</Y>
|
||||
<Z>0</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>213</MaxW>
|
||||
<Color Name="ButtonTextColor" />
|
||||
<SelColor Name="ButtonTextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_SCREENSING_BUTTON_CANCEL</Text>
|
||||
</Text>
|
||||
<Reflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</Reflection>
|
||||
<SelReflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</SelReflection>
|
||||
</Button>
|
||||
<Button Name="ButtonContinue">
|
||||
<Skin>Button</Skin>
|
||||
<SkinSelected>Button</SkinSelected>
|
||||
<Skin>PauseButton</Skin>
|
||||
<SkinSelected>PauseButton</SkinSelected>
|
||||
<Rect>
|
||||
<X>217.5</X>
|
||||
<Y>900</Y>
|
||||
<W>225</W>
|
||||
<X>135</X>
|
||||
<Y>270</Y>
|
||||
<W>600</W>
|
||||
<H>75</H>
|
||||
<Z>-2.11</Z>
|
||||
</Rect>
|
||||
<Color Name="ButtonColor" />
|
||||
<SelColor Name="ButtonSelColor" />
|
||||
<Text Name="Text">
|
||||
<X>112.5</X>
|
||||
<Y>18</Y>
|
||||
<X>90</X>
|
||||
<Y>17</Y>
|
||||
<Z>0</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>213</MaxW>
|
||||
<MaxW>480</MaxW>
|
||||
<Color Name="ButtonTextColor" />
|
||||
<SelColor Name="ButtonTextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_SCREENSING_BUTTON_CONTINUE</Text>
|
||||
</Text>
|
||||
<Reflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</Reflection>
|
||||
<SelReflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</SelReflection>
|
||||
</Button>
|
||||
<Button Name="ButtonSkip">
|
||||
<Skin>Button</Skin>
|
||||
<SkinSelected>Button</SkinSelected>
|
||||
<Skin>PauseButton</Skin>
|
||||
<SkinSelected>PauseButton</SkinSelected>
|
||||
<Rect>
|
||||
<X>532.5</X>
|
||||
<Y>900</Y>
|
||||
<W>225</W>
|
||||
<X>135</X>
|
||||
<Y>360</Y>
|
||||
<W>600</W>
|
||||
<H>75</H>
|
||||
<Z>-2.11</Z>
|
||||
</Rect>
|
||||
<Color Name="ButtonColor" />
|
||||
<SelColor Name="ButtonSelColor" />
|
||||
<Text Name="Text">
|
||||
<X>112.5</X>
|
||||
<Y>18</Y>
|
||||
<X>90</X>
|
||||
<Y>17</Y>
|
||||
<Z>0</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>213</MaxW>
|
||||
<MaxW>480</MaxW>
|
||||
<Color Name="ButtonTextColor" />
|
||||
<SelColor Name="ButtonTextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_SCREENSING_BUTTON_SKIP</Text>
|
||||
</Text>
|
||||
<Reflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</Reflection>
|
||||
<SelReflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</SelReflection>
|
||||
</Button>
|
||||
<Button Name="ButtonRestartRound">
|
||||
<Skin>Button</Skin>
|
||||
<SkinSelected>Button</SkinSelected>
|
||||
<Skin>PauseButton</Skin>
|
||||
<SkinSelected>PauseButton</SkinSelected>
|
||||
<Rect>
|
||||
<X>1162.5</X>
|
||||
<Y>900</Y>
|
||||
<W>225</W>
|
||||
<X>135</X>
|
||||
<Y>450</Y>
|
||||
<W>600</W>
|
||||
<H>75</H>
|
||||
<Z>-2.11</Z>
|
||||
</Rect>
|
||||
<Color Name="ButtonColor" />
|
||||
<SelColor Name="ButtonSelColor" />
|
||||
<Text Name="Text">
|
||||
<X>112.5</X>
|
||||
<Y>18</Y>
|
||||
<X>90</X>
|
||||
<Y>17</Y>
|
||||
<Z>0</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>213</MaxW>
|
||||
<MaxW>480</MaxW>
|
||||
<Color Name="ButtonTextColor" />
|
||||
<SelColor Name="ButtonTextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_SCREENSING_BUTTON_RESTART_ROUND</Text>
|
||||
</Text>
|
||||
<Reflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</Reflection>
|
||||
<SelReflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</SelReflection>
|
||||
</Button>
|
||||
<Button Name="ButtonRestartGame">
|
||||
<Skin>Button</Skin>
|
||||
<SkinSelected>Button</SkinSelected>
|
||||
<Skin>PauseButton</Skin>
|
||||
<SkinSelected>PauseButton</SkinSelected>
|
||||
<Rect>
|
||||
<X>847.5</X>
|
||||
<Y>900</Y>
|
||||
<W>225</W>
|
||||
<X>135</X>
|
||||
<Y>540</Y>
|
||||
<W>600</W>
|
||||
<H>75</H>
|
||||
<Z>-2.11</Z>
|
||||
</Rect>
|
||||
<Color Name="ButtonColor" />
|
||||
<SelColor Name="ButtonSelColor" />
|
||||
<Text Name="Text">
|
||||
<X>112.5</X>
|
||||
<Y>18</Y>
|
||||
<X>90</X>
|
||||
<Y>17</Y>
|
||||
<Z>0</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>213</MaxW>
|
||||
<MaxW>480</MaxW>
|
||||
<Color Name="ButtonTextColor" />
|
||||
<SelColor Name="ButtonTextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_SCREENSING_BUTTON_RESTART_GAME</Text>
|
||||
</Text>
|
||||
<Reflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</Reflection>
|
||||
<SelReflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</SelReflection>
|
||||
</Button>
|
||||
<Button Name="ButtonCancel">
|
||||
<Skin>PauseButton</Skin>
|
||||
<SkinSelected>PauseButton</SkinSelected>
|
||||
<Rect>
|
||||
<X>135</X>
|
||||
<Y>630</Y>
|
||||
<W>600</W>
|
||||
<H>75</H>
|
||||
<Z>-2.11</Z>
|
||||
</Rect>
|
||||
<Color Name="ButtonColor" />
|
||||
<SelColor Name="ButtonSelColor" />
|
||||
<Text Name="Text">
|
||||
<X>90</X>
|
||||
<Y>17</Y>
|
||||
<Z>0</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>480</MaxW>
|
||||
<Color Name="ButtonTextColor" />
|
||||
<SelColor Name="ButtonTextSelColor" />
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_SCREENSING_BUTTON_CANCEL</Text>
|
||||
</Text>
|
||||
</Button>
|
||||
</Buttons>
|
||||
<SongMenus />
|
||||
@@ -1614,43 +1989,43 @@
|
||||
</Lyrics>
|
||||
<SelectSlides>
|
||||
<SelectSlide Name="SelectSlidePauseVocalsVolume">
|
||||
<Skin />
|
||||
<Skin>PauseButton</Skin>
|
||||
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
|
||||
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
|
||||
<SkinSelected>SelectSlide</SkinSelected>
|
||||
<SkinSelected>PauseButton</SkinSelected>
|
||||
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
|
||||
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
|
||||
<Rect>
|
||||
<X>752</X>
|
||||
<Y>820</Y>
|
||||
<W>958</W>
|
||||
<H>40</H>
|
||||
<X>900</X>
|
||||
<Y>855</Y>
|
||||
<W>870</W>
|
||||
<H>75</H>
|
||||
<Z>-2.11</Z>
|
||||
</Rect>
|
||||
<RectArrowLeft>
|
||||
<X>757.5</X>
|
||||
<Y>822.5</Y>
|
||||
<W>35</W>
|
||||
<H>35</H>
|
||||
<X>906</X>
|
||||
<Y>868.5</Y>
|
||||
<W>48</W>
|
||||
<H>48</H>
|
||||
<Z>-2.11</Z>
|
||||
</RectArrowLeft>
|
||||
<RectArrowRight>
|
||||
<X>1667.5</X>
|
||||
<Y>822.5</Y>
|
||||
<W>35</W>
|
||||
<H>35</H>
|
||||
<X>1716</X>
|
||||
<Y>868.5</Y>
|
||||
<W>48</W>
|
||||
<H>48</H>
|
||||
<Z>-2.11</Z>
|
||||
</RectArrowRight>
|
||||
<Color Name="SelectSlideColor" />
|
||||
<SelColor Name="SelectSlideSelColor" />
|
||||
<Color Name="ButtonColor" />
|
||||
<SelColor Name="ButtonSelColor" />
|
||||
<ArrowColor Name="ArrowColor" />
|
||||
<ArrowSelColor Name="ArrowSelColor" />
|
||||
<TextColor Name="TextColorAlpha" />
|
||||
<TextSelColor Name="TextSelColor" />
|
||||
<TextColor Name="ButtonTextColor" />
|
||||
<TextSelColor Name="ButtonTextSelColor" />
|
||||
<TextH>40.5</TextH>
|
||||
<TextRelativeX>75</TextRelativeX>
|
||||
<TextRelativeX>60</TextRelativeX>
|
||||
<TextRelativeY>0</TextRelativeY>
|
||||
<TextMaxW>300</TextMaxW>
|
||||
<TextMaxW>140</TextMaxW>
|
||||
<TextFont>Outline</TextFont>
|
||||
<TextStyle>Bold</TextStyle>
|
||||
<NumVisible>5</NumVisible>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<Screen xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<Informations>
|
||||
<ScreenName>ScreenStatistics</ScreenName>
|
||||
<ScreenVersion>1</ScreenVersion>
|
||||
<ScreenVersion>2</ScreenVersion>
|
||||
</Informations>
|
||||
<Backgrounds>
|
||||
<Background Name="Background1">
|
||||
@@ -26,13 +26,8 @@
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticTile1">
|
||||
<Skin />
|
||||
<Color>
|
||||
<R>0</R>
|
||||
<G>0</G>
|
||||
<B>0</B>
|
||||
<A>0.45</A>
|
||||
</Color>
|
||||
<Skin>ButtonTile</Skin>
|
||||
<Color Name="ButtonMainColor" />
|
||||
<Rect>
|
||||
<X>90</X>
|
||||
<Y>165</Y>
|
||||
@@ -42,13 +37,8 @@
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticTile2">
|
||||
<Skin />
|
||||
<Color>
|
||||
<R>0</R>
|
||||
<G>0</G>
|
||||
<B>0</B>
|
||||
<A>0.45</A>
|
||||
</Color>
|
||||
<Skin>ButtonTile</Skin>
|
||||
<Color Name="ButtonMainColor" />
|
||||
<Rect>
|
||||
<X>975</X>
|
||||
<Y>165</Y>
|
||||
@@ -58,13 +48,8 @@
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticTile3">
|
||||
<Skin />
|
||||
<Color>
|
||||
<R>0</R>
|
||||
<G>0</G>
|
||||
<B>0</B>
|
||||
<A>0.45</A>
|
||||
</Color>
|
||||
<Skin>ButtonTile</Skin>
|
||||
<Color Name="ButtonMainColor" />
|
||||
<Rect>
|
||||
<X>90</X>
|
||||
<Y>600</Y>
|
||||
@@ -74,13 +59,8 @@
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticTile4">
|
||||
<Skin />
|
||||
<Color>
|
||||
<R>0</R>
|
||||
<G>0</G>
|
||||
<B>0</B>
|
||||
<A>0.45</A>
|
||||
</Color>
|
||||
<Skin>ButtonTile</Skin>
|
||||
<Color Name="ButtonMainColor" />
|
||||
<Rect>
|
||||
<X>975</X>
|
||||
<Y>600</Y>
|
||||
@@ -90,13 +70,8 @@
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticTileSelection">
|
||||
<Skin />
|
||||
<Color>
|
||||
<R>0.2</R>
|
||||
<G>0.8</G>
|
||||
<B>0.99</B>
|
||||
<A>0.25</A>
|
||||
</Color>
|
||||
<Skin>ButtonTile</Skin>
|
||||
<Color Name="ButtonSelColor" />
|
||||
<Rect>
|
||||
<X>90</X>
|
||||
<Y>165</Y>
|
||||
@@ -150,16 +125,11 @@
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticBestColumn1">
|
||||
<Skin />
|
||||
<Color>
|
||||
<R>1</R>
|
||||
<G>1</G>
|
||||
<B>1</B>
|
||||
<A>0.07</A>
|
||||
</Color>
|
||||
<Skin>ButtonTile</Skin>
|
||||
<Color Name="ButtonMainColor" />
|
||||
<Rect>
|
||||
<X>119</X>
|
||||
<Y>658</Y>
|
||||
<Y>678</Y>
|
||||
<W>257</W>
|
||||
<H>300</H>
|
||||
<Z>0.8</Z>
|
||||
@@ -170,7 +140,7 @@
|
||||
<Color Name="Top1Color" />
|
||||
<Rect>
|
||||
<X>131</X>
|
||||
<Y>728</Y>
|
||||
<Y>748</Y>
|
||||
<W>26</W>
|
||||
<H>26</H>
|
||||
<Z>0</Z>
|
||||
@@ -181,7 +151,7 @@
|
||||
<Color Name="Top2Color" />
|
||||
<Rect>
|
||||
<X>131</X>
|
||||
<Y>806</Y>
|
||||
<Y>826</Y>
|
||||
<W>26</W>
|
||||
<H>26</H>
|
||||
<Z>0</Z>
|
||||
@@ -192,23 +162,18 @@
|
||||
<Color Name="Top3Color" />
|
||||
<Rect>
|
||||
<X>131</X>
|
||||
<Y>884</Y>
|
||||
<Y>904</Y>
|
||||
<W>26</W>
|
||||
<H>26</H>
|
||||
<Z>0</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticBestColumn2">
|
||||
<Skin />
|
||||
<Color>
|
||||
<R>1</R>
|
||||
<G>1</G>
|
||||
<B>1</B>
|
||||
<A>0.07</A>
|
||||
</Color>
|
||||
<Skin>ButtonTile</Skin>
|
||||
<Color Name="ButtonMainColor" />
|
||||
<Rect>
|
||||
<X>389</X>
|
||||
<Y>658</Y>
|
||||
<Y>678</Y>
|
||||
<W>257</W>
|
||||
<H>300</H>
|
||||
<Z>0.8</Z>
|
||||
@@ -219,7 +184,7 @@
|
||||
<Color Name="Top1Color" />
|
||||
<Rect>
|
||||
<X>401</X>
|
||||
<Y>728</Y>
|
||||
<Y>748</Y>
|
||||
<W>26</W>
|
||||
<H>26</H>
|
||||
<Z>0</Z>
|
||||
@@ -230,7 +195,7 @@
|
||||
<Color Name="Top2Color" />
|
||||
<Rect>
|
||||
<X>401</X>
|
||||
<Y>806</Y>
|
||||
<Y>826</Y>
|
||||
<W>26</W>
|
||||
<H>26</H>
|
||||
<Z>0</Z>
|
||||
@@ -241,23 +206,18 @@
|
||||
<Color Name="Top3Color" />
|
||||
<Rect>
|
||||
<X>401</X>
|
||||
<Y>884</Y>
|
||||
<Y>904</Y>
|
||||
<W>26</W>
|
||||
<H>26</H>
|
||||
<Z>0</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticBestColumn3">
|
||||
<Skin />
|
||||
<Color>
|
||||
<R>1</R>
|
||||
<G>1</G>
|
||||
<B>1</B>
|
||||
<A>0.07</A>
|
||||
</Color>
|
||||
<Skin>ButtonTile</Skin>
|
||||
<Color Name="ButtonMainColor" />
|
||||
<Rect>
|
||||
<X>659</X>
|
||||
<Y>658</Y>
|
||||
<Y>678</Y>
|
||||
<W>257</W>
|
||||
<H>300</H>
|
||||
<Z>0.8</Z>
|
||||
@@ -268,7 +228,7 @@
|
||||
<Color Name="Top1Color" />
|
||||
<Rect>
|
||||
<X>671</X>
|
||||
<Y>728</Y>
|
||||
<Y>748</Y>
|
||||
<W>26</W>
|
||||
<H>26</H>
|
||||
<Z>0</Z>
|
||||
@@ -279,7 +239,7 @@
|
||||
<Color Name="Top2Color" />
|
||||
<Rect>
|
||||
<X>671</X>
|
||||
<Y>806</Y>
|
||||
<Y>826</Y>
|
||||
<W>26</W>
|
||||
<H>26</H>
|
||||
<Z>0</Z>
|
||||
@@ -290,7 +250,7 @@
|
||||
<Color Name="Top3Color" />
|
||||
<Rect>
|
||||
<X>671</X>
|
||||
<Y>884</Y>
|
||||
<Y>904</Y>
|
||||
<W>26</W>
|
||||
<H>26</H>
|
||||
<Z>0</Z>
|
||||
@@ -734,7 +694,7 @@
|
||||
</Text>
|
||||
<Text Name="TextDifficulty1">
|
||||
<X>249</X>
|
||||
<Y>668</Y>
|
||||
<Y>688</Y>
|
||||
<Z>-1</Z>
|
||||
<H>32</H>
|
||||
<MaxW>0</MaxW>
|
||||
@@ -748,7 +708,7 @@
|
||||
</Text>
|
||||
<Text Name="TextBestName11">
|
||||
<X>167</X>
|
||||
<Y>722</Y>
|
||||
<Y>742</Y>
|
||||
<Z>-1</Z>
|
||||
<H>36</H>
|
||||
<MaxW>110</MaxW>
|
||||
@@ -762,7 +722,7 @@
|
||||
</Text>
|
||||
<Text Name="TextBestScore11">
|
||||
<X>366</X>
|
||||
<Y>722</Y>
|
||||
<Y>742</Y>
|
||||
<Z>-1</Z>
|
||||
<H>36</H>
|
||||
<MaxW>0</MaxW>
|
||||
@@ -776,7 +736,7 @@
|
||||
</Text>
|
||||
<Text Name="TextBestName12">
|
||||
<X>167</X>
|
||||
<Y>800</Y>
|
||||
<Y>820</Y>
|
||||
<Z>-1</Z>
|
||||
<H>36</H>
|
||||
<MaxW>110</MaxW>
|
||||
@@ -790,7 +750,7 @@
|
||||
</Text>
|
||||
<Text Name="TextBestScore12">
|
||||
<X>366</X>
|
||||
<Y>800</Y>
|
||||
<Y>820</Y>
|
||||
<Z>-1</Z>
|
||||
<H>36</H>
|
||||
<MaxW>0</MaxW>
|
||||
@@ -804,7 +764,7 @@
|
||||
</Text>
|
||||
<Text Name="TextBestName13">
|
||||
<X>167</X>
|
||||
<Y>878</Y>
|
||||
<Y>898</Y>
|
||||
<Z>-1</Z>
|
||||
<H>36</H>
|
||||
<MaxW>110</MaxW>
|
||||
@@ -818,7 +778,7 @@
|
||||
</Text>
|
||||
<Text Name="TextBestScore13">
|
||||
<X>366</X>
|
||||
<Y>878</Y>
|
||||
<Y>898</Y>
|
||||
<Z>-1</Z>
|
||||
<H>36</H>
|
||||
<MaxW>0</MaxW>
|
||||
@@ -832,7 +792,7 @@
|
||||
</Text>
|
||||
<Text Name="TextDifficulty2">
|
||||
<X>519</X>
|
||||
<Y>668</Y>
|
||||
<Y>688</Y>
|
||||
<Z>-1</Z>
|
||||
<H>32</H>
|
||||
<MaxW>0</MaxW>
|
||||
@@ -846,7 +806,7 @@
|
||||
</Text>
|
||||
<Text Name="TextBestName21">
|
||||
<X>437</X>
|
||||
<Y>722</Y>
|
||||
<Y>742</Y>
|
||||
<Z>-1</Z>
|
||||
<H>36</H>
|
||||
<MaxW>110</MaxW>
|
||||
@@ -860,7 +820,7 @@
|
||||
</Text>
|
||||
<Text Name="TextBestScore21">
|
||||
<X>636</X>
|
||||
<Y>722</Y>
|
||||
<Y>742</Y>
|
||||
<Z>-1</Z>
|
||||
<H>36</H>
|
||||
<MaxW>0</MaxW>
|
||||
@@ -874,7 +834,7 @@
|
||||
</Text>
|
||||
<Text Name="TextBestName22">
|
||||
<X>437</X>
|
||||
<Y>800</Y>
|
||||
<Y>820</Y>
|
||||
<Z>-1</Z>
|
||||
<H>36</H>
|
||||
<MaxW>110</MaxW>
|
||||
@@ -888,7 +848,7 @@
|
||||
</Text>
|
||||
<Text Name="TextBestScore22">
|
||||
<X>636</X>
|
||||
<Y>800</Y>
|
||||
<Y>820</Y>
|
||||
<Z>-1</Z>
|
||||
<H>36</H>
|
||||
<MaxW>0</MaxW>
|
||||
@@ -902,7 +862,7 @@
|
||||
</Text>
|
||||
<Text Name="TextBestName23">
|
||||
<X>437</X>
|
||||
<Y>878</Y>
|
||||
<Y>898</Y>
|
||||
<Z>-1</Z>
|
||||
<H>36</H>
|
||||
<MaxW>110</MaxW>
|
||||
@@ -916,7 +876,7 @@
|
||||
</Text>
|
||||
<Text Name="TextBestScore23">
|
||||
<X>636</X>
|
||||
<Y>878</Y>
|
||||
<Y>898</Y>
|
||||
<Z>-1</Z>
|
||||
<H>36</H>
|
||||
<MaxW>0</MaxW>
|
||||
@@ -930,7 +890,7 @@
|
||||
</Text>
|
||||
<Text Name="TextDifficulty3">
|
||||
<X>789</X>
|
||||
<Y>668</Y>
|
||||
<Y>688</Y>
|
||||
<Z>-1</Z>
|
||||
<H>32</H>
|
||||
<MaxW>0</MaxW>
|
||||
@@ -944,7 +904,7 @@
|
||||
</Text>
|
||||
<Text Name="TextBestName31">
|
||||
<X>707</X>
|
||||
<Y>722</Y>
|
||||
<Y>742</Y>
|
||||
<Z>-1</Z>
|
||||
<H>36</H>
|
||||
<MaxW>110</MaxW>
|
||||
@@ -958,7 +918,7 @@
|
||||
</Text>
|
||||
<Text Name="TextBestScore31">
|
||||
<X>906</X>
|
||||
<Y>722</Y>
|
||||
<Y>742</Y>
|
||||
<Z>-1</Z>
|
||||
<H>36</H>
|
||||
<MaxW>0</MaxW>
|
||||
@@ -972,7 +932,7 @@
|
||||
</Text>
|
||||
<Text Name="TextBestName32">
|
||||
<X>707</X>
|
||||
<Y>800</Y>
|
||||
<Y>820</Y>
|
||||
<Z>-1</Z>
|
||||
<H>36</H>
|
||||
<MaxW>110</MaxW>
|
||||
@@ -986,7 +946,7 @@
|
||||
</Text>
|
||||
<Text Name="TextBestScore32">
|
||||
<X>906</X>
|
||||
<Y>800</Y>
|
||||
<Y>820</Y>
|
||||
<Z>-1</Z>
|
||||
<H>36</H>
|
||||
<MaxW>0</MaxW>
|
||||
@@ -1000,7 +960,7 @@
|
||||
</Text>
|
||||
<Text Name="TextBestName33">
|
||||
<X>707</X>
|
||||
<Y>878</Y>
|
||||
<Y>898</Y>
|
||||
<Z>-1</Z>
|
||||
<H>36</H>
|
||||
<MaxW>110</MaxW>
|
||||
@@ -1014,7 +974,7 @@
|
||||
</Text>
|
||||
<Text Name="TextBestScore33">
|
||||
<X>906</X>
|
||||
<Y>878</Y>
|
||||
<Y>898</Y>
|
||||
<Z>-1</Z>
|
||||
<H>36</H>
|
||||
<MaxW>0</MaxW>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<Screen xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<Informations>
|
||||
<ScreenName>ScreenStatisticsDetail</ScreenName>
|
||||
<ScreenVersion>1</ScreenVersion>
|
||||
<ScreenVersion>2</ScreenVersion>
|
||||
</Informations>
|
||||
<Backgrounds>
|
||||
<Background Name="Background1">
|
||||
@@ -26,13 +26,8 @@
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticList">
|
||||
<Skin />
|
||||
<Color>
|
||||
<R>0</R>
|
||||
<G>0</G>
|
||||
<B>0</B>
|
||||
<A>0.45</A>
|
||||
</Color>
|
||||
<Skin>CoverTextBackground</Skin>
|
||||
<Color Name="StaticColorAlpha" />
|
||||
<Rect>
|
||||
<X>90</X>
|
||||
<Y>185</Y>
|
||||
@@ -42,13 +37,8 @@
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticRowStripe1">
|
||||
<Skin />
|
||||
<Color>
|
||||
<R>1</R>
|
||||
<G>1</G>
|
||||
<B>1</B>
|
||||
<A>0.07</A>
|
||||
</Color>
|
||||
<Skin>ButtonTile</Skin>
|
||||
<Color Name="ButtonMainColor" />
|
||||
<Rect>
|
||||
<X>100</X>
|
||||
<Y>241</Y>
|
||||
@@ -58,13 +48,8 @@
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticRowStripe3">
|
||||
<Skin />
|
||||
<Color>
|
||||
<R>1</R>
|
||||
<G>1</G>
|
||||
<B>1</B>
|
||||
<A>0.07</A>
|
||||
</Color>
|
||||
<Skin>ButtonTile</Skin>
|
||||
<Color Name="ButtonMainColor" />
|
||||
<Rect>
|
||||
<X>100</X>
|
||||
<Y>361</Y>
|
||||
@@ -74,13 +59,8 @@
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticRowStripe5">
|
||||
<Skin />
|
||||
<Color>
|
||||
<R>1</R>
|
||||
<G>1</G>
|
||||
<B>1</B>
|
||||
<A>0.07</A>
|
||||
</Color>
|
||||
<Skin>ButtonTile</Skin>
|
||||
<Color Name="ButtonMainColor" />
|
||||
<Rect>
|
||||
<X>100</X>
|
||||
<Y>481</Y>
|
||||
@@ -90,13 +70,8 @@
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticRowStripe7">
|
||||
<Skin />
|
||||
<Color>
|
||||
<R>1</R>
|
||||
<G>1</G>
|
||||
<B>1</B>
|
||||
<A>0.07</A>
|
||||
</Color>
|
||||
<Skin>ButtonTile</Skin>
|
||||
<Color Name="ButtonMainColor" />
|
||||
<Rect>
|
||||
<X>100</X>
|
||||
<Y>601</Y>
|
||||
@@ -106,13 +81,8 @@
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticRowStripe9">
|
||||
<Skin />
|
||||
<Color>
|
||||
<R>1</R>
|
||||
<G>1</G>
|
||||
<B>1</B>
|
||||
<A>0.07</A>
|
||||
</Color>
|
||||
<Skin>ButtonTile</Skin>
|
||||
<Color Name="ButtonMainColor" />
|
||||
<Rect>
|
||||
<X>100</X>
|
||||
<Y>721</Y>
|
||||
@@ -122,13 +92,8 @@
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticRowStripe11">
|
||||
<Skin />
|
||||
<Color>
|
||||
<R>1</R>
|
||||
<G>1</G>
|
||||
<B>1</B>
|
||||
<A>0.07</A>
|
||||
</Color>
|
||||
<Skin>ButtonTile</Skin>
|
||||
<Color Name="ButtonMainColor" />
|
||||
<Rect>
|
||||
<X>100</X>
|
||||
<Y>841</Y>
|
||||
|
||||
@@ -266,6 +266,7 @@ namespace Vocaluxe.Screens
|
||||
//Reset all values
|
||||
_SelectingFastPlayerNr = 0;
|
||||
_SelectingKeyboardActive = false;
|
||||
_SelectingFast = false;
|
||||
_NameSelections[_NameSelection].FastSelection(false, -1);
|
||||
//Update Tiles-List
|
||||
_NameSelections[_NameSelection].UpdateList();
|
||||
@@ -363,7 +364,7 @@ namespace Vocaluxe.Screens
|
||||
_SelectingFastPlayerNr = 6;
|
||||
break;
|
||||
default:
|
||||
_UpdatePlayerNumber();
|
||||
_UpdatePlayerNumberIfChanged();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -542,7 +543,7 @@ namespace Vocaluxe.Screens
|
||||
}
|
||||
else
|
||||
{
|
||||
_UpdatePlayerNumber();
|
||||
_UpdatePlayerNumberIfChanged();
|
||||
}
|
||||
|
||||
//Update Tiles-List
|
||||
@@ -640,7 +641,7 @@ namespace Vocaluxe.Screens
|
||||
{
|
||||
if (_ProfilesChanged || _AvatarsChanged)
|
||||
{
|
||||
_LoadProfiles();
|
||||
_LoadProfiles(false);
|
||||
}
|
||||
|
||||
for (var i = 1; i <= CGame.NumPlayers; i++)
|
||||
@@ -662,9 +663,10 @@ namespace Vocaluxe.Screens
|
||||
{
|
||||
base.OnShow();
|
||||
CRecord.Start();
|
||||
_HasPlayedWarningSound = false;
|
||||
|
||||
_NameSelections[_NameSelection].Init();
|
||||
_LoadProfiles();
|
||||
_LoadProfiles(true);
|
||||
_SelectElement(_Buttons[_ButtonStart]);
|
||||
}
|
||||
|
||||
@@ -689,7 +691,7 @@ namespace Vocaluxe.Screens
|
||||
}
|
||||
}
|
||||
|
||||
private void _LoadProfiles()
|
||||
private void _LoadProfiles(bool initDuetParts)
|
||||
{
|
||||
_NameSelections[_NameSelection].UpdateList();
|
||||
|
||||
@@ -709,6 +711,7 @@ namespace Vocaluxe.Screens
|
||||
_Texts[_TextPlayer[i]].Text = CProfiles.GetPlayerName(CGame.Players[i].ProfileId, i + 1);
|
||||
if (CGame.GetNumSongs() == 1 && firstSong.IsDuet)
|
||||
{
|
||||
var duetPart = _SelectSlides[_SelectSlideDuetPlayer[i]].Selection;
|
||||
_SelectSlides[_SelectSlideDuetPlayer[i]].Clear();
|
||||
_SelectSlides[_SelectSlideDuetPlayer[i]].Visible = i + 1 <= CGame.NumPlayers;
|
||||
|
||||
@@ -717,7 +720,7 @@ namespace Vocaluxe.Screens
|
||||
_SelectSlides[_SelectSlideDuetPlayer[i]].AddValue(firstSong.Notes.VoiceNames[j]);
|
||||
}
|
||||
|
||||
_SelectSlides[_SelectSlideDuetPlayer[i]].Selection = i % 2;
|
||||
_SelectSlides[_SelectSlideDuetPlayer[i]].Selection = initDuetParts || duetPart < 0 ? i % 2 : duetPart;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -754,6 +757,14 @@ namespace Vocaluxe.Screens
|
||||
_SelectSlides[_SelectSlidePlayerNumber].Selection = CConfig.Config.Game.NumPlayers - 1;
|
||||
}
|
||||
|
||||
private void _UpdatePlayerNumberIfChanged()
|
||||
{
|
||||
if (_SelectSlides[_SelectSlidePlayerNumber].Selection + 1 != CConfig.Config.Game.NumPlayers)
|
||||
{
|
||||
_UpdatePlayerNumber();
|
||||
}
|
||||
}
|
||||
|
||||
private void _UpdatePlayerNumber()
|
||||
{
|
||||
CConfig.Config.Game.NumPlayers = _SelectSlides[_SelectSlidePlayerNumber].Selection + 1;
|
||||
|
||||
@@ -36,12 +36,19 @@ namespace Vocaluxe.Screens
|
||||
PlayerName
|
||||
}
|
||||
|
||||
enum EProfilesPopup
|
||||
{
|
||||
None,
|
||||
Delete,
|
||||
UnsavedChanges
|
||||
}
|
||||
|
||||
public class CScreenProfiles : CMenu
|
||||
{
|
||||
// Version number for theme files. Increment it, if you've changed something on the theme files!
|
||||
protected override int _ScreenVersion
|
||||
{
|
||||
get { return 4; }
|
||||
get { return 5; }
|
||||
}
|
||||
|
||||
private const string _SelectSlideProfiles = "SelectSlideProfiles";
|
||||
@@ -60,6 +67,11 @@ namespace Vocaluxe.Screens
|
||||
private const string _ButtonTakeSnapshot = "ButtonTakeSnapshot";
|
||||
private const string _NameSelection = "NameSelection";
|
||||
private const string _StaticAvatar = "StaticAvatar";
|
||||
private const string _StaticPopupBG = "StaticPopupBG";
|
||||
private const string _TextPopup = "TextPopup";
|
||||
private const string _ButtonPopupYes = "ButtonPopupYes";
|
||||
private const string _ButtonPopupNo = "ButtonPopupNo";
|
||||
private const string _ButtonPopupCancel = "ButtonPopupCancel";
|
||||
private bool _ProfilesChanged;
|
||||
private bool _AvatarsChanged;
|
||||
private bool _SelectingKeyboardActive;
|
||||
@@ -67,6 +79,9 @@ namespace Vocaluxe.Screens
|
||||
private Dictionary<int, Guid> _SelectSlideGuids = new Dictionary<int, Guid>();
|
||||
|
||||
private EEditMode _EditMode;
|
||||
private EProfilesPopup _Popup;
|
||||
private bool _UnsavedChanges;
|
||||
private string _NameBeforeEdit = string.Empty;
|
||||
|
||||
private CTextureRef _WebcamTexture;
|
||||
private Bitmap _Snapshot;
|
||||
@@ -76,9 +91,13 @@ namespace Vocaluxe.Screens
|
||||
base.Init();
|
||||
|
||||
_ThemeButtons = new string[]
|
||||
{ _ButtonPlayerName, _ButtonExit, _ButtonSave, _ButtonNew, _ButtonDelete, _ButtonWebcam, _ButtonSaveSnapshot, _ButtonDiscardSnapshot, _ButtonTakeSnapshot };
|
||||
{
|
||||
_ButtonPlayerName, _ButtonExit, _ButtonSave, _ButtonNew, _ButtonDelete, _ButtonWebcam, _ButtonSaveSnapshot, _ButtonDiscardSnapshot, _ButtonTakeSnapshot,
|
||||
_ButtonPopupYes, _ButtonPopupNo, _ButtonPopupCancel
|
||||
};
|
||||
_ThemeSelectSlides = new string[] { _SelectSlideProfiles, _SelectSlideDifficulty, _SelectSlideAvatars, _SelectSlideUserRole, _SelectSlideActive };
|
||||
_ThemeStatics = new string[] { _StaticAvatar };
|
||||
_ThemeStatics = new string[] { _StaticAvatar, _StaticPopupBG };
|
||||
_ThemeTexts = new string[] { _TextPopup };
|
||||
_ThemeNameSelections = new string[] { _NameSelection };
|
||||
|
||||
_EditMode = EEditMode.None;
|
||||
@@ -100,10 +119,18 @@ namespace Vocaluxe.Screens
|
||||
_SelectSlides[_SelectSlideUserRole].SetValues<EUserRole>(0);
|
||||
_SelectSlides[_SelectSlideActive].SetValues<EOffOn>(0);
|
||||
_Statics[_StaticAvatar].Aspect = EAspect.Crop;
|
||||
_NameSelections[_NameSelection].ShowInactive = true;
|
||||
_ShowPopup(EProfilesPopup.None);
|
||||
}
|
||||
|
||||
public override bool HandleInput(SKeyEvent keyEvent)
|
||||
{
|
||||
if (_Popup != EProfilesPopup.None)
|
||||
{
|
||||
_HandlePopupInput(keyEvent);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (_SelectingKeyboardActive)
|
||||
{
|
||||
switch (keyEvent.Key)
|
||||
@@ -163,6 +190,7 @@ namespace Vocaluxe.Screens
|
||||
_SelectSlides[_SelectSlideProfiles].RenameValue(
|
||||
CProfiles.AddGetPlayerName(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag), keyEvent.Unicode));
|
||||
_ProfilesChanged = true;
|
||||
_UnsavedChanges = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -173,11 +201,11 @@ namespace Vocaluxe.Screens
|
||||
case Keys.Escape:
|
||||
if (_EditMode == EEditMode.PlayerName)
|
||||
{
|
||||
_EditMode = EEditMode.None;
|
||||
_EndNameEdit(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
CGraphics.FadeTo(EScreen.Main);
|
||||
_Leave();
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -185,7 +213,7 @@ namespace Vocaluxe.Screens
|
||||
case Keys.Enter:
|
||||
if (_Buttons[_ButtonExit].Selected)
|
||||
{
|
||||
CGraphics.FadeTo(EScreen.Main);
|
||||
_Leave();
|
||||
}
|
||||
else if (_Buttons[_ButtonSave].Selected)
|
||||
{
|
||||
@@ -197,18 +225,11 @@ namespace Vocaluxe.Screens
|
||||
}
|
||||
else if (_Buttons[_ButtonPlayerName].Selected)
|
||||
{
|
||||
if (CProfiles.NumProfiles > 0 && _EditMode != EEditMode.PlayerName)
|
||||
{
|
||||
_EditMode = EEditMode.PlayerName;
|
||||
}
|
||||
else
|
||||
{
|
||||
_EditMode = EEditMode.None;
|
||||
}
|
||||
_ToggleNameEdit();
|
||||
}
|
||||
else if (_Buttons[_ButtonDelete].Selected)
|
||||
{
|
||||
_DeleteProfile();
|
||||
_RequestDeleteProfile();
|
||||
}
|
||||
else if (_Buttons[_ButtonWebcam].Selected)
|
||||
{
|
||||
@@ -230,44 +251,27 @@ namespace Vocaluxe.Screens
|
||||
break;
|
||||
|
||||
case Keys.Back:
|
||||
case Keys.Delete:
|
||||
if (_EditMode == EEditMode.PlayerName)
|
||||
{
|
||||
_SelectSlides[_SelectSlideProfiles].RenameValue(
|
||||
CProfiles.GetDeleteCharInPlayerName(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag)));
|
||||
_ProfilesChanged = true;
|
||||
_UnsavedChanges = true;
|
||||
}
|
||||
else if (keyEvent.Key == Keys.Delete)
|
||||
{
|
||||
_RequestDeleteProfile();
|
||||
}
|
||||
else
|
||||
{
|
||||
CGraphics.FadeTo(EScreen.Main);
|
||||
_Leave();
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case Keys.Delete:
|
||||
_DeleteProfile();
|
||||
break;
|
||||
}
|
||||
|
||||
if (_SelectSlides[_SelectSlideDifficulty].Selected)
|
||||
{
|
||||
CProfiles.SetDifficulty(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag),
|
||||
(EGameDifficulty)_SelectSlides[_SelectSlideDifficulty].Selection);
|
||||
}
|
||||
else if (_SelectSlides[_SelectSlideAvatars].Selected)
|
||||
{
|
||||
CProfiles.SetAvatar(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag),
|
||||
_SelectSlides[_SelectSlideAvatars].SelectedTag);
|
||||
}
|
||||
else if (_SelectSlides[_SelectSlideUserRole].Selected)
|
||||
{
|
||||
CProfiles.SetUserRoleProfile(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag),
|
||||
(EUserRole)_SelectSlides[_SelectSlideUserRole].Selection);
|
||||
}
|
||||
else if (_SelectSlides[_SelectSlideActive].Selected)
|
||||
{
|
||||
CProfiles.SetActive(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag),
|
||||
(EOffOn)_SelectSlides[_SelectSlideActive].Selection);
|
||||
}
|
||||
_ApplySelectSlideValues();
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -275,6 +279,12 @@ namespace Vocaluxe.Screens
|
||||
|
||||
public override bool HandleMouse(SMouseEvent mouseEvent)
|
||||
{
|
||||
if (_Popup != EProfilesPopup.None)
|
||||
{
|
||||
_HandlePopupMouse(mouseEvent);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (_EditMode == EEditMode.None)
|
||||
{
|
||||
base.HandleMouse(mouseEvent);
|
||||
@@ -293,7 +303,7 @@ namespace Vocaluxe.Screens
|
||||
{
|
||||
if (_Buttons[_ButtonExit].Selected)
|
||||
{
|
||||
CGraphics.FadeTo(EScreen.Main);
|
||||
_Leave();
|
||||
}
|
||||
else if (_Buttons[_ButtonSave].Selected)
|
||||
{
|
||||
@@ -305,42 +315,16 @@ namespace Vocaluxe.Screens
|
||||
}
|
||||
else if (_Buttons[_ButtonDelete].Selected)
|
||||
{
|
||||
_DeleteProfile();
|
||||
_RequestDeleteProfile();
|
||||
}
|
||||
else if (_Buttons[_ButtonPlayerName].Selected)
|
||||
{
|
||||
if (CProfiles.NumProfiles > 0 && _EditMode != EEditMode.PlayerName)
|
||||
{
|
||||
_EditMode = EEditMode.PlayerName;
|
||||
}
|
||||
else
|
||||
{
|
||||
_EditMode = EEditMode.None;
|
||||
}
|
||||
_ToggleNameEdit();
|
||||
}
|
||||
else if (_SelectSlides[_SelectSlideDifficulty].Selected)
|
||||
else if (_SelectSlides[_SelectSlideDifficulty].Selected || _SelectSlides[_SelectSlideAvatars].Selected ||
|
||||
_SelectSlides[_SelectSlideUserRole].Selected || _SelectSlides[_SelectSlideActive].Selected)
|
||||
{
|
||||
CProfiles.SetDifficulty(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag),
|
||||
(EGameDifficulty)_SelectSlides[_SelectSlideDifficulty].Selection);
|
||||
}
|
||||
else if (_SelectSlides[_SelectSlideAvatars].Selected)
|
||||
{
|
||||
CProfiles.SetAvatar(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag),
|
||||
_SelectSlides[_SelectSlideAvatars].SelectedTag);
|
||||
if (CWebcam.IsDeviceAvailable() && _WebcamTexture != null)
|
||||
{
|
||||
_OnDiscardSnapshot();
|
||||
}
|
||||
}
|
||||
else if (_SelectSlides[_SelectSlideUserRole].Selected)
|
||||
{
|
||||
CProfiles.SetUserRoleProfile(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag),
|
||||
(EUserRole)_SelectSlides[_SelectSlideUserRole].Selection);
|
||||
}
|
||||
else if (_SelectSlides[_SelectSlideActive].Selected)
|
||||
{
|
||||
CProfiles.SetActive(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag),
|
||||
(EOffOn)_SelectSlides[_SelectSlideActive].Selection);
|
||||
_ApplySelectSlideValues();
|
||||
}
|
||||
else if (_Buttons[_ButtonWebcam].Selected)
|
||||
{
|
||||
@@ -362,7 +346,7 @@ namespace Vocaluxe.Screens
|
||||
|
||||
if (mouseEvent.RB)
|
||||
{
|
||||
CGraphics.FadeTo(EScreen.Main);
|
||||
_Leave();
|
||||
}
|
||||
|
||||
if (mouseEvent.Wheel != 0 && CHelper.IsInBounds(_NameSelections[_NameSelection].Rect, mouseEvent))
|
||||
@@ -435,9 +419,260 @@ namespace Vocaluxe.Screens
|
||||
base.OnClose();
|
||||
_EditMode = EEditMode.None;
|
||||
_SelectingKeyboardActive = false;
|
||||
_ShowPopup(EProfilesPopup.None);
|
||||
_OnDiscardSnapshot();
|
||||
}
|
||||
|
||||
private void _Leave()
|
||||
{
|
||||
_EndNameEdit(false);
|
||||
if (_UnsavedChanges)
|
||||
{
|
||||
_ShowPopup(EProfilesPopup.UnsavedChanges);
|
||||
return;
|
||||
}
|
||||
|
||||
CGraphics.FadeTo(EScreen.Main);
|
||||
}
|
||||
|
||||
private void _DiscardChanges()
|
||||
{
|
||||
_UnsavedChanges = false;
|
||||
CProfiles.LoadProfiles();
|
||||
}
|
||||
|
||||
private void _ShowPopup(EProfilesPopup popup)
|
||||
{
|
||||
_Popup = popup;
|
||||
var visible = popup != EProfilesPopup.None;
|
||||
_Statics[_StaticPopupBG].Visible = visible;
|
||||
_Texts[_TextPopup].Visible = visible;
|
||||
_Buttons[_ButtonPopupYes].Visible = visible;
|
||||
_Buttons[_ButtonPopupNo].Visible = popup == EProfilesPopup.UnsavedChanges;
|
||||
_Buttons[_ButtonPopupCancel].Visible = visible;
|
||||
|
||||
switch (popup)
|
||||
{
|
||||
case EProfilesPopup.Delete:
|
||||
var name = CProfiles.GetPlayerName(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag));
|
||||
_Texts[_TextPopup].Text = CLanguage.Translate("TR_SCREENPROFILES_POPUP_DELETE").Replace("%s", name);
|
||||
_SelectElement(_Buttons[_ButtonPopupCancel]);
|
||||
break;
|
||||
|
||||
case EProfilesPopup.UnsavedChanges:
|
||||
_Texts[_TextPopup].Text = CLanguage.Translate("TR_SCREENPROFILES_POPUP_UNSAVED");
|
||||
_SelectElement(_Buttons[_ButtonPopupYes]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private List<string> _GetPopupButtons()
|
||||
{
|
||||
return new[] { _ButtonPopupYes, _ButtonPopupNo, _ButtonPopupCancel }.Where(name => _Buttons[name].Visible).ToList();
|
||||
}
|
||||
|
||||
private void _HandlePopupInput(SKeyEvent keyEvent)
|
||||
{
|
||||
if (keyEvent.KeyPressed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var buttons = _GetPopupButtons();
|
||||
var selected = buttons.FindIndex(name => _Buttons[name].Selected);
|
||||
switch (keyEvent.Key)
|
||||
{
|
||||
case Keys.Left:
|
||||
case Keys.Up:
|
||||
_SelectElement(_Buttons[buttons[(selected - 1 + buttons.Count) % buttons.Count]]);
|
||||
break;
|
||||
|
||||
case Keys.Right:
|
||||
case Keys.Down:
|
||||
case Keys.Tab:
|
||||
_SelectElement(_Buttons[buttons[(selected + 1) % buttons.Count]]);
|
||||
break;
|
||||
|
||||
case Keys.Escape:
|
||||
case Keys.Back:
|
||||
_ExecutePopupButton(_ButtonPopupCancel);
|
||||
break;
|
||||
|
||||
case Keys.Enter:
|
||||
_ExecutePopupButton(selected >= 0 ? buttons[selected] : _ButtonPopupCancel);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void _HandlePopupMouse(SMouseEvent mouseEvent)
|
||||
{
|
||||
foreach (var name in _GetPopupButtons())
|
||||
{
|
||||
if (!CHelper.IsInBounds(_Buttons[name].Rect, mouseEvent))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!_Buttons[name].Selected)
|
||||
{
|
||||
_SelectElement(_Buttons[name]);
|
||||
}
|
||||
|
||||
if (mouseEvent.LB)
|
||||
{
|
||||
_ExecutePopupButton(name);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (mouseEvent.RB)
|
||||
{
|
||||
_ExecutePopupButton(_ButtonPopupCancel);
|
||||
}
|
||||
}
|
||||
|
||||
private void _ExecutePopupButton(string button)
|
||||
{
|
||||
var popup = _Popup;
|
||||
_ShowPopup(EProfilesPopup.None);
|
||||
|
||||
if (popup == EProfilesPopup.Delete)
|
||||
{
|
||||
if (button == _ButtonPopupYes)
|
||||
{
|
||||
_DeleteProfile();
|
||||
}
|
||||
|
||||
_SelectElement(_Buttons[_ButtonDelete]);
|
||||
}
|
||||
else if (popup == EProfilesPopup.UnsavedChanges)
|
||||
{
|
||||
if (button == _ButtonPopupCancel)
|
||||
{
|
||||
_SelectElement(_Buttons[_ButtonSave]);
|
||||
return;
|
||||
}
|
||||
|
||||
if (button == _ButtonPopupYes)
|
||||
{
|
||||
_SaveProfiles();
|
||||
}
|
||||
else
|
||||
{
|
||||
_DiscardChanges();
|
||||
}
|
||||
|
||||
CGraphics.FadeTo(EScreen.Main);
|
||||
}
|
||||
}
|
||||
|
||||
private void _RequestDeleteProfile()
|
||||
{
|
||||
_EndNameEdit(false);
|
||||
if (!CProfiles.IsProfileIdValid(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_ShowPopup(EProfilesPopup.Delete);
|
||||
}
|
||||
|
||||
private void _ToggleNameEdit()
|
||||
{
|
||||
if (_EditMode == EEditMode.PlayerName)
|
||||
{
|
||||
_EndNameEdit(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
_StartNameEdit();
|
||||
}
|
||||
}
|
||||
|
||||
private void _StartNameEdit()
|
||||
{
|
||||
var id = _GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag);
|
||||
if (!CProfiles.IsProfileIdValid(id))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_NameBeforeEdit = CProfiles.GetPlayerName(id);
|
||||
_EditMode = EEditMode.PlayerName;
|
||||
}
|
||||
|
||||
private void _EndNameEdit(bool restore)
|
||||
{
|
||||
if (_EditMode != EEditMode.PlayerName)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_EditMode = EEditMode.None;
|
||||
var id = _GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag);
|
||||
if (!restore && !string.IsNullOrWhiteSpace(CProfiles.GetPlayerName(id)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var name = string.IsNullOrWhiteSpace(_NameBeforeEdit) ? CProfiles.GetPlayerName(Guid.Empty) : _NameBeforeEdit;
|
||||
CProfiles.SetPlayerName(id, name);
|
||||
_SelectSlides[_SelectSlideProfiles].RenameValue(name);
|
||||
_ProfilesChanged = true;
|
||||
}
|
||||
|
||||
private void _ApplySelectSlideValues()
|
||||
{
|
||||
var id = _GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag);
|
||||
if (!CProfiles.IsProfileIdValid(id))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_SelectSlides[_SelectSlideDifficulty].Selected)
|
||||
{
|
||||
var difficulty = (EGameDifficulty)_SelectSlides[_SelectSlideDifficulty].Selection;
|
||||
if (difficulty != CProfiles.GetDifficulty(id))
|
||||
{
|
||||
CProfiles.SetDifficulty(id, difficulty);
|
||||
_UnsavedChanges = true;
|
||||
}
|
||||
}
|
||||
else if (_SelectSlides[_SelectSlideAvatars].Selected)
|
||||
{
|
||||
var avatarId = _SelectSlides[_SelectSlideAvatars].SelectedTag;
|
||||
if (avatarId != CProfiles.GetAvatarId(id))
|
||||
{
|
||||
CProfiles.SetAvatar(id, avatarId);
|
||||
_UnsavedChanges = true;
|
||||
if (_WebcamTexture != null || CWebcam.IsCapturing())
|
||||
{
|
||||
_ResetSnapshot();
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (_SelectSlides[_SelectSlideUserRole].Selected)
|
||||
{
|
||||
var userRole = (EUserRole)_SelectSlides[_SelectSlideUserRole].Selection;
|
||||
if (userRole != CProfiles.GetUserRoleProfile(id))
|
||||
{
|
||||
CProfiles.SetUserRoleProfile(id, userRole);
|
||||
_UnsavedChanges = true;
|
||||
}
|
||||
}
|
||||
else if (_SelectSlides[_SelectSlideActive].Selected)
|
||||
{
|
||||
var active = (EOffOn)_SelectSlides[_SelectSlideActive].Selection;
|
||||
if (active != CProfiles.GetActive(id))
|
||||
{
|
||||
CProfiles.SetActive(id, active);
|
||||
_UnsavedChanges = true;
|
||||
_NameSelections[_NameSelection].UpdateList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void _OnProfileChanged(EProfileChangedFlags flags)
|
||||
{
|
||||
if (EProfileChangedFlags.Avatar == (EProfileChangedFlags.Avatar & flags))
|
||||
@@ -484,14 +719,23 @@ namespace Vocaluxe.Screens
|
||||
|
||||
private void _OnDiscardSnapshot()
|
||||
{
|
||||
_ResetSnapshot();
|
||||
_SelectElement(_Buttons[_ButtonWebcam]);
|
||||
}
|
||||
|
||||
private void _ResetSnapshot()
|
||||
{
|
||||
if (CWebcam.IsCapturing())
|
||||
{
|
||||
CWebcam.Stop();
|
||||
}
|
||||
|
||||
_Snapshot = null;
|
||||
CDraw.RemoveTexture(ref _WebcamTexture);
|
||||
_Buttons[_ButtonSaveSnapshot].Visible = false;
|
||||
_Buttons[_ButtonDiscardSnapshot].Visible = false;
|
||||
_Buttons[_ButtonTakeSnapshot].Visible = false;
|
||||
_Buttons[_ButtonWebcam].Visible = CWebcam.IsDeviceAvailable();
|
||||
|
||||
_SelectElement(_Buttons[_ButtonWebcam]);
|
||||
}
|
||||
|
||||
private void _OnSaveSnapshot()
|
||||
@@ -509,6 +753,7 @@ namespace Vocaluxe.Screens
|
||||
|
||||
var id = CProfiles.NewAvatar(file);
|
||||
CProfiles.SetAvatar(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag), id);
|
||||
_UnsavedChanges = true;
|
||||
_LoadAvatars(false);
|
||||
_NameSelections[_NameSelection].UpdateList();
|
||||
|
||||
@@ -535,7 +780,7 @@ namespace Vocaluxe.Screens
|
||||
|
||||
private void _NewProfile()
|
||||
{
|
||||
_EditMode = EEditMode.None;
|
||||
_EndNameEdit(false);
|
||||
var id = CProfiles.NewProfile();
|
||||
_LoadProfiles(false);
|
||||
var num = CProfiles.NumProfiles;
|
||||
@@ -546,20 +791,23 @@ namespace Vocaluxe.Screens
|
||||
|
||||
_NameSelections[_NameSelection].UpdateList();
|
||||
_SelectElement(_Buttons[_ButtonPlayerName]);
|
||||
_UnsavedChanges = true;
|
||||
_NameBeforeEdit = string.Empty;
|
||||
_EditMode = EEditMode.PlayerName;
|
||||
}
|
||||
|
||||
private void _SaveProfiles()
|
||||
{
|
||||
_EditMode = EEditMode.None;
|
||||
_EndNameEdit(false);
|
||||
CProfiles.SaveProfiles();
|
||||
_UnsavedChanges = false;
|
||||
_LoadProfiles(true);
|
||||
_NameSelections[_NameSelection].UpdateList();
|
||||
}
|
||||
|
||||
private void _DeleteProfile()
|
||||
{
|
||||
_EditMode = EEditMode.None;
|
||||
_EndNameEdit(false);
|
||||
|
||||
CProfiles.DeleteProfile(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag));
|
||||
_SelectSlideGuids.Remove(_SelectSlides[_SelectSlideProfiles].SelectedTag);
|
||||
@@ -660,6 +908,7 @@ namespace Vocaluxe.Screens
|
||||
return;
|
||||
}
|
||||
|
||||
_EndNameEdit(false);
|
||||
var entry = _SelectSlideGuids.FirstOrDefault(x => x.Value.Equals(profileId));
|
||||
if (_SelectSlideGuids.ContainsKey(entry.Key))
|
||||
{
|
||||
|
||||
+171
-56
@@ -39,7 +39,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 14; }
|
||||
get { return 16; }
|
||||
}
|
||||
|
||||
private struct STimeRect
|
||||
@@ -57,6 +57,11 @@ namespace Vocaluxe.Screens
|
||||
private const string _TextMedleyCountdown = "TextMedleyCountdown";
|
||||
private const string _TextPauseSongName = "TextPauseSongName";
|
||||
private const string _TextPauseVocalsVolume = "TextPauseVocalsVolume";
|
||||
private const string _TextPauseArtist = "TextPauseArtist";
|
||||
private const string _TextPauseTimeCurrent = "TextPauseTimeCurrent";
|
||||
private const string _TextPauseTimeRemaining = "TextPauseTimeRemaining";
|
||||
private const string _TextPauseName = "TextPauseNameP";
|
||||
private const string _TextPauseScore = "TextPauseScoreP";
|
||||
private string[,,] _TextScores;
|
||||
private string[,,] _TextNames;
|
||||
private List<string> _TextsPause;
|
||||
@@ -75,6 +80,10 @@ namespace Vocaluxe.Screens
|
||||
private const string _StaticLyricHelperDuet = "StaticLyricHelperDuet";
|
||||
private const string _StaticLyricHelperTop = "StaticLyricHelperTop";
|
||||
private const string _StaticCountdownRing = "StaticCountdownRing";
|
||||
private const string _StaticPauseCover = "StaticPauseCover";
|
||||
private const string _StaticPauseTimeLineProgress = "StaticPauseTimeLineProgress";
|
||||
private const string _StaticPauseVocalsIcon = "StaticPauseVocalsIcon";
|
||||
private const string _StaticPauseAvatar = "StaticPauseAvatarP";
|
||||
private List<string> _StaticsPause;
|
||||
|
||||
private string[,,] _StaticScores;
|
||||
@@ -89,6 +98,14 @@ namespace Vocaluxe.Screens
|
||||
private const string _ButtonRestartGame = "ButtonRestartGame";
|
||||
private const string _ButtonSkip = "ButtonSkip";
|
||||
|
||||
private static readonly string[] _PauseButtons = { _ButtonContinue, _ButtonSkip, _ButtonRestartRound, _ButtonRestartGame, _ButtonCancel };
|
||||
private static readonly string[] _PauseIcons =
|
||||
{ "StaticPauseIconContinue", "StaticPauseIconSkip", "StaticPauseIconRestartRound", "StaticPauseIconRestartGame", "StaticPauseIconCancel" };
|
||||
private SRectF[] _PauseButtonSlots;
|
||||
private SRectF[] _PauseIconOffsets;
|
||||
private float _PauseTimeLineW;
|
||||
private float _PauseVocalsIconOffset;
|
||||
|
||||
private const string _SelectSlidePauseVocalsVolume = "SelectSlidePauseVocalsVolume";
|
||||
private List<string> _SelectSlidesPause;
|
||||
|
||||
@@ -261,6 +278,18 @@ namespace Vocaluxe.Screens
|
||||
_SelectSlides[_SelectSlidePauseVocalsVolume].Selection = CConfig.VocalsVolume / 5;
|
||||
_Statics[_StaticCountdownRing].Visible = false;
|
||||
|
||||
_PauseButtonSlots = _PauseButtons.Select(b => _Buttons[b].Rect).OrderBy(r => r.Y).ThenBy(r => r.X).ToArray();
|
||||
_PauseIconOffsets = new SRectF[_PauseButtons.Length];
|
||||
for (var i = 0; i < _PauseButtons.Length; i++)
|
||||
{
|
||||
var button = _Buttons[_PauseButtons[i]].Rect;
|
||||
var icon = _Statics[_PauseIcons[i]].Rect;
|
||||
_PauseIconOffsets[i] = new SRectF(icon.X - button.X, icon.Y - button.Y, icon.W, icon.H, icon.Z);
|
||||
}
|
||||
|
||||
_PauseTimeLineW = _Statics[_StaticPauseTimeLineProgress].W;
|
||||
_PauseVocalsIconOffset = _Statics[_StaticPauseVocalsIcon].X - _Texts[_TextPauseVocalsVolume].Rect.X;
|
||||
|
||||
//Automatically find statics and texts with pause prefix
|
||||
foreach (var s in _Statics.Where(s => s.ThemeLoaded && s.GetThemeName().StartsWith("StaticPause")))
|
||||
{
|
||||
@@ -272,7 +301,7 @@ namespace Vocaluxe.Screens
|
||||
_TextsPause.Add(t.GetThemeName());
|
||||
}
|
||||
|
||||
foreach (var t in _Texts.Where(s => s.ThemeLoaded && s.GetThemeName().StartsWith("SelectSlidePause")))
|
||||
foreach (var t in _SelectSlides.Where(s => s.ThemeLoaded && s.GetThemeName().StartsWith("SelectSlidePause")))
|
||||
{
|
||||
_SelectSlidesPause.Add(t.GetThemeName());
|
||||
}
|
||||
@@ -290,7 +319,7 @@ namespace Vocaluxe.Screens
|
||||
_TogglePause();
|
||||
if (_Pause)
|
||||
{
|
||||
_SelectElement(_Buttons[_ButtonCancel]);
|
||||
_SelectElement(_Buttons[_ButtonContinue]);
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -332,16 +361,16 @@ namespace Vocaluxe.Screens
|
||||
break;
|
||||
|
||||
case Keys.S:
|
||||
if (CGame.NumRounds > CGame.RoundNr)
|
||||
if (keyEvent.ModCtrl)
|
||||
{
|
||||
if (keyEvent.ModCtrl)
|
||||
if (CGame.NumRounds > CGame.RoundNr)
|
||||
{
|
||||
_NextSong();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_ShowInfoText(CBase.Language.Translate("TR_SCREENSING_NOMORESONGS"));
|
||||
else
|
||||
{
|
||||
_ShowInfoText(CBase.Language.Translate("TR_SCREENSING_NOMORESONGS"));
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -650,6 +679,7 @@ namespace Vocaluxe.Screens
|
||||
else if (_StartDelayed)
|
||||
{
|
||||
_UpdateStartCountdown();
|
||||
_UpdateRatingPopups();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1001,7 +1031,7 @@ namespace Vocaluxe.Screens
|
||||
}
|
||||
}
|
||||
|
||||
private void _UpdateDuetNames(CText textName, Stopwatch timer)
|
||||
private void _UpdateDuetNames(CText textName, Stopwatch timer, CLyric lyric)
|
||||
{
|
||||
if (timer.IsRunning)
|
||||
{
|
||||
@@ -1029,7 +1059,7 @@ namespace Vocaluxe.Screens
|
||||
timer.Stop();
|
||||
}
|
||||
}
|
||||
else if (!timer.IsRunning && timer.ElapsedMilliseconds == 0 && _Lyrics[_LyricMainTop].Alpha > 0 && CGame.GetSong().IsDuet)
|
||||
else if (!timer.IsRunning && timer.ElapsedMilliseconds == 0 && lyric.Alpha > 0 && CGame.GetSong().IsDuet)
|
||||
{
|
||||
timer.Start();
|
||||
}
|
||||
@@ -1047,42 +1077,9 @@ namespace Vocaluxe.Screens
|
||||
}
|
||||
|
||||
//Timer for first duet-part
|
||||
_UpdateDuetNames(_Texts[_TextDuetName1], _TimerDuetText1);
|
||||
_UpdateDuetNames(_Texts[_TextDuetName1], _TimerDuetText1, _Lyrics[_LyricMainTop]);
|
||||
//Timer for second duet-part
|
||||
if (_TimerDuetText2.IsRunning)
|
||||
{
|
||||
var t = _TimerDuetText2.ElapsedMilliseconds / 1000f;
|
||||
if (t < 10f)
|
||||
{
|
||||
_Texts[_TextDuetName2].Visible = true;
|
||||
|
||||
if (t < 3f)
|
||||
{
|
||||
_Texts[_TextDuetName2].Color.A = (3f - (3f - t)) / 3f;
|
||||
}
|
||||
else if (t < 7f)
|
||||
{
|
||||
_Texts[_TextDuetName2].Color.A = 1f;
|
||||
}
|
||||
else
|
||||
{
|
||||
_Texts[_TextDuetName2].Color.A = (3f - (t - 7f)) / 3f;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_Texts[_TextDuetName2].Visible = false;
|
||||
_TimerDuetText2.Stop();
|
||||
}
|
||||
}
|
||||
else if (!_TimerDuetText2.IsRunning && _TimerDuetText2.ElapsedMilliseconds == 0 && _Lyrics[_LyricMainDuet].Alpha > 0 && CGame.GetSong().IsDuet)
|
||||
{
|
||||
_TimerDuetText2.Start();
|
||||
}
|
||||
else
|
||||
{
|
||||
_Texts[_TextDuetName2].Visible = false;
|
||||
}
|
||||
_UpdateDuetNames(_Texts[_TextDuetName2], _TimerDuetText2, _Lyrics[_LyricMainDuet]);
|
||||
}
|
||||
|
||||
private void _UpdateTimeLine()
|
||||
@@ -1298,6 +1295,11 @@ namespace Vocaluxe.Screens
|
||||
}
|
||||
}
|
||||
|
||||
if (_Pause)
|
||||
{
|
||||
_UpdatePauseIconColors();
|
||||
}
|
||||
|
||||
var pauseAnimation = _GetPauseAnimation(out var pauseAlpha, out var pauseScale);
|
||||
if (pauseAnimation)
|
||||
{
|
||||
@@ -1457,14 +1459,28 @@ namespace Vocaluxe.Screens
|
||||
|
||||
_Texts[_TextMedleyCountdown].Text = string.Empty;
|
||||
_Texts[_TextMedleyCountdown].Visible = true;
|
||||
_SetPlayerInfoAlpha(0f);
|
||||
return;
|
||||
}
|
||||
|
||||
_StartSongNow();
|
||||
}
|
||||
|
||||
private void _SetPlayerInfoAlpha(float alpha)
|
||||
{
|
||||
for (var p = 0; p < CGame.NumPlayers; p++)
|
||||
{
|
||||
_Statics[_PlayerStaticAvatar[p]].Alpha = alpha;
|
||||
_Statics[_PlayerStaticScore[p]].Alpha = alpha;
|
||||
_Texts[_PlayerTextName[p]].Alpha = alpha;
|
||||
_Texts[_PlayerTextScore[p]].Alpha = alpha;
|
||||
_ProgressBars[_PlayerProgressBarRating[p]].Alpha = alpha;
|
||||
}
|
||||
}
|
||||
|
||||
private void _StartSongNow()
|
||||
{
|
||||
_SetPlayerInfoAlpha(1f);
|
||||
_PrepareTimeLine();
|
||||
CSound.Play(_CurrentStream);
|
||||
|
||||
@@ -1625,7 +1641,7 @@ namespace Vocaluxe.Screens
|
||||
_PauseAnimationBackgrounds.Clear();
|
||||
_PauseAnimationElements.Clear();
|
||||
|
||||
_PauseAnimationBackgrounds.AddRange(_StaticsPause.Select(s => (IMenuElement)_Statics[s]).Where(s => s.Visible));
|
||||
_PauseAnimationBackgrounds.AddRange(_StaticsPause.Select(s => (IMenuElement)_Statics[s]).Where(s => s.Visible && _IsFullScreen(s)));
|
||||
|
||||
var elements = new List<IMenuElement>
|
||||
{
|
||||
@@ -1636,9 +1652,89 @@ namespace Vocaluxe.Screens
|
||||
_Buttons[_ButtonRestartRound],
|
||||
_SelectSlides[_SelectSlidePauseVocalsVolume]
|
||||
};
|
||||
elements.AddRange(_StaticsPause.Select(s => (IMenuElement)_Statics[s]).Where(s => !_IsFullScreen(s)));
|
||||
elements.AddRange(_SelectSlidesPause.Select(s => (IMenuElement)_SelectSlides[s]));
|
||||
elements.AddRange(_TextsPause.Select(s => (IMenuElement)_Texts[s]));
|
||||
_PauseAnimationElements.AddRange(elements.Distinct().Where(e => e.Visible));
|
||||
_PauseAnimationElements.AddRange(elements.Distinct().Where(e => e.Visible).OrderByDescending(e => e.Rect.Z));
|
||||
}
|
||||
|
||||
private static bool _IsFullScreen(IMenuElement element)
|
||||
{
|
||||
return element.Rect.W >= CSettings.RenderW && element.Rect.H >= CSettings.RenderH;
|
||||
}
|
||||
|
||||
private void _ArrangePauseButtons()
|
||||
{
|
||||
var slot = 0;
|
||||
for (var i = 0; i < _PauseButtons.Length; i++)
|
||||
{
|
||||
var button = _Buttons[_PauseButtons[i]];
|
||||
var icon = _Statics[_PauseIcons[i]];
|
||||
icon.Visible = button.Visible;
|
||||
if (!button.Visible)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var rect = _PauseButtonSlots[slot++];
|
||||
button.X = rect.X;
|
||||
button.Y = rect.Y;
|
||||
icon.X = rect.X + _PauseIconOffsets[i].X;
|
||||
icon.Y = rect.Y + _PauseIconOffsets[i].Y;
|
||||
}
|
||||
}
|
||||
|
||||
private void _UpdatePauseIconColors()
|
||||
{
|
||||
for (var i = 0; i < _PauseButtons.Length; i++)
|
||||
{
|
||||
var text = _Buttons[_PauseButtons[i]].Text;
|
||||
_Statics[_PauseIcons[i]].Color = text.Selected ? text.SelColor : text.Color;
|
||||
}
|
||||
}
|
||||
|
||||
private void _UpdatePauseInfo()
|
||||
{
|
||||
var song = CGame.GetSong();
|
||||
if (song != null)
|
||||
{
|
||||
var endTime = Math.Abs(song.End) > 0.001 ? song.End : CSound.GetLength(_CurrentStream);
|
||||
var length = endTime - song.Start;
|
||||
var currentTime = Math.Max(0f, _CurrentTime - song.Start);
|
||||
|
||||
_Texts[_TextPauseTimeCurrent].Text = _FormatPauseTime(currentTime);
|
||||
_Texts[_TextPauseTimeRemaining].Text = "-" + _FormatPauseTime(Math.Max(0f, endTime - _CurrentTime));
|
||||
_Statics[_StaticPauseTimeLineProgress].W = length > 0f ? _PauseTimeLineW * Math.Min(1f, currentTime / length) : 0f;
|
||||
}
|
||||
|
||||
for (var i = 0; i < CSettings.MaxNumPlayer; i++)
|
||||
{
|
||||
var avatar = _Statics[_StaticPauseAvatar + (i + 1)];
|
||||
var name = _Texts[_TextPauseName + (i + 1)];
|
||||
var score = _Texts[_TextPauseScore + (i + 1)];
|
||||
var visible = i < CGame.NumPlayers && CProfiles.IsProfileIdValid(CGame.Players[i].ProfileId);
|
||||
|
||||
avatar.Visible = visible;
|
||||
name.Visible = visible;
|
||||
score.Visible = visible;
|
||||
if (!visible)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
avatar.Texture = CProfiles.GetAvatarTextureFromProfile(CGame.Players[i].ProfileId) ?? CBase.Themes.GetSkinTexture("NoAvatar", PartyModeId);
|
||||
avatar.Aspect = EAspect.Crop;
|
||||
name.Text = CProfiles.GetPlayerName(CGame.Players[i].ProfileId);
|
||||
score.Text = CGame.Players[i].Points.ToString(CGame.Players[i].Points < 10000 ? "0000" : "00000");
|
||||
score.Color = new SColorF(CBase.Themes.GetPlayerColor(i + 1), score.Color.A);
|
||||
}
|
||||
}
|
||||
|
||||
private static string _FormatPauseTime(float time)
|
||||
{
|
||||
var min = (int)Math.Floor(time / 60f);
|
||||
var sec = (int)(time - min * 60f);
|
||||
return min.ToString("00") + ":" + sec.ToString("00");
|
||||
}
|
||||
|
||||
private void _SetPause(bool paused)
|
||||
@@ -1676,6 +1772,14 @@ namespace Vocaluxe.Screens
|
||||
|
||||
_SelectSlides[_SelectSlidePauseVocalsVolume].Visible = _Pause && CGame.AudioMode == EAudioMode.TR_AUDIOMODE_VOCALS;
|
||||
_Texts[_TextPauseVocalsVolume].Visible = _Pause && CGame.AudioMode == EAudioMode.TR_AUDIOMODE_VOCALS;
|
||||
_Statics[_StaticPauseVocalsIcon].Visible = _Pause && CGame.AudioMode == EAudioMode.TR_AUDIOMODE_VOCALS;
|
||||
|
||||
if (_Pause)
|
||||
{
|
||||
_ArrangePauseButtons();
|
||||
_UpdatePauseInfo();
|
||||
_Statics[_StaticPauseVocalsIcon].X = _Texts[_TextPauseVocalsVolume].Rect.X + _PauseVocalsIconOffset;
|
||||
}
|
||||
|
||||
if (pauseChanged && paused)
|
||||
{
|
||||
@@ -1731,8 +1835,13 @@ namespace Vocaluxe.Screens
|
||||
CConfig.VocalsVolume = _SelectSlides[_SelectSlidePauseVocalsVolume].Selection * 5;
|
||||
CConfig.SaveConfig();
|
||||
CSound.SetStreamVolume(_CurrentStreamVocals, CConfig.VocalsVolume);
|
||||
CSound.SetPosition(_CurrentStream, _PausePosition);
|
||||
CSound.SetPosition(_CurrentStreamVocals, _PausePosition);
|
||||
if (_PausePosition >= 0f)
|
||||
{
|
||||
CSound.SetPosition(_CurrentStream, _PausePosition);
|
||||
CSound.SetPosition(_CurrentStreamVocals, _PausePosition);
|
||||
_PausePosition = -1f;
|
||||
}
|
||||
|
||||
// Start both streams simultaneously
|
||||
CSound.Play(_CurrentStream);
|
||||
CSound.Play(_CurrentStreamVocals);
|
||||
@@ -1780,7 +1889,10 @@ namespace Vocaluxe.Screens
|
||||
}
|
||||
|
||||
_Texts[_TextSongName].Text = songname;
|
||||
_Texts[_TextPauseSongName].Text = songname;
|
||||
_Texts[_TextPauseSongName].Text = rounds > 1 ? song.Title + " (" + CGame.RoundNr + "/" + rounds + ")" : song.Title;
|
||||
_Texts[_TextPauseArtist].Text = song.Artist;
|
||||
_Statics[_StaticPauseCover].Texture = song.CoverTextureSmall;
|
||||
_Statics[_StaticPauseCover].Aspect = EAspect.Crop;
|
||||
|
||||
if (CGame.AudioMode == EAudioMode.TR_AUDIOMODE_INSTRUMENTAL || CGame.AudioMode == EAudioMode.TR_AUDIOMODE_KARAOKE)
|
||||
{
|
||||
@@ -1928,6 +2040,7 @@ namespace Vocaluxe.Screens
|
||||
_CurrentStreamVocals = -1;
|
||||
}
|
||||
|
||||
_PausePosition = -1f;
|
||||
CRecord.Stop();
|
||||
if (_CurrentVideo != null)
|
||||
{
|
||||
@@ -2091,10 +2204,11 @@ namespace Vocaluxe.Screens
|
||||
_SingNotes[_SingBars].Visible = true;
|
||||
}
|
||||
|
||||
_Texts[_PlayerTextName[player]].Visible = CConfig.Config.Theme.PlayerInfo == EPlayerInfo.TR_CONFIG_PLAYERINFO_BOTH ||
|
||||
CConfig.Config.Theme.PlayerInfo == EPlayerInfo.TR_CONFIG_PLAYERINFO_NAME;
|
||||
_Statics[_PlayerStaticAvatar[player]].Visible = CConfig.Config.Theme.PlayerInfo == EPlayerInfo.TR_CONFIG_PLAYERINFO_BOTH ||
|
||||
CConfig.Config.Theme.PlayerInfo == EPlayerInfo.TR_CONFIG_PLAYERINFO_AVATAR;
|
||||
var validProfile = CProfiles.IsProfileIdValid(CGame.Players[player].ProfileId);
|
||||
_Texts[_PlayerTextName[player]].Visible = validProfile && (CConfig.Config.Theme.PlayerInfo == EPlayerInfo.TR_CONFIG_PLAYERINFO_BOTH ||
|
||||
CConfig.Config.Theme.PlayerInfo == EPlayerInfo.TR_CONFIG_PLAYERINFO_NAME);
|
||||
_Statics[_PlayerStaticAvatar[player]].Visible = validProfile && (CConfig.Config.Theme.PlayerInfo == EPlayerInfo.TR_CONFIG_PLAYERINFO_BOTH ||
|
||||
CConfig.Config.Theme.PlayerInfo == EPlayerInfo.TR_CONFIG_PLAYERINFO_AVATAR);
|
||||
}
|
||||
|
||||
_Lyrics[_LyricMain].Alpha = 0f;
|
||||
@@ -2643,7 +2757,8 @@ namespace Vocaluxe.Screens
|
||||
{
|
||||
if (CProfiles.IsProfileIdValid(CGame.Players[i].ProfileId))
|
||||
{
|
||||
_Statics[_PlayerStaticAvatar[i]].Texture = CProfiles.GetAvatarTextureFromProfile(CGame.Players[i].ProfileId);
|
||||
_Statics[_PlayerStaticAvatar[i]].Texture = CProfiles.GetAvatarTextureFromProfile(CGame.Players[i].ProfileId) ??
|
||||
CBase.Themes.GetSkinTexture("NoAvatar", PartyModeId);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace Vocaluxe.Screens
|
||||
{
|
||||
protected override int _ScreenVersion
|
||||
{
|
||||
get { return 1; }
|
||||
get { return 2; }
|
||||
}
|
||||
|
||||
private const int _NumTiles = 4;
|
||||
@@ -191,6 +191,11 @@ namespace Vocaluxe.Screens
|
||||
selection.Y = rect.Y;
|
||||
selection.W = rect.W;
|
||||
selection.H = rect.H;
|
||||
|
||||
for (var i = 0; i < _StaticTile.Length; i++)
|
||||
{
|
||||
_Statics[_StaticTile[i]].Visible = i != tile;
|
||||
}
|
||||
}
|
||||
|
||||
private void _OpenDetail()
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace Vocaluxe.Screens
|
||||
{
|
||||
protected override int _ScreenVersion
|
||||
{
|
||||
get { return 1; }
|
||||
get { return 2; }
|
||||
}
|
||||
|
||||
private sealed class CRow
|
||||
@@ -76,6 +76,9 @@ namespace Vocaluxe.Screens
|
||||
private float _MainColumnX;
|
||||
private float _MainColumnW;
|
||||
private float _ListLeft;
|
||||
private float _FirstColumnX;
|
||||
private float _FirstColumnW;
|
||||
private EAlignment _FirstColumnAlign;
|
||||
|
||||
private readonly List<CRow> _Rows = new List<CRow>();
|
||||
private string[] _Headers = new string[_NumColumns];
|
||||
@@ -126,6 +129,9 @@ namespace Vocaluxe.Screens
|
||||
_MainColumnX = _Texts[_TextCell[0, 1]].X;
|
||||
_MainColumnW = _Texts[_TextCell[0, 1]].W;
|
||||
_ListLeft = _Statics[_StaticRank[0]].X;
|
||||
_FirstColumnX = _Texts[_TextCell[0, 0]].X;
|
||||
_FirstColumnW = _Texts[_TextCell[0, 0]].W;
|
||||
_FirstColumnAlign = _Texts[_TextCell[0, 0]].Align;
|
||||
}
|
||||
|
||||
public override void OnShow()
|
||||
@@ -405,6 +411,15 @@ namespace Vocaluxe.Screens
|
||||
|
||||
var mainX = string.IsNullOrEmpty(_Headers[0]) ? _ListLeft : _MainColumnX;
|
||||
_Texts[_TextHeader[1]].X = mainX;
|
||||
|
||||
var dateColumn = Page == EStatisticsPage.Recent;
|
||||
foreach (var text in Enumerable.Range(0, _NumRows).Select(r => _Texts[_TextCell[r, 0]]).Concat(new[] { _Texts[_TextHeader[0]] }))
|
||||
{
|
||||
text.Align = dateColumn ? EAlignment.Left : _FirstColumnAlign;
|
||||
text.X = dateColumn ? _ListLeft : _FirstColumnX;
|
||||
text.W = dateColumn ? _AvatarMainX - _ListLeft - 10 : _FirstColumnW;
|
||||
}
|
||||
|
||||
for (var r = 0; r < _NumRows; r++)
|
||||
{
|
||||
_Texts[_TextCell[r, 1]].X = mainX;
|
||||
|
||||
@@ -99,6 +99,9 @@ namespace VocaluxeLib.Menu
|
||||
|
||||
private readonly List<Guid> _VisibleProfiles;
|
||||
private readonly List<Guid> _UsedProfiles;
|
||||
private readonly HashSet<Guid> _InactiveProfiles = new HashSet<Guid>();
|
||||
|
||||
public bool ShowInactive;
|
||||
|
||||
private CStatic _PlayerSelector;
|
||||
|
||||
@@ -378,8 +381,10 @@ namespace VocaluxeLib.Menu
|
||||
{
|
||||
if (i + offset * _Theme.Tiles.NumW < _VisibleProfiles.Count)
|
||||
{
|
||||
var alpha = _InactiveProfiles.Contains(_VisibleProfiles[i + offset * _Theme.Tiles.NumW]) ? 0.4f : 1f;
|
||||
_Tiles[i].Avatar.Texture = CBase.Profiles.GetAvatar(_VisibleProfiles[i + offset * _Theme.Tiles.NumW]);
|
||||
_Tiles[i].Avatar.Color = new SColorF(1, 1, 1, 1);
|
||||
_Tiles[i].Avatar.Color = new SColorF(1, 1, 1, alpha);
|
||||
_Tiles[i].Name.Alpha = alpha;
|
||||
_Tiles[i].Name.Text = CBase.Profiles.GetPlayerName(_VisibleProfiles[i + offset * _Theme.Tiles.NumW]);
|
||||
_Tiles[i].ProfileId = _VisibleProfiles.ElementAt(i + offset * _Theme.Tiles.NumW);
|
||||
}
|
||||
@@ -387,6 +392,7 @@ namespace VocaluxeLib.Menu
|
||||
{
|
||||
_Tiles[i].Avatar.Texture = TextureEmptyTile;
|
||||
_Tiles[i].Avatar.Color = _ColorEmptyTile;
|
||||
_Tiles[i].Name.Alpha = 1f;
|
||||
_Tiles[i].Name.Text = "";
|
||||
_Tiles[i].ProfileId = Guid.Empty;
|
||||
}
|
||||
@@ -514,11 +520,18 @@ namespace VocaluxeLib.Menu
|
||||
private void _UpdateVisibleProfiles()
|
||||
{
|
||||
_VisibleProfiles.Clear();
|
||||
_InactiveProfiles.Clear();
|
||||
var profiles = CBase.Profiles.GetProfiles();
|
||||
|
||||
foreach (var profile in profiles)
|
||||
{
|
||||
var visible = profile.Active == EOffOn.TR_CONFIG_ON;
|
||||
if (!visible && ShowInactive)
|
||||
{
|
||||
visible = true;
|
||||
_InactiveProfiles.Add(profile.Id);
|
||||
}
|
||||
|
||||
if (visible)
|
||||
{
|
||||
if (_UsedProfiles.Contains(profile.Id) && (int)profile.UserRole >= (int)EUserRole.TR_USERROLE_NORMAL)
|
||||
|
||||
Reference in new issue
Block a user