Add knockout tournament party mode (#913)
A new party mode for 3 to 16 players who sing against each other in one-on-one duels. Whoever scores more points moves on, the loser is out, until only the champion is left. - The bracket is shown mirrored: both halves lead towards the final in the center, where the champion is crowned - Players are drawn randomly; if the number of players doesn't fill the bracket, some players get a bye in the first round - Songs are picked randomly from all songs, a category or a playlist, sung as normal, short or medley version, and no song is played twice - Each player has up to 3 jokers for the whole tournament to skip a song they don't like - On a tie, the duel is sung again - The winner of each duel visibly moves on to the next round, and the champion is celebrated at the end Also fixes "Select random" in the player selection of party modes, which only filled half of the slots. Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
This commit is contained in:
1 parent
b4d8f7ef8f
commit
944022f30b
20 files changed
+4285
-21
No files matched your search
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<PartyModeSystemVersion>2</PartyModeSystemVersion>
|
||||
<Info>
|
||||
<Name>TR_PARTYMODE_NAME</Name>
|
||||
<Author>McSchneidar</Author>
|
||||
<Description>TR_PARTYMODE_DESCRIPTION</Description>
|
||||
<Folder>Tournament</Folder>
|
||||
<PartyModeFile>CPartyModeTournament</PartyModeFile>
|
||||
<PartyModeVersionMajor>1</PartyModeVersionMajor>
|
||||
<PartyModeVersionMinor>0</PartyModeVersionMinor>
|
||||
<TargetAudience>TR_PARTYMODE_AUDIENCE</TargetAudience>
|
||||
</Info>
|
||||
<PartyScreens>
|
||||
<ScreenFile>CPartyScreenTournamentMain</ScreenFile>
|
||||
<ScreenFile>CPartyScreenTournamentConfig</ScreenFile>
|
||||
<ScreenFile>CPartyScreenTournamentNames</ScreenFile>
|
||||
<ScreenFile>CPartyScreenTournamentSongs</ScreenFile>
|
||||
</PartyScreens>
|
||||
</root>
|
||||
@@ -0,0 +1,31 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<resources>
|
||||
<string name="language">Deutsch</string>
|
||||
<string name="TR_PARTYMODE_NAME">K.O.-Turnier</string>
|
||||
<string name="TR_PARTYMODE_DESCRIPTION">Singt Duelle im K.O.-System, bis nur noch ein Sieger übrig ist.</string>
|
||||
<string name="TR_PARTYMODE_AUDIENCE">Für 3 bis 16 Spieler, die einen echten Wettkampf mögen.</string>
|
||||
<string name="TR_BUTTON_NEXT">Weiter</string>
|
||||
<string name="TR_BUTTON_BACK">Zurück</string>
|
||||
<string name="TR_BUTTON_START">Start</string>
|
||||
<string name="TR_BUTTON_EXIT">Beenden</string>
|
||||
<string name="TR_BUTTON_YES">Ja</string>
|
||||
<string name="TR_BUTTON_NO">Nein</string>
|
||||
<string name="TR_BUTTON_NEXT_ROUND">Duell starten</string>
|
||||
<string name="TR_SONGS">Songs</string>
|
||||
<string name="TR_SCREENCONFIG_TITLE">K.O.-Turnier: Konfiguration</string>
|
||||
<string name="TR_SCREENCONFIG_NUMPLAYERS">Anzahl der Spieler</string>
|
||||
<string name="TR_SCREENCONFIG_NUMJOKERS">Joker pro Spieler</string>
|
||||
<string name="TR_SCREENNAMES_TITLE">K.O.-Turnier: Spieler auswählen</string>
|
||||
<string name="TR_SCREENNAMES_BUTTON_RANDOM">Zufällig wählen</string>
|
||||
<string name="TR_SCREENMAIN_TITLE">K.O.-Turnier</string>
|
||||
<string name="TR_SCREENMAIN_POPUP_REALLYEXIT">Willst du das Turnier wirklich beenden?</string>
|
||||
<string name="TR_SCREENMAIN_ROUND_EIGHTHFINAL">Achtelfinale</string>
|
||||
<string name="TR_SCREENMAIN_ROUND_QUARTERFINAL">Viertelfinale</string>
|
||||
<string name="TR_SCREENMAIN_ROUND_SEMIFINAL">Halbfinale</string>
|
||||
<string name="TR_SCREENMAIN_ROUND_FINAL">Finale</string>
|
||||
<string name="TR_SCREENMAIN_BYE">Freilos</string>
|
||||
<string name="TR_SCREENMAIN_CHAMPION">Sieger</string>
|
||||
<string name="TR_SCREENMAIN_NEXT_MATCH">Nächstes Duell:</string>
|
||||
<string name="TR_SCREENMAIN_VERSUS">gegen</string>
|
||||
<string name="TR_SCREENMAIN_REMATCH">Gleichstand! Das Duell wird nachgesungen.</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,31 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<resources>
|
||||
<string name="language">English</string>
|
||||
<string name="TR_PARTYMODE_NAME">Knockout Tournament</string>
|
||||
<string name="TR_PARTYMODE_DESCRIPTION">Sing duels in a knockout bracket until only one champion is left.</string>
|
||||
<string name="TR_PARTYMODE_AUDIENCE">For 3 to 16 players who like a real competition.</string>
|
||||
<string name="TR_BUTTON_NEXT">Next</string>
|
||||
<string name="TR_BUTTON_BACK">Back</string>
|
||||
<string name="TR_BUTTON_START">Start</string>
|
||||
<string name="TR_BUTTON_EXIT">Exit</string>
|
||||
<string name="TR_BUTTON_YES">Yes</string>
|
||||
<string name="TR_BUTTON_NO">No</string>
|
||||
<string name="TR_BUTTON_NEXT_ROUND">Start duel</string>
|
||||
<string name="TR_SONGS">Songs</string>
|
||||
<string name="TR_SCREENCONFIG_TITLE">Knockout Tournament: Configuration</string>
|
||||
<string name="TR_SCREENCONFIG_NUMPLAYERS">Number of players</string>
|
||||
<string name="TR_SCREENCONFIG_NUMJOKERS">Jokers per player</string>
|
||||
<string name="TR_SCREENNAMES_TITLE">Knockout Tournament: Choose Players</string>
|
||||
<string name="TR_SCREENNAMES_BUTTON_RANDOM">Select random</string>
|
||||
<string name="TR_SCREENMAIN_TITLE">Knockout Tournament</string>
|
||||
<string name="TR_SCREENMAIN_POPUP_REALLYEXIT">Do you really want to exit the tournament?</string>
|
||||
<string name="TR_SCREENMAIN_ROUND_EIGHTHFINAL">Round of 16</string>
|
||||
<string name="TR_SCREENMAIN_ROUND_QUARTERFINAL">Quarterfinal</string>
|
||||
<string name="TR_SCREENMAIN_ROUND_SEMIFINAL">Semifinal</string>
|
||||
<string name="TR_SCREENMAIN_ROUND_FINAL">Final</string>
|
||||
<string name="TR_SCREENMAIN_BYE">Bye</string>
|
||||
<string name="TR_SCREENMAIN_CHAMPION">Champion</string>
|
||||
<string name="TR_SCREENMAIN_NEXT_MATCH">Next duel:</string>
|
||||
<string name="TR_SCREENMAIN_VERSUS">vs.</string>
|
||||
<string name="TR_SCREENMAIN_REMATCH">Tie! The duel is sung again.</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<ThemeSystemVersion>9</ThemeSystemVersion>
|
||||
<Info>
|
||||
<Name>Default</Name>
|
||||
<Author>McSchneidar</Author>
|
||||
<VersionMajor>0</VersionMajor>
|
||||
<VersionMinor>1</VersionMinor>
|
||||
</Info>
|
||||
</root>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<SkinSystemVersion>4</SkinSystemVersion>
|
||||
<Info>
|
||||
<Name>Default</Name>
|
||||
<Author>McSchneidar</Author>
|
||||
<VersionMajor>0</VersionMajor>
|
||||
<VersionMinor>1</VersionMinor>
|
||||
</Info>
|
||||
<Colors />
|
||||
<Skins>
|
||||
<PartyModeIcon>PartyModeIcon.png</PartyModeIcon>
|
||||
</Skins>
|
||||
<Videos />
|
||||
</root>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 3.7 KiB |
@@ -0,0 +1,239 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Screen>
|
||||
<Informations>
|
||||
<ScreenName>PartyScreenTournamentConfig</ScreenName>
|
||||
<ScreenVersion>1</ScreenVersion>
|
||||
</Informations>
|
||||
<Backgrounds>
|
||||
<Background Name="Background1">
|
||||
<Type>Video</Type>
|
||||
<SlideShowTextures />
|
||||
<Video>BG_Video</Video>
|
||||
<Skin>BG_Default</Skin>
|
||||
<Color Name="BackgroundColor" />
|
||||
</Background>
|
||||
</Backgrounds>
|
||||
<Statics>
|
||||
<Static Name="StaticMenuBar">
|
||||
<Skin />
|
||||
<Color Name="BackgroundColorAlpha" />
|
||||
<Rect>
|
||||
<X>0</X>
|
||||
<Y>60</Y>
|
||||
<W>1920</W>
|
||||
<H>67.5</H>
|
||||
<Z>1</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
</Statics>
|
||||
<Texts>
|
||||
<Text Name="TextTitle">
|
||||
<X>960</X>
|
||||
<Y>75</Y>
|
||||
<Z>0</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_SCREENCONFIG_TITLE</Text>
|
||||
</Text>
|
||||
<Text Name="TextNumPlayers">
|
||||
<X>112.5</X>
|
||||
<Y>157.5</Y>
|
||||
<Z>0</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_SCREENCONFIG_NUMPLAYERS</Text>
|
||||
</Text>
|
||||
<Text Name="TextNumJokers">
|
||||
<X>112.5</X>
|
||||
<Y>247.5</Y>
|
||||
<Z>0</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_SCREENCONFIG_NUMJOKERS</Text>
|
||||
</Text>
|
||||
</Texts>
|
||||
<Buttons>
|
||||
<Button Name="ButtonNext">
|
||||
<Skin>Button</Skin>
|
||||
<SkinSelected>Button</SkinSelected>
|
||||
<Rect>
|
||||
<X>1477.5</X>
|
||||
<Y>900</Y>
|
||||
<W>225</W>
|
||||
<H>75</H>
|
||||
<Z>0</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_NEXT</Text>
|
||||
</Text>
|
||||
<Reflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</Reflection>
|
||||
<SelReflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</SelReflection>
|
||||
</Button>
|
||||
<Button Name="ButtonBack">
|
||||
<Skin>Button</Skin>
|
||||
<SkinSelected>Button</SkinSelected>
|
||||
<Rect>
|
||||
<X>217.5</X>
|
||||
<Y>900</Y>
|
||||
<W>225</W>
|
||||
<H>75</H>
|
||||
<Z>0</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_BACK</Text>
|
||||
</Text>
|
||||
<Reflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</Reflection>
|
||||
<SelReflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</SelReflection>
|
||||
</Button>
|
||||
</Buttons>
|
||||
<SongMenus />
|
||||
<Lyrics />
|
||||
<SelectSlides>
|
||||
<SelectSlide Name="SelectSlideNumPlayers">
|
||||
<Skin />
|
||||
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
|
||||
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
|
||||
<SkinSelected>SelectSlide</SkinSelected>
|
||||
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
|
||||
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
|
||||
<Rect>
|
||||
<X>750</X>
|
||||
<Y>150</Y>
|
||||
<W>1050</W>
|
||||
<H>75</H>
|
||||
<Z>0</Z>
|
||||
</Rect>
|
||||
<RectArrowLeft>
|
||||
<X>757.5</X>
|
||||
<Y>157.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowLeft>
|
||||
<RectArrowRight>
|
||||
<X>1732.5</X>
|
||||
<Y>157.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowRight>
|
||||
<Color Name="SelectSlideColor" />
|
||||
<SelColor Name="SelectSlideSelColor" />
|
||||
<ArrowColor Name="ArrowColor" />
|
||||
<ArrowSelColor Name="ArrowSelColor" />
|
||||
<TextColor Name="TextColorAlpha" />
|
||||
<TextSelColor Name="TextSelColor" />
|
||||
<TextH>40.5</TextH>
|
||||
<TextRelativeX>75</TextRelativeX>
|
||||
<TextRelativeY>0</TextRelativeY>
|
||||
<TextMaxW>300</TextMaxW>
|
||||
<TextFont>Outline</TextFont>
|
||||
<TextStyle>Bold</TextStyle>
|
||||
<NumVisible>9</NumVisible>
|
||||
</SelectSlide>
|
||||
<SelectSlide Name="SelectSlideNumJokers">
|
||||
<Skin />
|
||||
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
|
||||
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
|
||||
<SkinSelected>SelectSlide</SkinSelected>
|
||||
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
|
||||
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
|
||||
<Rect>
|
||||
<X>750</X>
|
||||
<Y>240</Y>
|
||||
<W>1050</W>
|
||||
<H>75</H>
|
||||
<Z>0</Z>
|
||||
</Rect>
|
||||
<RectArrowLeft>
|
||||
<X>757.5</X>
|
||||
<Y>247.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowLeft>
|
||||
<RectArrowRight>
|
||||
<X>1732.5</X>
|
||||
<Y>247.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowRight>
|
||||
<Color Name="SelectSlideColor" />
|
||||
<SelColor Name="SelectSlideSelColor" />
|
||||
<ArrowColor Name="ArrowColor" />
|
||||
<ArrowSelColor Name="ArrowSelColor" />
|
||||
<TextColor Name="TextColorAlpha" />
|
||||
<TextSelColor Name="TextSelColor" />
|
||||
<TextH>40.5</TextH>
|
||||
<TextRelativeX>75</TextRelativeX>
|
||||
<TextRelativeY>0</TextRelativeY>
|
||||
<TextMaxW>300</TextMaxW>
|
||||
<TextFont>Outline</TextFont>
|
||||
<TextStyle>Bold</TextStyle>
|
||||
<NumVisible>10</NumVisible>
|
||||
</SelectSlide>
|
||||
</SelectSlides>
|
||||
<SingNotes />
|
||||
<NameSelections />
|
||||
<Equalizers />
|
||||
<Playlists />
|
||||
<ParticleEffects />
|
||||
<ScreenSettings />
|
||||
</Screen>
|
||||
@@ -0,0 +1,491 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Screen>
|
||||
<Informations>
|
||||
<ScreenName>PartyScreenTournamentMain</ScreenName>
|
||||
<ScreenVersion>1</ScreenVersion>
|
||||
</Informations>
|
||||
<Backgrounds>
|
||||
<Background Name="Background1">
|
||||
<Type>Video</Type>
|
||||
<SlideShowTextures />
|
||||
<Video>BG_Video</Video>
|
||||
<Skin>BG_Default</Skin>
|
||||
<Color Name="BackgroundColor" />
|
||||
</Background>
|
||||
</Backgrounds>
|
||||
<Statics>
|
||||
<Static Name="StaticMenuBar">
|
||||
<Skin />
|
||||
<Color Name="BackgroundColorAlpha" />
|
||||
<Rect>
|
||||
<X>0</X>
|
||||
<Y>60</Y>
|
||||
<W>1920</W>
|
||||
<H>67.5</H>
|
||||
<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>-1</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticMatchBox">
|
||||
<Skin />
|
||||
<Color>
|
||||
<R>0.1</R>
|
||||
<G>0.09</G>
|
||||
<B>0.25</B>
|
||||
<A>0.92</A>
|
||||
</Color>
|
||||
<Rect>
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<W>380</W>
|
||||
<H>100</H>
|
||||
<Z>0.5</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticMatchActive">
|
||||
<Skin />
|
||||
<Color>
|
||||
<R>1</R>
|
||||
<G>0.8</G>
|
||||
<B>0</B>
|
||||
<A>1</A>
|
||||
</Color>
|
||||
<Rect>
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<W>388</W>
|
||||
<H>108</H>
|
||||
<Z>0.6</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticMatchAvatar">
|
||||
<Skin />
|
||||
<Color Name="Visible" />
|
||||
<Rect>
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<W>38</W>
|
||||
<H>38</H>
|
||||
<Z>0.4</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
<Static Name="StaticBracketLine">
|
||||
<Skin />
|
||||
<Color>
|
||||
<R>1</R>
|
||||
<G>1</G>
|
||||
<B>1</B>
|
||||
<A>0.5</A>
|
||||
</Color>
|
||||
<Rect>
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<W>3</W>
|
||||
<H>3</H>
|
||||
<Z>0.7</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
</Statics>
|
||||
<Texts>
|
||||
<Text Name="TextTitle">
|
||||
<X>960</X>
|
||||
<Y>75</Y>
|
||||
<Z>0</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_SCREENMAIN_TITLE</Text>
|
||||
</Text>
|
||||
<Text Name="TextPopupReallyExit">
|
||||
<X>960</X>
|
||||
<Y>405</Y>
|
||||
<Z>-11</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>570</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_SCREENMAIN_POPUP_REALLYEXIT</Text>
|
||||
</Text>
|
||||
<Text Name="TextRoundLabel">
|
||||
<X>0</X>
|
||||
<Y>150</Y>
|
||||
<Z>0</Z>
|
||||
<H>34</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color>
|
||||
<R>0.75</R>
|
||||
<G>0.78</G>
|
||||
<B>0.85</B>
|
||||
<A>1</A>
|
||||
</Color>
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextMatchName">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
<H>30</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextMatchNameWinner">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
<H>30</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color>
|
||||
<R>0.31</R>
|
||||
<G>0.82</G>
|
||||
<B>0.91</B>
|
||||
<A>1</A>
|
||||
</Color>
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextMatchNameLoser">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
<H>30</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color>
|
||||
<R>0.6</R>
|
||||
<G>0.62</G>
|
||||
<B>0.68</B>
|
||||
<A>1</A>
|
||||
</Color>
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextMatchScore">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
<H>30</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Right</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextChampionLabel">
|
||||
<X>960</X>
|
||||
<Y>320</Y>
|
||||
<Z>0</Z>
|
||||
<H>36</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color>
|
||||
<R>1</R>
|
||||
<G>0.8</G>
|
||||
<B>0</B>
|
||||
<A>1</A>
|
||||
</Color>
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_SCREENMAIN_CHAMPION</Text>
|
||||
</Text>
|
||||
<Text Name="TextChampion">
|
||||
<X>960</X>
|
||||
<Y>365</Y>
|
||||
<Z>0</Z>
|
||||
<H>54</H>
|
||||
<MaxW>500</MaxW>
|
||||
<Color>
|
||||
<R>1</R>
|
||||
<G>0.8</G>
|
||||
<B>0</B>
|
||||
<A>1</A>
|
||||
</Color>
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextNextMatch">
|
||||
<X>960</X>
|
||||
<Y>860</Y>
|
||||
<Z>0</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>1500</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text />
|
||||
</Text>
|
||||
<Text Name="TextRematch">
|
||||
<X>960</X>
|
||||
<Y>908</Y>
|
||||
<Z>0</Z>
|
||||
<H>34</H>
|
||||
<MaxW>1500</MaxW>
|
||||
<Color>
|
||||
<R>1</R>
|
||||
<G>0.8</G>
|
||||
<B>0</B>
|
||||
<A>1</A>
|
||||
</Color>
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_SCREENMAIN_REMATCH</Text>
|
||||
</Text>
|
||||
</Texts>
|
||||
<Buttons>
|
||||
<Button Name="ButtonNextRound">
|
||||
<Skin>Button</Skin>
|
||||
<SkinSelected>Button</SkinSelected>
|
||||
<Rect>
|
||||
<X>1545</X>
|
||||
<Y>945</Y>
|
||||
<W>225</W>
|
||||
<H>75</H>
|
||||
<Z>0</Z>
|
||||
</Rect>
|
||||
<Color Name="ButtonColor" />
|
||||
<SelColor Name="ButtonSelColor" />
|
||||
<Text Name="Text">
|
||||
<X>112.5</X>
|
||||
<Y>15</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_NEXT_ROUND</Text>
|
||||
</Text>
|
||||
<Reflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</Reflection>
|
||||
<SelReflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</SelReflection>
|
||||
</Button>
|
||||
<Button Name="ButtonBack">
|
||||
<Skin>Button</Skin>
|
||||
<SkinSelected>Button</SkinSelected>
|
||||
<Rect>
|
||||
<X>150</X>
|
||||
<Y>945</Y>
|
||||
<W>225</W>
|
||||
<H>75</H>
|
||||
<Z>0</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_BACK</Text>
|
||||
</Text>
|
||||
<Reflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</Reflection>
|
||||
<SelReflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</SelReflection>
|
||||
</Button>
|
||||
<Button Name="ButtonExit">
|
||||
<Skin>Button</Skin>
|
||||
<SkinSelected>Button</SkinSelected>
|
||||
<Rect>
|
||||
<X>150</X>
|
||||
<Y>945</Y>
|
||||
<W>225</W>
|
||||
<H>75</H>
|
||||
<Z>0</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_EXIT</Text>
|
||||
</Text>
|
||||
<Reflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</Reflection>
|
||||
<SelReflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</SelReflection>
|
||||
</Button>
|
||||
<Button Name="ButtonPopupYes">
|
||||
<Skin>Button</Skin>
|
||||
<SkinSelected>Button</SkinSelected>
|
||||
<Rect>
|
||||
<X>997.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>697.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>
|
||||
</Buttons>
|
||||
<SongMenus />
|
||||
<Lyrics />
|
||||
<SelectSlides />
|
||||
<SingNotes />
|
||||
<NameSelections />
|
||||
<Equalizers />
|
||||
<Playlists />
|
||||
<ParticleEffects>
|
||||
<ParticleEffect Name="ParticleEffectChampion">
|
||||
<Skin>Star</Skin>
|
||||
<Rect>
|
||||
<X>700</X>
|
||||
<Y>290</Y>
|
||||
<W>520</W>
|
||||
<H>170</H>
|
||||
<Z>-1</Z>
|
||||
</Rect>
|
||||
<Color>
|
||||
<R>1</R>
|
||||
<G>0.8</G>
|
||||
<B>0</B>
|
||||
<A>0.6</A>
|
||||
</Color>
|
||||
<Type>Star</Type>
|
||||
<Size>18</Size>
|
||||
<MaxNumber>40</MaxNumber>
|
||||
</ParticleEffect>
|
||||
</ParticleEffects>
|
||||
<ScreenSettings />
|
||||
</Screen>
|
||||
@@ -0,0 +1,382 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Screen>
|
||||
<Informations>
|
||||
<ScreenName>PartyScreenTournamentNames</ScreenName>
|
||||
<ScreenVersion>1</ScreenVersion>
|
||||
</Informations>
|
||||
<Backgrounds>
|
||||
<Background Name="Background1">
|
||||
<Type>Video</Type>
|
||||
<SlideShowTextures />
|
||||
<Video>BG_Video</Video>
|
||||
<Skin>BG_Default</Skin>
|
||||
<Color Name="BackgroundColor" />
|
||||
</Background>
|
||||
</Backgrounds>
|
||||
<Statics>
|
||||
<Static Name="StaticMenuBar">
|
||||
<Skin />
|
||||
<Color Name="BackgroundColorAlpha" />
|
||||
<Rect>
|
||||
<X>0</X>
|
||||
<Y>60</Y>
|
||||
<W>1920</W>
|
||||
<H>67.5</H>
|
||||
<Z>1</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
</Statics>
|
||||
<Texts>
|
||||
<Text Name="TextTitle">
|
||||
<X>960</X>
|
||||
<Y>75</Y>
|
||||
<Z>0</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_SCREENNAMES_TITLE</Text>
|
||||
</Text>
|
||||
</Texts>
|
||||
<Buttons>
|
||||
<Button Name="ButtonBack">
|
||||
<Skin>Button</Skin>
|
||||
<SkinSelected>Button</SkinSelected>
|
||||
<Rect>
|
||||
<X>217.5</X>
|
||||
<Y>900</Y>
|
||||
<W>225</W>
|
||||
<H>75</H>
|
||||
<Z>0</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_BACK</Text>
|
||||
</Text>
|
||||
<Reflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</Reflection>
|
||||
<SelReflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</SelReflection>
|
||||
</Button>
|
||||
<Button Name="ButtonNext">
|
||||
<Skin>Button</Skin>
|
||||
<SkinSelected>Button</SkinSelected>
|
||||
<Rect>
|
||||
<X>1477.5</X>
|
||||
<Y>900</Y>
|
||||
<W>225</W>
|
||||
<H>75</H>
|
||||
<Z>0</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_NEXT</Text>
|
||||
</Text>
|
||||
<Reflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</Reflection>
|
||||
<SelReflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</SelReflection>
|
||||
</Button>
|
||||
<Button Name="ButtonRandom">
|
||||
<Skin>Button</Skin>
|
||||
<SkinSelected>Button</SkinSelected>
|
||||
<Rect>
|
||||
<X>847.5</X>
|
||||
<Y>900</Y>
|
||||
<W>225</W>
|
||||
<H>75</H>
|
||||
<Z>0</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_SCREENNAMES_BUTTON_RANDOM</Text>
|
||||
</Text>
|
||||
<Reflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</Reflection>
|
||||
<SelReflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</SelReflection>
|
||||
</Button>
|
||||
<Button Name="ButtonIncreaseTeams">
|
||||
<Skin>Plus</Skin>
|
||||
<SkinSelected>Plus</SkinSelected>
|
||||
<Rect>
|
||||
<X>1770</X>
|
||||
<Y>157.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</Rect>
|
||||
<Color Name="ButtonColor" />
|
||||
<SelColor Name="ButtonSelColor" />
|
||||
<Text Name="Text">
|
||||
<X>112.5</X>
|
||||
<Y>15</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 />
|
||||
</Text>
|
||||
</Button>
|
||||
<Button Name="ButtonDecreaseTeams">
|
||||
<Skin>Minus</Skin>
|
||||
<SkinSelected>Minus</SkinSelected>
|
||||
<Rect>
|
||||
<X>1695</X>
|
||||
<Y>157.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</Rect>
|
||||
<Color Name="ButtonColor" />
|
||||
<SelColor Name="ButtonSelColor" />
|
||||
<Text Name="Text">
|
||||
<X>112.5</X>
|
||||
<Y>15</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 />
|
||||
</Text>
|
||||
</Button>
|
||||
<Button Name="ButtonIncreasePlayer">
|
||||
<Skin>Plus</Skin>
|
||||
<SkinSelected>Plus</SkinSelected>
|
||||
<Rect>
|
||||
<X>217.5</X>
|
||||
<Y>1800</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</Rect>
|
||||
<Color Name="ButtonColor" />
|
||||
<SelColor Name="ButtonSelColor" />
|
||||
<Text Name="Text">
|
||||
<X>112.5</X>
|
||||
<Y>15</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 />
|
||||
</Text>
|
||||
</Button>
|
||||
<Button Name="ButtonDecreasePlayer">
|
||||
<Skin>Minus</Skin>
|
||||
<SkinSelected>Minus</SkinSelected>
|
||||
<Rect>
|
||||
<X>217.5</X>
|
||||
<Y>1800</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</Rect>
|
||||
<Color Name="ButtonColor" />
|
||||
<SelColor Name="ButtonSelColor" />
|
||||
<Text Name="Text">
|
||||
<X>112.5</X>
|
||||
<Y>15</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 />
|
||||
</Text>
|
||||
</Button>
|
||||
</Buttons>
|
||||
<SongMenus />
|
||||
<Lyrics />
|
||||
<SelectSlides>
|
||||
<SelectSlide Name="SelectSlideTeams">
|
||||
<Skin />
|
||||
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
|
||||
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
|
||||
<SkinSelected>SelectSlide</SkinSelected>
|
||||
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
|
||||
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
|
||||
<Rect>
|
||||
<X>60</X>
|
||||
<Y>150</Y>
|
||||
<W>1800</W>
|
||||
<H>75</H>
|
||||
<Z>0</Z>
|
||||
</Rect>
|
||||
<RectArrowLeft>
|
||||
<X>67.5</X>
|
||||
<Y>157.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowLeft>
|
||||
<RectArrowRight>
|
||||
<X>1792.5</X>
|
||||
<Y>157.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowRight>
|
||||
<Color Name="SelectSlideColor" />
|
||||
<SelColor Name="SelectSlideSelColor" />
|
||||
<ArrowColor Name="ArrowColor" />
|
||||
<ArrowSelColor Name="ArrowSelColor" />
|
||||
<TextColor Name="TextColorAlpha" />
|
||||
<TextSelColor Name="TextSelColor" />
|
||||
<TextH>40.5</TextH>
|
||||
<TextRelativeX>75</TextRelativeX>
|
||||
<TextRelativeY>0</TextRelativeY>
|
||||
<TextMaxW>300</TextMaxW>
|
||||
<TextFont>Outline</TextFont>
|
||||
<TextStyle>Bold</TextStyle>
|
||||
<NumVisible>2</NumVisible>
|
||||
</SelectSlide>
|
||||
<SelectSlide Name="SelectSlidePlayer">
|
||||
<Skin />
|
||||
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
|
||||
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
|
||||
<SkinSelected>SelectSlidePlayer</SkinSelected>
|
||||
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
|
||||
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
|
||||
<Rect>
|
||||
<X>60</X>
|
||||
<Y>240</Y>
|
||||
<W>1800</W>
|
||||
<H>225</H>
|
||||
<Z>0</Z>
|
||||
</Rect>
|
||||
<RectArrowLeft>
|
||||
<X>67.5</X>
|
||||
<Y>315</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowLeft>
|
||||
<RectArrowRight>
|
||||
<X>1792.5</X>
|
||||
<Y>315</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowRight>
|
||||
<Color Name="SelectSlideColor" />
|
||||
<SelColor Name="SelectSlideSelColor" />
|
||||
<ArrowColor Name="ArrowColor" />
|
||||
<ArrowSelColor Name="ArrowSelColor" />
|
||||
<TextColor Name="TextColorAlpha" />
|
||||
<TextSelColor Name="TextSelColor" />
|
||||
<TextH>40.5</TextH>
|
||||
<TextRelativeX>75</TextRelativeX>
|
||||
<TextRelativeY>5</TextRelativeY>
|
||||
<TextMaxW>300</TextMaxW>
|
||||
<TextFont>Outline</TextFont>
|
||||
<TextStyle>Bold</TextStyle>
|
||||
<NumVisible>8</NumVisible>
|
||||
</SelectSlide>
|
||||
</SelectSlides>
|
||||
<SingNotes />
|
||||
<NameSelections>
|
||||
<NameSelection Name="NameSelection">
|
||||
<Rect>
|
||||
<X>142.5</X>
|
||||
<Y>525</Y>
|
||||
<W>1800</W>
|
||||
<H>589.5</H>
|
||||
<Z>0</Z>
|
||||
</Rect>
|
||||
<SkinEmptyTile>CoverTile</SkinEmptyTile>
|
||||
<ColorEmptyTile Name="EmptyTileColor" />
|
||||
<SkinTileSelected>PlayerSelector</SkinTileSelected>
|
||||
<Tiles>
|
||||
<W>150</W>
|
||||
<H>150</H>
|
||||
<NumW>10</NumW>
|
||||
<NumH>2</NumH>
|
||||
<SpaceW>15</SpaceW>
|
||||
<SpaceH>15</SpaceH>
|
||||
<Name>
|
||||
<Space>-20</Space>
|
||||
<H>25.5</H>
|
||||
<Font>Outline</Font>
|
||||
<Style>Bold</Style>
|
||||
<Color Name="TextColor" />
|
||||
</Name>
|
||||
</Tiles>
|
||||
</NameSelection>
|
||||
</NameSelections>
|
||||
<Equalizers />
|
||||
<Playlists />
|
||||
<ParticleEffects />
|
||||
<ScreenSettings />
|
||||
</Screen>
|
||||
@@ -0,0 +1,407 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Screen>
|
||||
<Informations>
|
||||
<ScreenName>PartyScreenTournamentSongs</ScreenName>
|
||||
<ScreenVersion>1</ScreenVersion>
|
||||
</Informations>
|
||||
<Backgrounds>
|
||||
<Background Name="Background1">
|
||||
<Type>Video</Type>
|
||||
<SlideShowTextures />
|
||||
<Video>BG_Video</Video>
|
||||
<Skin>BG_Default</Skin>
|
||||
<Color Name="BackgroundColor" />
|
||||
</Background>
|
||||
</Backgrounds>
|
||||
<Statics>
|
||||
<Static Name="StaticMenuBar">
|
||||
<Skin />
|
||||
<Color Name="BackgroundColorAlpha" />
|
||||
<Rect>
|
||||
<X>0</X>
|
||||
<Y>60</Y>
|
||||
<W>1920</W>
|
||||
<H>67.5</H>
|
||||
<Z>1</Z>
|
||||
</Rect>
|
||||
</Static>
|
||||
</Statics>
|
||||
<Texts>
|
||||
<Text Name="TextTitle">
|
||||
<X>960</X>
|
||||
<Y>75</Y>
|
||||
<Z>0</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Center</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_SCREENCONFIG_TITLE</Text>
|
||||
</Text>
|
||||
<Text Name="TextSource">
|
||||
<X>112.5</X>
|
||||
<Y>157.5</Y>
|
||||
<Z>0</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_SONGSOURCE</Text>
|
||||
</Text>
|
||||
<Text Name="TextSongMode">
|
||||
<X>112.5</X>
|
||||
<Y>435</Y>
|
||||
<Z>0</Z>
|
||||
<H>40.5</H>
|
||||
<MaxW>0</MaxW>
|
||||
<Color Name="TextColor" />
|
||||
<SelColor Name="TextSelColor" />
|
||||
<Align>Left</Align>
|
||||
<ResizeAlign>Center</ResizeAlign>
|
||||
<Style>Bold</Style>
|
||||
<Font>Outline</Font>
|
||||
<Text>TR_GAMEMODE</Text>
|
||||
</Text>
|
||||
</Texts>
|
||||
<Buttons>
|
||||
<Button Name="ButtonNext">
|
||||
<Skin>Button</Skin>
|
||||
<SkinSelected>Button</SkinSelected>
|
||||
<Rect>
|
||||
<X>1477.5</X>
|
||||
<Y>900</Y>
|
||||
<W>225</W>
|
||||
<H>75</H>
|
||||
<Z>0</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_NEXT</Text>
|
||||
</Text>
|
||||
<Reflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</Reflection>
|
||||
<SelReflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</SelReflection>
|
||||
</Button>
|
||||
<Button Name="ButtonBack">
|
||||
<Skin>Button</Skin>
|
||||
<SkinSelected>Button</SkinSelected>
|
||||
<Rect>
|
||||
<X>217.5</X>
|
||||
<Y>900</Y>
|
||||
<W>225</W>
|
||||
<H>75</H>
|
||||
<Z>0</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_BACK</Text>
|
||||
</Text>
|
||||
<Reflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</Reflection>
|
||||
<SelReflection>
|
||||
<Height>39</Height>
|
||||
<Space>15</Space>
|
||||
</SelReflection>
|
||||
</Button>
|
||||
</Buttons>
|
||||
<SongMenus />
|
||||
<Lyrics />
|
||||
<SelectSlides>
|
||||
<SelectSlide Name="SelectSlideSource">
|
||||
<Skin />
|
||||
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
|
||||
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
|
||||
<SkinSelected>SelectSlide</SkinSelected>
|
||||
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
|
||||
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
|
||||
<Rect>
|
||||
<X>750</X>
|
||||
<Y>150</Y>
|
||||
<W>1050</W>
|
||||
<H>75</H>
|
||||
<Z>0</Z>
|
||||
</Rect>
|
||||
<RectArrowLeft>
|
||||
<X>757.5</X>
|
||||
<Y>157.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowLeft>
|
||||
<RectArrowRight>
|
||||
<X>1732.5</X>
|
||||
<Y>157.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowRight>
|
||||
<Color Name="SelectSlideColor" />
|
||||
<SelColor Name="SelectSlideSelColor" />
|
||||
<ArrowColor Name="ArrowColor" />
|
||||
<ArrowSelColor Name="ArrowSelColor" />
|
||||
<TextColor Name="TextColorAlpha" />
|
||||
<TextSelColor Name="TextSelColor" />
|
||||
<TextH>40.5</TextH>
|
||||
<TextRelativeX>75</TextRelativeX>
|
||||
<TextRelativeY>0</TextRelativeY>
|
||||
<TextMaxW>308</TextMaxW>
|
||||
<TextFont>Outline</TextFont>
|
||||
<TextStyle>Bold</TextStyle>
|
||||
<NumVisible>3</NumVisible>
|
||||
</SelectSlide>
|
||||
<SelectSlide Name="SelectSlidePlaylist">
|
||||
<Skin />
|
||||
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
|
||||
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
|
||||
<SkinSelected>SelectSlide</SkinSelected>
|
||||
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
|
||||
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
|
||||
<Rect>
|
||||
<X>750</X>
|
||||
<Y>240</Y>
|
||||
<W>1050</W>
|
||||
<H>75</H>
|
||||
<Z>0</Z>
|
||||
</Rect>
|
||||
<RectArrowLeft>
|
||||
<X>757.5</X>
|
||||
<Y>247.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowLeft>
|
||||
<RectArrowRight>
|
||||
<X>1732.5</X>
|
||||
<Y>247.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowRight>
|
||||
<Color Name="SelectSlideColor" />
|
||||
<SelColor Name="SelectSlideSelColor" />
|
||||
<ArrowColor Name="ArrowColor" />
|
||||
<ArrowSelColor Name="ArrowSelColor" />
|
||||
<TextColor Name="TextColorAlpha" />
|
||||
<TextSelColor Name="TextSelColor" />
|
||||
<TextH>40.5</TextH>
|
||||
<TextRelativeX>75</TextRelativeX>
|
||||
<TextRelativeY>0</TextRelativeY>
|
||||
<TextMaxW>900</TextMaxW>
|
||||
<TextFont>Outline</TextFont>
|
||||
<TextStyle>Bold</TextStyle>
|
||||
<NumVisible>3</NumVisible>
|
||||
</SelectSlide>
|
||||
<SelectSlide Name="SelectSlideSorting">
|
||||
<Skin />
|
||||
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
|
||||
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
|
||||
<SkinSelected>SelectSlide</SkinSelected>
|
||||
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
|
||||
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
|
||||
<Rect>
|
||||
<X>750</X>
|
||||
<Y>240</Y>
|
||||
<W>1050</W>
|
||||
<H>75</H>
|
||||
<Z>0</Z>
|
||||
</Rect>
|
||||
<RectArrowLeft>
|
||||
<X>757.5</X>
|
||||
<Y>247.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowLeft>
|
||||
<RectArrowRight>
|
||||
<X>1732.5</X>
|
||||
<Y>247.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowRight>
|
||||
<Color Name="SelectSlideColor" />
|
||||
<SelColor Name="SelectSlideSelColor" />
|
||||
<ArrowColor Name="ArrowColor" />
|
||||
<ArrowSelColor Name="ArrowSelColor" />
|
||||
<TextColor Name="TextColorAlpha" />
|
||||
<TextSelColor Name="TextSelColor" />
|
||||
<TextH>40.5</TextH>
|
||||
<TextRelativeX>75</TextRelativeX>
|
||||
<TextRelativeY>0</TextRelativeY>
|
||||
<TextMaxW>900</TextMaxW>
|
||||
<TextFont>Outline</TextFont>
|
||||
<TextStyle>Bold</TextStyle>
|
||||
<NumVisible>3</NumVisible>
|
||||
</SelectSlide>
|
||||
<SelectSlide Name="SelectSlideCategory">
|
||||
<Skin />
|
||||
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
|
||||
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
|
||||
<SkinSelected>SelectSlide</SkinSelected>
|
||||
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
|
||||
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
|
||||
<Rect>
|
||||
<X>750</X>
|
||||
<Y>330</Y>
|
||||
<W>1050</W>
|
||||
<H>75</H>
|
||||
<Z>0</Z>
|
||||
</Rect>
|
||||
<RectArrowLeft>
|
||||
<X>757.5</X>
|
||||
<Y>337.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowLeft>
|
||||
<RectArrowRight>
|
||||
<X>1732.5</X>
|
||||
<Y>337.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowRight>
|
||||
<Color Name="SelectSlideColor" />
|
||||
<SelColor Name="SelectSlideSelColor" />
|
||||
<ArrowColor Name="ArrowColor" />
|
||||
<ArrowSelColor Name="ArrowSelColor" />
|
||||
<TextColor Name="TextColorAlpha" />
|
||||
<TextSelColor Name="TextSelColor" />
|
||||
<TextH>40.5</TextH>
|
||||
<TextRelativeX>75</TextRelativeX>
|
||||
<TextRelativeY>0</TextRelativeY>
|
||||
<TextMaxW>900</TextMaxW>
|
||||
<TextFont>Outline</TextFont>
|
||||
<TextStyle>Bold</TextStyle>
|
||||
<NumVisible>1</NumVisible>
|
||||
</SelectSlide>
|
||||
<SelectSlide Name="SelectSlideSongMode">
|
||||
<Skin />
|
||||
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
|
||||
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
|
||||
<SkinSelected>SelectSlide</SkinSelected>
|
||||
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
|
||||
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
|
||||
<Rect>
|
||||
<X>750</X>
|
||||
<Y>435</Y>
|
||||
<W>1050</W>
|
||||
<H>75</H>
|
||||
<Z>0</Z>
|
||||
</Rect>
|
||||
<RectArrowLeft>
|
||||
<X>757.5</X>
|
||||
<Y>442.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowLeft>
|
||||
<RectArrowRight>
|
||||
<X>1732.5</X>
|
||||
<Y>442.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowRight>
|
||||
<Color Name="SelectSlideColor" />
|
||||
<SelColor Name="SelectSlideSelColor" />
|
||||
<ArrowColor Name="ArrowColor" />
|
||||
<ArrowSelColor Name="ArrowSelColor" />
|
||||
<TextColor Name="TextColorAlpha" />
|
||||
<TextSelColor Name="TextSelColor" />
|
||||
<TextH>40.5</TextH>
|
||||
<TextRelativeX>75</TextRelativeX>
|
||||
<TextRelativeY>0</TextRelativeY>
|
||||
<TextMaxW>308</TextMaxW>
|
||||
<TextFont>Outline</TextFont>
|
||||
<TextStyle>Bold</TextStyle>
|
||||
<NumVisible>2</NumVisible>
|
||||
</SelectSlide>
|
||||
<SelectSlide Name="SelectSlideNumMedleySongs">
|
||||
<Skin />
|
||||
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
|
||||
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
|
||||
<SkinSelected>SelectSlide</SkinSelected>
|
||||
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
|
||||
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
|
||||
<Rect>
|
||||
<X>750</X>
|
||||
<Y>540</Y>
|
||||
<W>1050</W>
|
||||
<H>75</H>
|
||||
<Z>0</Z>
|
||||
</Rect>
|
||||
<RectArrowLeft>
|
||||
<X>757.5</X>
|
||||
<Y>547.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowLeft>
|
||||
<RectArrowRight>
|
||||
<X>1732.5</X>
|
||||
<Y>547.5</Y>
|
||||
<W>60</W>
|
||||
<H>60</H>
|
||||
<Z>0</Z>
|
||||
</RectArrowRight>
|
||||
<Color Name="SelectSlideColor" />
|
||||
<SelColor Name="SelectSlideSelColor" />
|
||||
<ArrowColor Name="ArrowColor" />
|
||||
<ArrowSelColor Name="ArrowSelColor" />
|
||||
<TextColor Name="TextColorAlpha" />
|
||||
<TextSelColor Name="TextSelColor" />
|
||||
<TextH>40.5</TextH>
|
||||
<TextRelativeX>75</TextRelativeX>
|
||||
<TextRelativeY>0</TextRelativeY>
|
||||
<TextMaxW>308</TextMaxW>
|
||||
<TextFont>Outline</TextFont>
|
||||
<TextStyle>Bold</TextStyle>
|
||||
<NumVisible>5</NumVisible>
|
||||
</SelectSlide>
|
||||
</SelectSlides>
|
||||
<SingNotes />
|
||||
<NameSelections />
|
||||
<Equalizers />
|
||||
<Playlists />
|
||||
<ParticleEffects />
|
||||
<ScreenSettings />
|
||||
</Screen>
|
||||
@@ -0,0 +1,711 @@
|
||||
#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.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using VocaluxeLib.Menu;
|
||||
using VocaluxeLib.Utils;
|
||||
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
namespace VocaluxeLib.PartyModes.Tournament
|
||||
{
|
||||
public class CTournamentMatch
|
||||
{
|
||||
public int Round;
|
||||
public int Index;
|
||||
public int Player1 = -1;
|
||||
public int Player2 = -1;
|
||||
public int Score1;
|
||||
public int Score2;
|
||||
public int Winner = -1;
|
||||
public bool Bye;
|
||||
|
||||
public bool Played
|
||||
{
|
||||
get { return Winner >= 0; }
|
||||
}
|
||||
|
||||
public bool Ready
|
||||
{
|
||||
get { return !Played && Player1 >= 0 && Player2 >= 0; }
|
||||
}
|
||||
|
||||
public int WinnerPlayer
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Winner == 0)
|
||||
{
|
||||
return Player1;
|
||||
}
|
||||
|
||||
return Winner == 1 ? Player2 : -1;
|
||||
}
|
||||
}
|
||||
|
||||
public int LoserPlayer
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Winner == 0)
|
||||
{
|
||||
return Player2;
|
||||
}
|
||||
|
||||
return Winner == 1 ? Player1 : -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public abstract class CPartyScreenTournament : CMenuParty
|
||||
{
|
||||
protected new CPartyModeTournament _PartyMode;
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
base.Init();
|
||||
_PartyMode = (CPartyModeTournament)base._PartyMode;
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class CPartyModeTournament : CPartyMode
|
||||
{
|
||||
public const int NumPlayerAtOnce = 2;
|
||||
public const int MaxJokers = 3;
|
||||
|
||||
public override int MinMics
|
||||
{
|
||||
get { return NumPlayerAtOnce; }
|
||||
}
|
||||
public override int MaxMics
|
||||
{
|
||||
get { return CBase.Config.GetMaxNumMics(); }
|
||||
}
|
||||
public override int MinPlayers
|
||||
{
|
||||
get { return 3; }
|
||||
}
|
||||
public override int MaxPlayers
|
||||
{
|
||||
get { return 16; }
|
||||
}
|
||||
public override int MinTeams
|
||||
{
|
||||
get { return 1; }
|
||||
}
|
||||
public override int MaxTeams
|
||||
{
|
||||
get { return 1; }
|
||||
}
|
||||
public override int MinPlayersPerTeam
|
||||
{
|
||||
get { return MinPlayers; }
|
||||
}
|
||||
public override int MaxPlayersPerTeam
|
||||
{
|
||||
get { return MaxPlayers; }
|
||||
}
|
||||
|
||||
private enum EStage
|
||||
{
|
||||
Config,
|
||||
Songs,
|
||||
Names,
|
||||
Main,
|
||||
SongSelection,
|
||||
Singing,
|
||||
MedleySinging
|
||||
}
|
||||
|
||||
public struct SData
|
||||
{
|
||||
public int NumPlayer;
|
||||
public int NumJokers;
|
||||
public int[] Jokers;
|
||||
public List<Guid> ProfileIds;
|
||||
|
||||
public ESongSource SongSource;
|
||||
public ESongSorting Sorting;
|
||||
public int CategoryIndex;
|
||||
public int PlaylistId;
|
||||
|
||||
public EGameMode GameMode;
|
||||
public int NumMedleySongs;
|
||||
|
||||
public List<CTournamentMatch[]> Rounds;
|
||||
public bool IsRematch;
|
||||
public int NumMatchesPlayed;
|
||||
public CTournamentMatch LastDecidedMatch;
|
||||
|
||||
public List<int> Songs;
|
||||
}
|
||||
|
||||
public SData GameData;
|
||||
private EStage _Stage;
|
||||
|
||||
public CPartyModeTournament(int id) : base(id)
|
||||
{
|
||||
_ScreenSongOptions.Selection.RandomOnly = false;
|
||||
_ScreenSongOptions.Selection.PartyMode = true;
|
||||
_ScreenSongOptions.Selection.CategoryChangeAllowed = true;
|
||||
_ScreenSongOptions.Selection.NumJokers = new int[] { 1, 1 };
|
||||
_ScreenSongOptions.Selection.TeamNames = new string[] { "foo", "bar" };
|
||||
|
||||
_ScreenSongOptions.Sorting.SearchString = string.Empty;
|
||||
_ScreenSongOptions.Sorting.SearchActive = false;
|
||||
_ScreenSongOptions.Sorting.DuetOptions = EDuetOptions.NoDuets;
|
||||
_ScreenSongOptions.Sorting.FilterPlaylistId = -1;
|
||||
|
||||
GameData = new SData
|
||||
{
|
||||
NumPlayer = 8,
|
||||
NumJokers = 1,
|
||||
ProfileIds = new List<Guid>(),
|
||||
Sorting = CBase.Config.GetSongSorting(),
|
||||
SongSource = ESongSource.TR_SONGSOURCE_ALLSONGS,
|
||||
PlaylistId = 0,
|
||||
CategoryIndex = 0,
|
||||
GameMode = EGameMode.TR_GAMEMODE_NORMAL,
|
||||
NumMedleySongs = 5,
|
||||
Rounds = new List<CTournamentMatch[]>(),
|
||||
Songs = new List<int>()
|
||||
};
|
||||
}
|
||||
|
||||
public override void SetDefaults()
|
||||
{
|
||||
_Stage = EStage.Config;
|
||||
|
||||
_ScreenSongOptions.Sorting.IgnoreArticles = CBase.Config.GetIgnoreArticles();
|
||||
_ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting();
|
||||
_ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_OFF;
|
||||
_ScreenSongOptions.Selection.SongIndex = -1;
|
||||
_ScreenSongOptions.Selection.CategoryIndex = -1;
|
||||
|
||||
if (CBase.Config.GetTabs() == EOffOn.TR_CONFIG_ON && _ScreenSongOptions.Sorting.SongSorting != ESongSorting.TR_CONFIG_NONE)
|
||||
{
|
||||
_ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_ON;
|
||||
}
|
||||
|
||||
GameData.Rounds = new List<CTournamentMatch[]>();
|
||||
}
|
||||
|
||||
public override bool Init()
|
||||
{
|
||||
if (!base.Init())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SetDefaults();
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void UpdateGame() { }
|
||||
|
||||
public int NumRounds
|
||||
{
|
||||
get { return GameData.Rounds.Count; }
|
||||
}
|
||||
|
||||
public CTournamentMatch FinalMatch
|
||||
{
|
||||
get { return GameData.Rounds.Count > 0 ? GameData.Rounds[GameData.Rounds.Count - 1][0] : null; }
|
||||
}
|
||||
|
||||
public bool IsFinished
|
||||
{
|
||||
get { return FinalMatch != null && FinalMatch.Played; }
|
||||
}
|
||||
|
||||
public CTournamentMatch CurrentMatch
|
||||
{
|
||||
get
|
||||
{
|
||||
foreach (var round in GameData.Rounds)
|
||||
{
|
||||
foreach (var match in round)
|
||||
{
|
||||
if (match.Ready)
|
||||
{
|
||||
return match;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private IMenu _GetNextScreen()
|
||||
{
|
||||
switch (_Stage)
|
||||
{
|
||||
case EStage.Config:
|
||||
return _Screens["CPartyScreenTournamentConfig"];
|
||||
case EStage.Songs:
|
||||
return _Screens["CPartyScreenTournamentSongs"];
|
||||
case EStage.Names:
|
||||
return _Screens["CPartyScreenTournamentNames"];
|
||||
case EStage.Main:
|
||||
return _Screens["CPartyScreenTournamentMain"];
|
||||
case EStage.SongSelection:
|
||||
return CBase.Graphics.GetScreen(EScreen.Song);
|
||||
case EStage.Singing:
|
||||
case EStage.MedleySinging:
|
||||
return CBase.Graphics.GetScreen(EScreen.Sing);
|
||||
default:
|
||||
throw new ArgumentException("Invalid stage: " + _Stage);
|
||||
}
|
||||
}
|
||||
|
||||
private void _FadeToScreen()
|
||||
{
|
||||
CBase.Graphics.FadeTo(_GetNextScreen());
|
||||
}
|
||||
|
||||
public void Next()
|
||||
{
|
||||
switch (_Stage)
|
||||
{
|
||||
case EStage.Config:
|
||||
_Stage = EStage.Songs;
|
||||
break;
|
||||
case EStage.Songs:
|
||||
_Stage = EStage.Names;
|
||||
break;
|
||||
case EStage.Names:
|
||||
_Stage = EStage.Main;
|
||||
CBase.Songs.ResetSongSung();
|
||||
_CreateBracket();
|
||||
break;
|
||||
case EStage.Main:
|
||||
if (CurrentMatch == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (GameData.GameMode == EGameMode.TR_GAMEMODE_MEDLEY)
|
||||
{
|
||||
_Stage = EStage.MedleySinging;
|
||||
_PrepareMedleyRound();
|
||||
}
|
||||
else
|
||||
{
|
||||
_Stage = EStage.SongSelection;
|
||||
_PrepareSongSelection();
|
||||
}
|
||||
|
||||
break;
|
||||
case EStage.SongSelection:
|
||||
_Stage = EStage.Singing;
|
||||
break;
|
||||
case EStage.MedleySinging:
|
||||
case EStage.Singing:
|
||||
_Stage = EStage.Main;
|
||||
_UpdateScores();
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentException("Invalid stage: " + _Stage);
|
||||
}
|
||||
|
||||
_FadeToScreen();
|
||||
}
|
||||
|
||||
public void Back()
|
||||
{
|
||||
switch (_Stage)
|
||||
{
|
||||
case EStage.Config:
|
||||
CBase.Graphics.FadeTo(EScreen.Party);
|
||||
return;
|
||||
case EStage.Songs:
|
||||
_Stage = EStage.Config;
|
||||
break;
|
||||
case EStage.Names:
|
||||
_Stage = EStage.Songs;
|
||||
break;
|
||||
case EStage.Main:
|
||||
_Stage = EStage.Names;
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentException("Invalid stage: " + _Stage);
|
||||
}
|
||||
|
||||
_FadeToScreen();
|
||||
}
|
||||
|
||||
public override IMenu GetStartScreen()
|
||||
{
|
||||
return _Screens["CPartyScreenTournamentConfig"];
|
||||
}
|
||||
|
||||
public override SScreenSongOptions GetScreenSongOptions()
|
||||
{
|
||||
return _ScreenSongOptions;
|
||||
}
|
||||
|
||||
public override void OnSongChange(int songIndex, ref SScreenSongOptions screenSongOptions)
|
||||
{
|
||||
if (_ScreenSongOptions.Selection.SelectNextRandomSong && songIndex != -1)
|
||||
{
|
||||
_ScreenSongOptions.Selection.SelectNextRandomSong = false;
|
||||
}
|
||||
|
||||
_ScreenSongOptions.Selection.SongIndex = songIndex;
|
||||
|
||||
screenSongOptions = _ScreenSongOptions;
|
||||
}
|
||||
|
||||
public override void OnCategoryChange(int categoryIndex, ref SScreenSongOptions screenSongOptions)
|
||||
{
|
||||
if (categoryIndex != -1 || CBase.Config.GetTabs() == EOffOn.TR_CONFIG_OFF)
|
||||
{
|
||||
_ScreenSongOptions.Selection.SelectNextRandomSong = true;
|
||||
_ScreenSongOptions.Selection.RandomOnly = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
_ScreenSongOptions.Selection.SongIndex = -1;
|
||||
_ScreenSongOptions.Selection.RandomOnly = false;
|
||||
}
|
||||
|
||||
_ScreenSongOptions.Selection.CategoryIndex = categoryIndex;
|
||||
|
||||
screenSongOptions = _ScreenSongOptions;
|
||||
}
|
||||
|
||||
public override void SetSearchString(string searchString, bool visible)
|
||||
{
|
||||
_ScreenSongOptions.Sorting.SearchString = searchString;
|
||||
_ScreenSongOptions.Sorting.SearchActive = visible;
|
||||
}
|
||||
|
||||
public override void JokerUsed(int teamNr)
|
||||
{
|
||||
if (_ScreenSongOptions.Selection.NumJokers == null || teamNr >= _ScreenSongOptions.Selection.NumJokers.Length)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var match = CurrentMatch;
|
||||
if (match != null && GameData.Jokers != null)
|
||||
{
|
||||
var player = teamNr == 0 ? match.Player1 : match.Player2;
|
||||
if (GameData.Jokers[player] > 0)
|
||||
{
|
||||
GameData.Jokers[player]--;
|
||||
}
|
||||
}
|
||||
|
||||
_ScreenSongOptions.Selection.NumJokers[teamNr]--;
|
||||
_ScreenSongOptions.Selection.RandomOnly = true;
|
||||
_ScreenSongOptions.Selection.CategoryChangeAllowed = false;
|
||||
}
|
||||
|
||||
public override void SongSelected(int songId)
|
||||
{
|
||||
_PrepareRound(new int[] { songId });
|
||||
|
||||
Next();
|
||||
}
|
||||
|
||||
public override void LeavingHighscore()
|
||||
{
|
||||
for (var i = 0; i < CBase.Game.GetNumSongs(); i++)
|
||||
{
|
||||
CBase.Songs.AddPartySongSung(CBase.Game.GetSong(i).Id);
|
||||
}
|
||||
|
||||
Next();
|
||||
}
|
||||
|
||||
private void _CreateBracket()
|
||||
{
|
||||
var size = 4;
|
||||
while (size < GameData.NumPlayer)
|
||||
{
|
||||
size *= 2;
|
||||
}
|
||||
|
||||
GameData.Rounds = new List<CTournamentMatch[]>();
|
||||
for (var count = size / 2; count >= 1; count /= 2)
|
||||
{
|
||||
var round = new CTournamentMatch[count];
|
||||
for (var i = 0; i < count; i++)
|
||||
{
|
||||
round[i] = new CTournamentMatch { Round = GameData.Rounds.Count, Index = i };
|
||||
}
|
||||
|
||||
GameData.Rounds.Add(round);
|
||||
}
|
||||
|
||||
var firstRound = GameData.Rounds[0];
|
||||
var half = firstRound.Length / 2;
|
||||
var byeOrder = new List<int>();
|
||||
for (var i = 0; i < half; i++)
|
||||
{
|
||||
byeOrder.Add(i);
|
||||
byeOrder.Add(half + i);
|
||||
}
|
||||
|
||||
var numByes = size - GameData.NumPlayer;
|
||||
for (var i = 0; i < numByes; i++)
|
||||
{
|
||||
firstRound[byeOrder[i]].Bye = true;
|
||||
}
|
||||
|
||||
var players = Enumerable.Range(0, GameData.NumPlayer).ToList();
|
||||
players.Shuffle();
|
||||
var next = 0;
|
||||
foreach (var match in firstRound)
|
||||
{
|
||||
match.Player1 = players[next++];
|
||||
if (!match.Bye)
|
||||
{
|
||||
match.Player2 = players[next++];
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var match in firstRound)
|
||||
{
|
||||
if (match.Bye)
|
||||
{
|
||||
match.Winner = 0;
|
||||
_Advance(match);
|
||||
}
|
||||
}
|
||||
|
||||
GameData.Jokers = new int[GameData.NumPlayer];
|
||||
for (var i = 0; i < GameData.NumPlayer; i++)
|
||||
{
|
||||
GameData.Jokers[i] = GameData.NumJokers;
|
||||
}
|
||||
|
||||
GameData.IsRematch = false;
|
||||
GameData.NumMatchesPlayed = 0;
|
||||
GameData.LastDecidedMatch = null;
|
||||
GameData.Songs = new List<int>();
|
||||
}
|
||||
|
||||
private void _Advance(CTournamentMatch match)
|
||||
{
|
||||
if (match.Round + 1 >= GameData.Rounds.Count)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var nextMatch = GameData.Rounds[match.Round + 1][match.Index / 2];
|
||||
if (match.Index % 2 == 0)
|
||||
{
|
||||
nextMatch.Player1 = match.WinnerPlayer;
|
||||
}
|
||||
else
|
||||
{
|
||||
nextMatch.Player2 = match.WinnerPlayer;
|
||||
}
|
||||
}
|
||||
|
||||
private void _PrepareMedleyRound()
|
||||
{
|
||||
var songIds = new List<int>();
|
||||
for (var i = 0; i < GameData.NumMedleySongs; i++)
|
||||
{
|
||||
if (GameData.Songs.Count == 0)
|
||||
{
|
||||
_UpdateSongList();
|
||||
}
|
||||
|
||||
if (GameData.Songs.Count == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
songIds.Add(GameData.Songs[0]);
|
||||
GameData.Songs.RemoveAt(0);
|
||||
}
|
||||
|
||||
_PrepareRound(songIds.ToArray());
|
||||
}
|
||||
|
||||
private void _PrepareSongSelection()
|
||||
{
|
||||
_ScreenSongOptions.Selection.RandomOnly = true;
|
||||
_ScreenSongOptions.Selection.SelectNextRandomSong = true;
|
||||
|
||||
_ScreenSongOptions.Sorting.IgnoreArticles = CBase.Config.GetIgnoreArticles();
|
||||
|
||||
switch (GameData.SongSource)
|
||||
{
|
||||
case ESongSource.TR_SONGSOURCE_ALLSONGS:
|
||||
_ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting();
|
||||
_ScreenSongOptions.Sorting.Tabs = CBase.Config.GetTabs();
|
||||
_ScreenSongOptions.Sorting.FilterPlaylistId = -1;
|
||||
|
||||
_ScreenSongOptions.Selection.SongIndex = -1;
|
||||
_ScreenSongOptions.Selection.CategoryIndex = -1;
|
||||
_ScreenSongOptions.Selection.CategoryChangeAllowed = true;
|
||||
break;
|
||||
|
||||
case ESongSource.TR_SONGSOURCE_CATEGORY:
|
||||
_ScreenSongOptions.Sorting.SongSorting = GameData.Sorting;
|
||||
_ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_ON;
|
||||
_ScreenSongOptions.Sorting.FilterPlaylistId = -1;
|
||||
|
||||
_ScreenSongOptions.Selection.CategoryIndex = GameData.CategoryIndex;
|
||||
_ScreenSongOptions.Selection.CategoryChangeAllowed = false;
|
||||
break;
|
||||
|
||||
case ESongSource.TR_SONGSOURCE_PLAYLIST:
|
||||
_ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting();
|
||||
_ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_OFF;
|
||||
_ScreenSongOptions.Sorting.FilterPlaylistId = GameData.PlaylistId;
|
||||
|
||||
_ScreenSongOptions.Selection.CategoryChangeAllowed = false;
|
||||
break;
|
||||
}
|
||||
|
||||
var match = CurrentMatch;
|
||||
_ScreenSongOptions.Selection.NumJokers = new int[] { GameData.Jokers[match.Player1], GameData.Jokers[match.Player2] };
|
||||
_ScreenSongOptions.Selection.TeamNames = new string[]
|
||||
{
|
||||
CBase.Profiles.GetPlayerName(GameData.ProfileIds[match.Player1]),
|
||||
CBase.Profiles.GetPlayerName(GameData.ProfileIds[match.Player2])
|
||||
};
|
||||
}
|
||||
|
||||
private bool _PrepareRound(int[] songIds)
|
||||
{
|
||||
CBase.Game.Reset();
|
||||
CBase.Game.ClearSongs();
|
||||
|
||||
CBase.Game.SetNumPlayer(NumPlayerAtOnce);
|
||||
var players = CBase.Game.GetPlayers();
|
||||
var match = CurrentMatch;
|
||||
if (players == null || players.Length < NumPlayerAtOnce || match == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
players[0].ProfileId = GameData.ProfileIds[match.Player1];
|
||||
players[1].ProfileId = GameData.ProfileIds[match.Player2];
|
||||
|
||||
foreach (var songId in songIds)
|
||||
{
|
||||
var gameMode = GameData.GameMode;
|
||||
if (GameData.IsRematch && gameMode != EGameMode.TR_GAMEMODE_MEDLEY && CBase.Songs.GetSongById(songId).IsGameModeAvailable(EGameMode.TR_GAMEMODE_SHORTSONG))
|
||||
{
|
||||
gameMode = EGameMode.TR_GAMEMODE_SHORTSONG;
|
||||
}
|
||||
|
||||
CBase.Game.AddSong(songId, gameMode);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void _UpdateSongList()
|
||||
{
|
||||
if (GameData.Songs.Count > 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
switch (GameData.SongSource)
|
||||
{
|
||||
case ESongSource.TR_SONGSOURCE_PLAYLIST:
|
||||
for (var i = 0; i < CBase.Playlist.GetSongCount(GameData.PlaylistId); i++)
|
||||
{
|
||||
var id = CBase.Playlist.GetSong(GameData.PlaylistId, i).SongId;
|
||||
if (CBase.Songs.GetSongById(id).IsGameModeAvailable(EGameMode.TR_GAMEMODE_MEDLEY))
|
||||
{
|
||||
GameData.Songs.Add(id);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case ESongSource.TR_SONGSOURCE_ALLSONGS:
|
||||
var avSongs = CBase.Songs.GetSongs();
|
||||
GameData.Songs.AddRange(avSongs.Where(song => song.IsGameModeAvailable(EGameMode.TR_GAMEMODE_MEDLEY)).Select(song => song.Id));
|
||||
break;
|
||||
|
||||
case ESongSource.TR_SONGSOURCE_CATEGORY:
|
||||
var oldSorting = CBase.Config.GetSongSorting();
|
||||
CBase.Songs.SortSongs(GameData.Sorting, EOffOn.TR_CONFIG_ON, CBase.Config.GetIgnoreArticles(), string.Empty, EDuetOptions.NoDuets, -1);
|
||||
|
||||
CBase.Songs.SetCategory(GameData.CategoryIndex);
|
||||
avSongs = CBase.Songs.GetVisibleSongs();
|
||||
GameData.Songs.AddRange(avSongs.Where(song => song.IsGameModeAvailable(EGameMode.TR_GAMEMODE_MEDLEY)).Select(song => song.Id));
|
||||
|
||||
CBase.Songs.SetCategory(-1);
|
||||
CBase.Songs.SortSongs(oldSorting, CBase.Config.GetTabs(), CBase.Config.GetIgnoreArticles(), string.Empty, EDuetOptions.NoDuets, -1);
|
||||
break;
|
||||
}
|
||||
|
||||
GameData.Songs.Shuffle();
|
||||
}
|
||||
|
||||
private void _UpdateScores()
|
||||
{
|
||||
var match = CurrentMatch;
|
||||
if (match == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var points = CBase.Game.GetPoints();
|
||||
if (points == null || points.NumRounds == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var scores = new double[NumPlayerAtOnce];
|
||||
for (var round = 0; round < points.NumRounds; round++)
|
||||
{
|
||||
var res = points.GetPlayer(round, NumPlayerAtOnce);
|
||||
if (res == null || res.Length < NumPlayerAtOnce)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (var p = 0; p < NumPlayerAtOnce; p++)
|
||||
{
|
||||
scores[p] += res[p].Points;
|
||||
}
|
||||
}
|
||||
|
||||
match.Score1 = (int)Math.Round(scores[0] / points.NumRounds);
|
||||
match.Score2 = (int)Math.Round(scores[1] / points.NumRounds);
|
||||
GameData.NumMatchesPlayed++;
|
||||
|
||||
if (match.Score1 == match.Score2)
|
||||
{
|
||||
GameData.IsRematch = true;
|
||||
return;
|
||||
}
|
||||
|
||||
GameData.IsRematch = false;
|
||||
GameData.LastDecidedMatch = match;
|
||||
match.Winner = match.Score1 > match.Score2 ? 0 : 1;
|
||||
_Advance(match);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
#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.Windows.Forms;
|
||||
|
||||
namespace VocaluxeLib.PartyModes.Tournament
|
||||
{
|
||||
public class CPartyScreenTournamentConfig : CPartyScreenTournament
|
||||
{
|
||||
protected override int _ScreenVersion
|
||||
{
|
||||
get { return 1; }
|
||||
}
|
||||
|
||||
private const string _SelectSlideNumPlayers = "SelectSlideNumPlayers";
|
||||
private const string _SelectSlideNumJokers = "SelectSlideNumJokers";
|
||||
private const string _ButtonNext = "ButtonNext";
|
||||
private const string _ButtonBack = "ButtonBack";
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
base.Init();
|
||||
|
||||
_ThemeSelectSlides = new string[] { _SelectSlideNumPlayers, _SelectSlideNumJokers };
|
||||
_ThemeButtons = new string[] { _ButtonNext, _ButtonBack };
|
||||
}
|
||||
|
||||
public override bool HandleInput(SKeyEvent keyEvent)
|
||||
{
|
||||
base.HandleInput(keyEvent);
|
||||
|
||||
if (!keyEvent.KeyPressed)
|
||||
{
|
||||
switch (keyEvent.Key)
|
||||
{
|
||||
case Keys.Back:
|
||||
case Keys.Escape:
|
||||
_PartyMode.Back();
|
||||
break;
|
||||
|
||||
case Keys.Enter:
|
||||
_UpdateSlides();
|
||||
|
||||
if (_Buttons[_ButtonBack].Selected)
|
||||
{
|
||||
_PartyMode.Back();
|
||||
}
|
||||
|
||||
if (_Buttons[_ButtonNext].Selected)
|
||||
{
|
||||
_PartyMode.Next();
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case Keys.Left:
|
||||
case Keys.Right:
|
||||
_UpdateSlides();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HandleMouse(SMouseEvent mouseEvent)
|
||||
{
|
||||
base.HandleMouse(mouseEvent);
|
||||
|
||||
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
|
||||
{
|
||||
_UpdateSlides();
|
||||
if (_Buttons[_ButtonBack].Selected)
|
||||
{
|
||||
_PartyMode.Back();
|
||||
}
|
||||
|
||||
if (_Buttons[_ButtonNext].Selected)
|
||||
{
|
||||
_PartyMode.Next();
|
||||
}
|
||||
}
|
||||
|
||||
if (mouseEvent.RB)
|
||||
{
|
||||
_PartyMode.Back();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void OnShow()
|
||||
{
|
||||
base.OnShow();
|
||||
|
||||
_SelectSlides[_SelectSlideNumPlayers].Clear();
|
||||
for (var i = _PartyMode.MinPlayers; i <= _PartyMode.MaxPlayers; i++)
|
||||
{
|
||||
_SelectSlides[_SelectSlideNumPlayers].AddValue(i.ToString());
|
||||
}
|
||||
|
||||
_SelectSlides[_SelectSlideNumPlayers].SelectedValue = _PartyMode.GameData.NumPlayer.ToString();
|
||||
|
||||
_SelectSlides[_SelectSlideNumJokers].Clear();
|
||||
for (var i = 0; i <= CPartyModeTournament.MaxJokers; i++)
|
||||
{
|
||||
_SelectSlides[_SelectSlideNumJokers].AddValue(i.ToString());
|
||||
}
|
||||
|
||||
_SelectSlides[_SelectSlideNumJokers].SelectedValue = _PartyMode.GameData.NumJokers.ToString();
|
||||
}
|
||||
|
||||
public override bool UpdateGame()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
private void _UpdateSlides()
|
||||
{
|
||||
_PartyMode.GameData.NumPlayer = _SelectSlides[_SelectSlideNumPlayers].Selection + _PartyMode.MinPlayers;
|
||||
_PartyMode.GameData.NumJokers = _SelectSlides[_SelectSlideNumJokers].Selection;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,716 @@
|
||||
#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.Windows.Forms;
|
||||
using VocaluxeLib.Menu;
|
||||
|
||||
namespace VocaluxeLib.PartyModes.Tournament
|
||||
{
|
||||
class CMatchBox
|
||||
{
|
||||
public CStatic Box;
|
||||
public CStatic Active;
|
||||
public CStatic[] Avatars;
|
||||
public CText[] Names;
|
||||
public CText[] Scores;
|
||||
}
|
||||
|
||||
public class CPartyScreenTournamentMain : CPartyScreenTournament
|
||||
{
|
||||
protected override int _ScreenVersion
|
||||
{
|
||||
get { return 1; }
|
||||
}
|
||||
|
||||
private const string _TextPopupReallyExit = "TextPopupReallyExit";
|
||||
private const string _TextRoundLabel = "TextRoundLabel";
|
||||
private const string _TextMatchName = "TextMatchName";
|
||||
private const string _TextMatchNameWinner = "TextMatchNameWinner";
|
||||
private const string _TextMatchNameLoser = "TextMatchNameLoser";
|
||||
private const string _TextMatchScore = "TextMatchScore";
|
||||
private const string _TextChampionLabel = "TextChampionLabel";
|
||||
private const string _TextChampion = "TextChampion";
|
||||
private const string _TextNextMatch = "TextNextMatch";
|
||||
private const string _TextRematch = "TextRematch";
|
||||
|
||||
private const string _ButtonNextRound = "ButtonNextRound";
|
||||
private const string _ButtonBack = "ButtonBack";
|
||||
private const string _ButtonExit = "ButtonExit";
|
||||
private const string _ButtonPopupYes = "ButtonPopupYes";
|
||||
private const string _ButtonPopupNo = "ButtonPopupNo";
|
||||
|
||||
private const string _StaticPopupBG = "StaticPopupBG";
|
||||
private const string _StaticMatchBox = "StaticMatchBox";
|
||||
private const string _StaticMatchActive = "StaticMatchActive";
|
||||
private const string _StaticMatchAvatar = "StaticMatchAvatar";
|
||||
private const string _StaticBracketLine = "StaticBracketLine";
|
||||
|
||||
private const string _ParticleEffectChampion = "ParticleEffectChampion";
|
||||
|
||||
private const int _MaxMatches = 15;
|
||||
private const int _MaxColumns = 7;
|
||||
private const int _MaxLines = 32;
|
||||
private const float _Margin = 40f;
|
||||
private const float _AreaTop = 210f;
|
||||
private const float _AreaBottom = 830f;
|
||||
private const float _MaxBoxW = 380f;
|
||||
private const float _ColumnGap = 24f;
|
||||
private const float _ScoreW = 70f;
|
||||
private const float _RowH = 46f;
|
||||
private const float _BoxPadding = 4f;
|
||||
private const float _ActiveBorder = 4f;
|
||||
private const float _LineThickness = 3f;
|
||||
private const float _AdvanceDelay = 600f;
|
||||
private const float _AdvanceDuration = 900f;
|
||||
private const float _ChampionPopDuration = 700f;
|
||||
private const float _FlyZ = -0.5f;
|
||||
|
||||
private bool _ExitPopupVisible;
|
||||
|
||||
private List<CMatchBox> _MatchBoxes;
|
||||
private List<CText> _RoundLabels;
|
||||
private List<CStatic> _Lines;
|
||||
private int _NumLinesUsed;
|
||||
|
||||
private readonly Stopwatch _AnimTimer = new Stopwatch();
|
||||
private CTournamentMatch _AdvanceMatch;
|
||||
private CTournamentMatch _AdvanceTarget;
|
||||
private int _AdvanceSlot;
|
||||
private bool _ChampionShown;
|
||||
private float _ChampionHeight;
|
||||
|
||||
private CStatic _FlyBorder;
|
||||
private CStatic _FlyBox;
|
||||
private CStatic _FlyAvatar;
|
||||
private CText _FlyName;
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
base.Init();
|
||||
|
||||
_ThemeTexts = new string[]
|
||||
{
|
||||
_TextPopupReallyExit, _TextRoundLabel, _TextMatchName, _TextMatchNameWinner, _TextMatchNameLoser, _TextMatchScore, _TextChampionLabel, _TextChampion,
|
||||
_TextNextMatch, _TextRematch
|
||||
};
|
||||
_ThemeButtons = new string[] { _ButtonNextRound, _ButtonBack, _ButtonExit, _ButtonPopupYes, _ButtonPopupNo };
|
||||
_ThemeStatics = new string[] { _StaticPopupBG, _StaticMatchBox, _StaticMatchActive, _StaticMatchAvatar, _StaticBracketLine };
|
||||
_ThemeParticleEffects = new string[] { _ParticleEffectChampion };
|
||||
}
|
||||
|
||||
public override void LoadTheme(string xmlPath)
|
||||
{
|
||||
base.LoadTheme(xmlPath);
|
||||
|
||||
_Lines = new List<CStatic>();
|
||||
for (var i = 0; i < _MaxLines; i++)
|
||||
{
|
||||
var line = GetNewStatic(_Statics[_StaticBracketLine]);
|
||||
_AddStatic(line);
|
||||
_Lines.Add(line);
|
||||
}
|
||||
|
||||
_MatchBoxes = new List<CMatchBox>();
|
||||
for (var i = 0; i < _MaxMatches; i++)
|
||||
{
|
||||
var matchBox = new CMatchBox
|
||||
{
|
||||
Active = GetNewStatic(_Statics[_StaticMatchActive]),
|
||||
Box = GetNewStatic(_Statics[_StaticMatchBox]),
|
||||
Avatars = new CStatic[CPartyModeTournament.NumPlayerAtOnce],
|
||||
Names = new CText[CPartyModeTournament.NumPlayerAtOnce],
|
||||
Scores = new CText[CPartyModeTournament.NumPlayerAtOnce]
|
||||
};
|
||||
_AddStatic(matchBox.Active);
|
||||
_AddStatic(matchBox.Box);
|
||||
|
||||
for (var p = 0; p < CPartyModeTournament.NumPlayerAtOnce; p++)
|
||||
{
|
||||
matchBox.Avatars[p] = GetNewStatic(_Statics[_StaticMatchAvatar]);
|
||||
matchBox.Avatars[p].Aspect = EAspect.Crop;
|
||||
_AddStatic(matchBox.Avatars[p]);
|
||||
matchBox.Names[p] = GetNewText(_Texts[_TextMatchName]);
|
||||
_AddText(matchBox.Names[p]);
|
||||
matchBox.Scores[p] = GetNewText(_Texts[_TextMatchScore]);
|
||||
_AddText(matchBox.Scores[p]);
|
||||
}
|
||||
|
||||
_MatchBoxes.Add(matchBox);
|
||||
}
|
||||
|
||||
_RoundLabels = new List<CText>();
|
||||
for (var i = 0; i < _MaxColumns; i++)
|
||||
{
|
||||
var label = GetNewText(_Texts[_TextRoundLabel]);
|
||||
_AddText(label);
|
||||
_RoundLabels.Add(label);
|
||||
}
|
||||
|
||||
_Statics[_StaticMatchBox].Visible = false;
|
||||
_Statics[_StaticMatchActive].Visible = false;
|
||||
_Statics[_StaticMatchAvatar].Visible = false;
|
||||
_Statics[_StaticBracketLine].Visible = false;
|
||||
_Texts[_TextRoundLabel].Visible = false;
|
||||
_Texts[_TextMatchName].Visible = false;
|
||||
_Texts[_TextMatchNameWinner].Visible = false;
|
||||
_Texts[_TextMatchNameLoser].Visible = false;
|
||||
_Texts[_TextMatchScore].Visible = false;
|
||||
|
||||
_FlyBorder = GetNewStatic(_Statics[_StaticMatchActive]);
|
||||
_FlyBox = GetNewStatic(_Statics[_StaticMatchBox]);
|
||||
_FlyAvatar = GetNewStatic(_Statics[_StaticMatchAvatar]);
|
||||
_FlyAvatar.Aspect = EAspect.Crop;
|
||||
_FlyName = GetNewText(_Texts[_TextMatchNameWinner]);
|
||||
_FlyName.Z = _FlyZ - 0.15f;
|
||||
_AddStatic(_FlyBorder);
|
||||
_AddStatic(_FlyBox);
|
||||
_AddStatic(_FlyAvatar);
|
||||
_AddText(_FlyName);
|
||||
_SetFlyVisible(false);
|
||||
|
||||
_ChampionHeight = _Texts[_TextChampion].Font.Height;
|
||||
}
|
||||
|
||||
public override bool HandleInput(SKeyEvent keyEvent)
|
||||
{
|
||||
base.HandleInput(keyEvent);
|
||||
|
||||
if (!keyEvent.KeyPressed)
|
||||
{
|
||||
switch (keyEvent.Key)
|
||||
{
|
||||
case Keys.Back:
|
||||
case Keys.Escape:
|
||||
_OnBack();
|
||||
break;
|
||||
|
||||
case Keys.Enter:
|
||||
_OnSelect();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool HandleMouse(SMouseEvent mouseEvent)
|
||||
{
|
||||
base.HandleMouse(mouseEvent);
|
||||
|
||||
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
|
||||
{
|
||||
_OnSelect();
|
||||
}
|
||||
|
||||
if (mouseEvent.RB)
|
||||
{
|
||||
_OnBack();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void OnShow()
|
||||
{
|
||||
base.OnShow();
|
||||
|
||||
_AdvanceMatch = _PartyMode.GameData.LastDecidedMatch;
|
||||
_PartyMode.GameData.LastDecidedMatch = null;
|
||||
_AdvanceTarget = null;
|
||||
if (_AdvanceMatch != null && _AdvanceMatch.Round + 1 < _PartyMode.NumRounds)
|
||||
{
|
||||
_AdvanceTarget = _PartyMode.GameData.Rounds[_AdvanceMatch.Round + 1][_AdvanceMatch.Index / 2];
|
||||
_AdvanceSlot = _AdvanceMatch.Index % 2;
|
||||
}
|
||||
|
||||
_ChampionShown = _PartyMode.IsFinished && _AdvanceMatch == null;
|
||||
_AnimTimer.Reset();
|
||||
_AnimTimer.Start();
|
||||
_SetFlyVisible(false);
|
||||
|
||||
_UpdateBracket();
|
||||
_UpdateInfo();
|
||||
|
||||
var started = _PartyMode.GameData.NumMatchesPlayed > 0;
|
||||
_Buttons[_ButtonBack].Visible = !started;
|
||||
_Buttons[_ButtonExit].Visible = started;
|
||||
_Buttons[_ButtonNextRound].Visible = !_PartyMode.IsFinished;
|
||||
|
||||
_ShowPopup(false);
|
||||
|
||||
if (_PartyMode.IsFinished)
|
||||
{
|
||||
_SelectElement(_Buttons[_ButtonExit]);
|
||||
}
|
||||
else
|
||||
{
|
||||
_SelectElement(_Buttons[_ButtonNextRound]);
|
||||
}
|
||||
}
|
||||
|
||||
public override bool UpdateGame()
|
||||
{
|
||||
if (_AdvanceMatch != null)
|
||||
{
|
||||
_UpdateAdvance();
|
||||
}
|
||||
|
||||
if (_ChampionShown)
|
||||
{
|
||||
_UpdateChampion();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private static float _EaseInOut(float t)
|
||||
{
|
||||
return t < 0.5f ? 4f * t * t * t : 1f - (float)Math.Pow(-2f * t + 2f, 3) / 2f;
|
||||
}
|
||||
|
||||
private static float _EaseOutBack(float t)
|
||||
{
|
||||
const float c1 = 1.70158f;
|
||||
const float c3 = c1 + 1f;
|
||||
return 1f + c3 * (float)Math.Pow(t - 1f, 3) + c1 * (float)Math.Pow(t - 1f, 2);
|
||||
}
|
||||
|
||||
private void _SetFlyVisible(bool visible)
|
||||
{
|
||||
_FlyBorder.Visible = visible;
|
||||
_FlyBox.Visible = visible;
|
||||
_FlyAvatar.Visible = visible;
|
||||
_FlyName.Visible = visible;
|
||||
}
|
||||
|
||||
private SRectF _GetRowRect(int round, int index, int slot)
|
||||
{
|
||||
var box = _GetBoxRect(round, index);
|
||||
return new SRectF(box.X, box.Y + _BoxPadding + slot * _RowH, box.W, _RowH, 0f);
|
||||
}
|
||||
|
||||
private void _UpdateAdvance()
|
||||
{
|
||||
var time = _AnimTimer.ElapsedMilliseconds - _AdvanceDelay;
|
||||
if (time < 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_AdvanceTarget == null)
|
||||
{
|
||||
_AdvanceMatch = null;
|
||||
_ChampionShown = true;
|
||||
_AnimTimer.Reset();
|
||||
_AnimTimer.Start();
|
||||
_UpdateInfo();
|
||||
return;
|
||||
}
|
||||
|
||||
var progress = Math.Min(1f, time / _AdvanceDuration);
|
||||
if (progress >= 1f)
|
||||
{
|
||||
_AdvanceMatch = null;
|
||||
_AdvanceTarget = null;
|
||||
_SetFlyVisible(false);
|
||||
_UpdateBracket();
|
||||
return;
|
||||
}
|
||||
|
||||
var from = _GetRowRect(_AdvanceMatch.Round, _AdvanceMatch.Index, _AdvanceMatch.Winner);
|
||||
var to = _GetRowRect(_AdvanceTarget.Round, _AdvanceTarget.Index, _AdvanceSlot);
|
||||
var eased = _EaseInOut(progress);
|
||||
var row = new SRectF(from.X + (to.X - from.X) * eased, from.Y + (to.Y - from.Y) * eased, from.W + (to.W - from.W) * eased, _RowH, 0f);
|
||||
|
||||
var avatarSize = _RowH - 8f;
|
||||
_FlyBox.MaxRect = new SRectF(row.X, row.Y, row.W, row.H, _FlyZ - 0.05f);
|
||||
_FlyBorder.MaxRect = new SRectF(row.X - _ActiveBorder, row.Y - _ActiveBorder, row.W + 2 * _ActiveBorder, row.H + 2 * _ActiveBorder, _FlyZ);
|
||||
_FlyAvatar.MaxRect = new SRectF(row.X + 8f, row.Y + 4f, avatarSize, avatarSize, _FlyZ - 0.1f);
|
||||
_FlyAvatar.Texture = CBase.Profiles.GetAvatar(_PartyMode.GameData.ProfileIds[_AdvanceMatch.WinnerPlayer]);
|
||||
_FlyName.Text = _GetName(_AdvanceMatch.WinnerPlayer);
|
||||
_FlyName.X = row.X + 16f + avatarSize;
|
||||
_FlyName.Y = row.Y + (_RowH - _FlyName.Rect.H) / 2;
|
||||
_FlyName.W = row.W - avatarSize - 24f;
|
||||
_SetFlyVisible(true);
|
||||
}
|
||||
|
||||
private void _UpdateChampion()
|
||||
{
|
||||
var time = _AnimTimer.ElapsedMilliseconds;
|
||||
float scale;
|
||||
if (time < _ChampionPopDuration)
|
||||
{
|
||||
scale = 0.3f + 0.7f * _EaseOutBack(time / _ChampionPopDuration);
|
||||
}
|
||||
else
|
||||
{
|
||||
scale = 1f + 0.03f * (float)Math.Sin((time - _ChampionPopDuration) / 1000.0 * Math.PI * 1.4);
|
||||
}
|
||||
|
||||
_Texts[_TextChampion].Font.Height = _ChampionHeight * scale;
|
||||
}
|
||||
|
||||
private void _OnBack()
|
||||
{
|
||||
if (_ExitPopupVisible)
|
||||
{
|
||||
_ShowPopup(false);
|
||||
}
|
||||
else if (_PartyMode.GameData.NumMatchesPlayed == 0)
|
||||
{
|
||||
_PartyMode.Back();
|
||||
}
|
||||
else if (_PartyMode.IsFinished)
|
||||
{
|
||||
_EndParty();
|
||||
}
|
||||
else
|
||||
{
|
||||
_ShowPopup(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void _OnSelect()
|
||||
{
|
||||
if (_ExitPopupVisible)
|
||||
{
|
||||
if (_Buttons[_ButtonPopupYes].Selected)
|
||||
{
|
||||
_EndParty();
|
||||
}
|
||||
|
||||
if (_Buttons[_ButtonPopupNo].Selected)
|
||||
{
|
||||
_ShowPopup(false);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (_Buttons[_ButtonNextRound].Selected && _Buttons[_ButtonNextRound].Visible)
|
||||
{
|
||||
_PartyMode.Next();
|
||||
}
|
||||
|
||||
if (_Buttons[_ButtonBack].Selected && _Buttons[_ButtonBack].Visible)
|
||||
{
|
||||
_PartyMode.Back();
|
||||
}
|
||||
|
||||
if (_Buttons[_ButtonExit].Selected && _Buttons[_ButtonExit].Visible)
|
||||
{
|
||||
if (_PartyMode.IsFinished)
|
||||
{
|
||||
_EndParty();
|
||||
}
|
||||
else
|
||||
{
|
||||
_ShowPopup(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void _EndParty()
|
||||
{
|
||||
CBase.Graphics.FadeTo(EScreen.Party);
|
||||
}
|
||||
|
||||
private void _ShowPopup(bool visible)
|
||||
{
|
||||
_ExitPopupVisible = visible;
|
||||
|
||||
_Statics[_StaticPopupBG].Visible = _ExitPopupVisible;
|
||||
_Texts[_TextPopupReallyExit].Visible = _ExitPopupVisible;
|
||||
_Buttons[_ButtonPopupYes].Visible = _ExitPopupVisible;
|
||||
_Buttons[_ButtonPopupNo].Visible = _ExitPopupVisible;
|
||||
|
||||
if (_ExitPopupVisible)
|
||||
{
|
||||
_SelectElement(_Buttons[_ButtonPopupNo]);
|
||||
}
|
||||
}
|
||||
|
||||
private string _GetName(int player)
|
||||
{
|
||||
return CBase.Profiles.GetPlayerName(_PartyMode.GameData.ProfileIds[player]);
|
||||
}
|
||||
|
||||
private string _GetRoundName(int round)
|
||||
{
|
||||
var fromEnd = _PartyMode.NumRounds - 1 - round;
|
||||
switch (fromEnd)
|
||||
{
|
||||
case 0:
|
||||
return "TR_SCREENMAIN_ROUND_FINAL";
|
||||
case 1:
|
||||
return "TR_SCREENMAIN_ROUND_SEMIFINAL";
|
||||
case 2:
|
||||
return "TR_SCREENMAIN_ROUND_QUARTERFINAL";
|
||||
default:
|
||||
return "TR_SCREENMAIN_ROUND_EIGHTHFINAL";
|
||||
}
|
||||
}
|
||||
|
||||
private int _GetColumn(int round, int index)
|
||||
{
|
||||
var numRounds = _PartyMode.NumRounds;
|
||||
if (round == numRounds - 1)
|
||||
{
|
||||
return round;
|
||||
}
|
||||
|
||||
var count = _PartyMode.GameData.Rounds[round].Length;
|
||||
return index < count / 2 ? round : 2 * numRounds - 2 - round;
|
||||
}
|
||||
|
||||
private float _GetColumnWidth()
|
||||
{
|
||||
var numColumns = 2 * _PartyMode.NumRounds - 1;
|
||||
return (CBase.Settings.GetRenderW() - 2 * _Margin) / numColumns;
|
||||
}
|
||||
|
||||
private float _GetBoxWidth()
|
||||
{
|
||||
return Math.Min(_GetColumnWidth() - _ColumnGap, _MaxBoxW);
|
||||
}
|
||||
|
||||
private float _GetBoxHeight()
|
||||
{
|
||||
return CPartyModeTournament.NumPlayerAtOnce * _RowH + 2 * _BoxPadding;
|
||||
}
|
||||
|
||||
private SRectF _GetBoxRect(int round, int index)
|
||||
{
|
||||
var columnW = _GetColumnWidth();
|
||||
var boxW = _GetBoxWidth();
|
||||
var boxH = _GetBoxHeight();
|
||||
var x = _Margin + _GetColumn(round, index) * columnW + (columnW - boxW) / 2;
|
||||
|
||||
var areaH = _AreaBottom - _AreaTop;
|
||||
float centerY;
|
||||
if (round == _PartyMode.NumRounds - 1)
|
||||
{
|
||||
centerY = _AreaTop + areaH / 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
var perSide = _PartyMode.GameData.Rounds[round].Length / 2;
|
||||
var position = index % perSide;
|
||||
centerY = _AreaTop + areaH * (position + 0.5f) / perSide;
|
||||
}
|
||||
|
||||
return new SRectF(x, centerY - boxH / 2, boxW, boxH, _Statics[_StaticMatchBox].Rect.Z);
|
||||
}
|
||||
|
||||
private void _UpdateBracket()
|
||||
{
|
||||
var current = _PartyMode.CurrentMatch;
|
||||
var boxNr = 0;
|
||||
_NumLinesUsed = 0;
|
||||
|
||||
foreach (var round in _PartyMode.GameData.Rounds)
|
||||
{
|
||||
foreach (var match in round)
|
||||
{
|
||||
_UpdateMatchBox(_MatchBoxes[boxNr], match, match == current);
|
||||
boxNr++;
|
||||
|
||||
if (match.Round < _PartyMode.NumRounds - 1)
|
||||
{
|
||||
_AddConnector(match);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = boxNr; i < _MatchBoxes.Count; i++)
|
||||
{
|
||||
_SetMatchBoxVisible(_MatchBoxes[i], false);
|
||||
}
|
||||
|
||||
for (var i = _NumLinesUsed; i < _Lines.Count; i++)
|
||||
{
|
||||
_Lines[i].Visible = false;
|
||||
}
|
||||
|
||||
var numColumns = 2 * _PartyMode.NumRounds - 1;
|
||||
var columnW = _GetColumnWidth();
|
||||
for (var c = 0; c < _RoundLabels.Count; c++)
|
||||
{
|
||||
_RoundLabels[c].Visible = c < numColumns;
|
||||
if (c >= numColumns)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var round = c < _PartyMode.NumRounds ? c : numColumns - 1 - c;
|
||||
_RoundLabels[c].X = _Margin + c * columnW + columnW / 2;
|
||||
_RoundLabels[c].Text = _GetRoundName(round);
|
||||
}
|
||||
|
||||
var final = _GetBoxRect(_PartyMode.NumRounds - 1, 0);
|
||||
_Texts[_TextChampionLabel].X = final.X + final.W / 2;
|
||||
_Texts[_TextChampion].X = final.X + final.W / 2;
|
||||
}
|
||||
|
||||
private void _SetMatchBoxVisible(CMatchBox matchBox, bool visible)
|
||||
{
|
||||
matchBox.Box.Visible = visible;
|
||||
matchBox.Active.Visible = false;
|
||||
for (var p = 0; p < CPartyModeTournament.NumPlayerAtOnce; p++)
|
||||
{
|
||||
matchBox.Avatars[p].Visible = visible;
|
||||
matchBox.Names[p].Visible = visible;
|
||||
matchBox.Scores[p].Visible = visible;
|
||||
}
|
||||
}
|
||||
|
||||
private void _UpdateMatchBox(CMatchBox matchBox, CTournamentMatch match, bool isCurrent)
|
||||
{
|
||||
var rect = _GetBoxRect(match.Round, match.Index);
|
||||
_SetMatchBoxVisible(matchBox, true);
|
||||
|
||||
matchBox.Box.MaxRect = rect;
|
||||
matchBox.Active.MaxRect = new SRectF(rect.X - _ActiveBorder, rect.Y - _ActiveBorder, rect.W + 2 * _ActiveBorder, rect.H + 2 * _ActiveBorder, _Statics[_StaticMatchActive].Rect.Z);
|
||||
matchBox.Active.Visible = isCurrent;
|
||||
|
||||
var avatarSize = _RowH - 8f;
|
||||
var showScore = (match.Played && !match.Bye) || (_PartyMode.GameData.IsRematch && isCurrent);
|
||||
for (var p = 0; p < CPartyModeTournament.NumPlayerAtOnce; p++)
|
||||
{
|
||||
var player = p == 0 ? match.Player1 : match.Player2;
|
||||
if (match == _AdvanceTarget && p == _AdvanceSlot)
|
||||
{
|
||||
player = -1;
|
||||
}
|
||||
|
||||
var rowY = rect.Y + _BoxPadding + p * _RowH;
|
||||
|
||||
var avatar = matchBox.Avatars[p];
|
||||
avatar.MaxRect = new SRectF(rect.X + 8f, rowY + 4f, avatarSize, avatarSize, _Statics[_StaticMatchAvatar].Rect.Z);
|
||||
avatar.Texture = player >= 0 ? CBase.Profiles.GetAvatar(_PartyMode.GameData.ProfileIds[player]) : null;
|
||||
avatar.Visible = player >= 0;
|
||||
|
||||
var name = matchBox.Names[p];
|
||||
name.X = rect.X + 16f + avatarSize;
|
||||
name.Y = rowY + (_RowH - name.Rect.H) / 2;
|
||||
name.W = rect.W - avatarSize - 24f - (showScore ? _ScoreW : 0f);
|
||||
|
||||
var score = matchBox.Scores[p];
|
||||
score.X = rect.X + rect.W - 10f;
|
||||
score.Y = name.Y;
|
||||
|
||||
if (player >= 0)
|
||||
{
|
||||
name.Text = _GetName(player);
|
||||
}
|
||||
else if (match.Bye)
|
||||
{
|
||||
name.Text = "TR_SCREENMAIN_BYE";
|
||||
}
|
||||
else
|
||||
{
|
||||
name.Text = "?";
|
||||
}
|
||||
|
||||
score.Text = showScore ? (p == 0 ? match.Score1 : match.Score2).ToString() : string.Empty;
|
||||
|
||||
if (match.Played)
|
||||
{
|
||||
name.Color = match.Winner == p ? _Texts[_TextMatchNameWinner].Color : _Texts[_TextMatchNameLoser].Color;
|
||||
}
|
||||
else
|
||||
{
|
||||
name.Color = player >= 0 ? _Texts[_TextMatchName].Color : _Texts[_TextMatchNameLoser].Color;
|
||||
}
|
||||
|
||||
score.Color = name.Color;
|
||||
}
|
||||
}
|
||||
|
||||
private void _AddLine(float x1, float y1, float x2, float y2)
|
||||
{
|
||||
if (_NumLinesUsed >= _Lines.Count)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var line = _Lines[_NumLinesUsed++];
|
||||
var z = _Statics[_StaticBracketLine].Rect.Z;
|
||||
if (Math.Abs(y1 - y2) < 0.5f)
|
||||
{
|
||||
line.MaxRect = new SRectF(Math.Min(x1, x2), y1 - _LineThickness / 2, Math.Abs(x2 - x1), _LineThickness, z);
|
||||
}
|
||||
else
|
||||
{
|
||||
line.MaxRect = new SRectF(x1 - _LineThickness / 2, Math.Min(y1, y2), _LineThickness, Math.Abs(y2 - y1), z);
|
||||
}
|
||||
|
||||
line.Visible = true;
|
||||
}
|
||||
|
||||
private void _AddConnector(CTournamentMatch match)
|
||||
{
|
||||
var box = _GetBoxRect(match.Round, match.Index);
|
||||
var target = _GetBoxRect(match.Round + 1, match.Index / 2);
|
||||
var leftSide = _GetColumn(match.Round, match.Index) < _PartyMode.NumRounds - 1;
|
||||
var boxEdge = leftSide ? box.X + box.W : box.X;
|
||||
var targetEdge = leftSide ? target.X : target.X + target.W;
|
||||
var boxCenterY = box.Y + box.H / 2;
|
||||
var targetCenterY = target.Y + target.H / 2;
|
||||
|
||||
if (match.Round + 1 == _PartyMode.NumRounds - 1)
|
||||
{
|
||||
_AddLine(boxEdge, boxCenterY, targetEdge, boxCenterY);
|
||||
return;
|
||||
}
|
||||
|
||||
var middleX = (boxEdge + targetEdge) / 2;
|
||||
_AddLine(boxEdge, boxCenterY, middleX, boxCenterY);
|
||||
|
||||
if (match.Index % 2 == 0)
|
||||
{
|
||||
var sibling = _GetBoxRect(match.Round, match.Index + 1);
|
||||
_AddLine(middleX, boxCenterY, middleX, sibling.Y + sibling.H / 2);
|
||||
_AddLine(middleX, targetCenterY, targetEdge, targetCenterY);
|
||||
}
|
||||
}
|
||||
|
||||
private void _UpdateInfo()
|
||||
{
|
||||
var current = _PartyMode.CurrentMatch;
|
||||
var finished = _PartyMode.IsFinished;
|
||||
|
||||
_Texts[_TextChampion].Visible = finished && _ChampionShown;
|
||||
_ParticleEffects[_ParticleEffectChampion].Visible = finished && _ChampionShown;
|
||||
_Texts[_TextNextMatch].Visible = !finished && current != null;
|
||||
_Texts[_TextRematch].Visible = !finished && _PartyMode.GameData.IsRematch;
|
||||
|
||||
if (finished)
|
||||
{
|
||||
_Texts[_TextChampion].Text = _GetName(_PartyMode.FinalMatch.WinnerPlayer);
|
||||
}
|
||||
else if (current != null)
|
||||
{
|
||||
_Texts[_TextNextMatch].Text = CBase.Language.Translate("TR_SCREENMAIN_NEXT_MATCH", PartyModeId) + " " + _GetName(current.Player1) + " " +
|
||||
CBase.Language.Translate("TR_SCREENMAIN_VERSUS", PartyModeId) + " " + _GetName(current.Player2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
#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 VocaluxeLib.Menu;
|
||||
|
||||
namespace VocaluxeLib.PartyModes.Tournament
|
||||
{
|
||||
public class CPartyScreenTournamentNames : CMenuPartyNameSelection
|
||||
{
|
||||
protected override int _ScreenVersion
|
||||
{
|
||||
get { return 1; }
|
||||
}
|
||||
|
||||
private new CPartyModeTournament _PartyMode;
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
base.Init();
|
||||
_PartyMode = (CPartyModeTournament)base._PartyMode;
|
||||
_AllowChangePlayerNum = false;
|
||||
_Teams = false;
|
||||
}
|
||||
|
||||
public override void OnShow()
|
||||
{
|
||||
base.OnShow();
|
||||
SetPartyModeData(_PartyMode.GameData.NumPlayer);
|
||||
while (_PartyMode.GameData.ProfileIds.Count > _NumPlayer)
|
||||
{
|
||||
_PartyMode.GameData.ProfileIds.RemoveAt(_PartyMode.GameData.ProfileIds.Count - 1);
|
||||
}
|
||||
|
||||
var ids = new List<Guid>[] { _PartyMode.GameData.ProfileIds };
|
||||
SetPartyModeProfiles(ids);
|
||||
}
|
||||
|
||||
public override void Back()
|
||||
{
|
||||
if (_TeamList.Length == 1)
|
||||
{
|
||||
_PartyMode.GameData.ProfileIds = _TeamList[0];
|
||||
}
|
||||
|
||||
_PartyMode.Back();
|
||||
}
|
||||
|
||||
public override void Next()
|
||||
{
|
||||
if (_TeamList.Length == 1)
|
||||
{
|
||||
_PartyMode.GameData.ProfileIds = _TeamList[0];
|
||||
}
|
||||
|
||||
_PartyMode.Next();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
using VocaluxeLib.Menu;
|
||||
|
||||
namespace VocaluxeLib.PartyModes.Tournament
|
||||
{
|
||||
class CPartyScreenTournamentSongs : CMenuPartySongSelection
|
||||
{
|
||||
protected override int _ScreenVersion
|
||||
{
|
||||
get { return 1; }
|
||||
}
|
||||
|
||||
private new CPartyModeTournament _PartyMode;
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
base.Init();
|
||||
_PartyMode = (CPartyModeTournament)base._PartyMode;
|
||||
}
|
||||
|
||||
public override void OnShow()
|
||||
{
|
||||
Source = _PartyMode.GameData.SongSource;
|
||||
Sorting = _PartyMode.GameData.Sorting;
|
||||
Category = _PartyMode.GameData.CategoryIndex;
|
||||
Playlist = _PartyMode.GameData.PlaylistId;
|
||||
SongMode = _PartyMode.GameData.GameMode;
|
||||
NumMedleySongs = _PartyMode.GameData.NumMedleySongs;
|
||||
|
||||
base.OnShow();
|
||||
}
|
||||
|
||||
public override void Back()
|
||||
{
|
||||
_SaveConfig();
|
||||
_PartyMode.Back();
|
||||
}
|
||||
|
||||
public override void Next()
|
||||
{
|
||||
_SaveConfig();
|
||||
_PartyMode.Next();
|
||||
}
|
||||
|
||||
public override bool UpdateGame()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
protected override void _SetAllowedOptions()
|
||||
{
|
||||
base._SetAllowedOptions();
|
||||
|
||||
AllowedSongModes = new EGameMode[] { EGameMode.TR_GAMEMODE_NORMAL, EGameMode.TR_GAMEMODE_SHORTSONG, EGameMode.TR_GAMEMODE_MEDLEY };
|
||||
}
|
||||
|
||||
private void _SaveConfig()
|
||||
{
|
||||
_PartyMode.GameData.SongSource = Source;
|
||||
_PartyMode.GameData.Sorting = Sorting;
|
||||
_PartyMode.GameData.CategoryIndex = Category;
|
||||
_PartyMode.GameData.PlaylistId = Playlist;
|
||||
_PartyMode.GameData.GameMode = SongMode;
|
||||
_PartyMode.GameData.NumMedleySongs = NumMedleySongs;
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,118 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">DebugWin</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>VocaluxeLib.PartyModes.Tournament</RootNamespace>
|
||||
<AssemblyName>Tournament</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.8.1</TargetFrameworkVersion>
|
||||
<TargetFrameworkProfile>
|
||||
</TargetFrameworkProfile>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'DebugWin|AnyCPU'">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG;WIN</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
||||
<CodeAnalysisRuleSet>..\..\CheckingRules.ruleset</CodeAnalysisRuleSet>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<LangVersion>9.0</LangVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'ReleaseWin|AnyCPU'">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
<DefineConstants>WIN</DefineConstants>
|
||||
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<LangVersion>9.0</LangVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'DebugLinux|AnyCPU'">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG;LINUX</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<LangVersion>9.0</LangVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'ReleaseLinux|AnyCPU'">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
<DefineConstants>LINUX</DefineConstants>
|
||||
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<LangVersion>9.0</LangVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'InstallerWin|AnyCPU'">
|
||||
<OutputPath>bin</OutputPath>
|
||||
<DefineConstants>WIN</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>ManagedMinimumRules.ruleset</CodeAnalysisRuleSet>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<LangVersion>9.0</LangVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CPartyModeTournament.cs" />
|
||||
<Compile Include="CPartyScreenTournamentConfig.cs" />
|
||||
<Compile Include="CPartyScreenTournamentMain.cs" />
|
||||
<Compile Include="CPartyScreenTournamentNames.cs" />
|
||||
<Compile Include="CPartyScreenTournamentSongs.cs" />
|
||||
<Compile Include="GlobalSuppressions.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\VocaluxeLib\VocaluxeLib.csproj">
|
||||
<Project>{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}</Project>
|
||||
<Name>VocaluxeLib</Name>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">if exist "$(SolutionDir)Output\PartyModes\$(TargetName)\Code" rd "$(SolutionDir)Output\PartyModes\$(TargetName)\Code" /S /Q
|
||||
cd $(SolutionDir)Partymodes\
|
||||
xcopy "$(ProjectDir)*.cs" "$(SolutionDir)Output\PartyModes\$(TargetName)\Code\" /EXCLUDE:Excludes.txt /I /Y</PostBuildEvent>
|
||||
<PostBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">rm -rf "$(SolutionDir)Output\PartyModes\$(TargetName)\Code"
|
||||
mkdir -p "$(SolutionDir)Output\PartyModes\$(TargetName)\Code\"
|
||||
cp -R $(ProjectDir)*.cs "$(SolutionDir)Output\PartyModes\$(TargetName)\Code\"
|
||||
rm -f "$(SolutionDir)Output\PartyModes\$(TargetName)\Code\GlobalSuppressions.cs"
|
||||
</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,809 @@
|
||||
<StyleCopSettings Version="105">
|
||||
<Analyzers>
|
||||
<Analyzer AnalyzerId="StyleCop.CSharp.DocumentationRules">
|
||||
<Rules>
|
||||
<Rule Name="ElementsMustBeDocumented">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="PartialElementsMustBeDocumented">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="EnumerationItemsMustBeDocumented">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="DocumentationMustContainValidXml">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ElementDocumentationMustHaveSummary">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="PartialElementDocumentationMustHaveSummary">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ElementDocumentationMustHaveSummaryText">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="PartialElementDocumentationMustHaveSummaryText">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ElementDocumentationMustNotHaveDefaultSummary">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ElementParametersMustBeDocumented">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ElementParameterDocumentationMustMatchElementParameters">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ElementParameterDocumentationMustDeclareParameterName">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ElementParameterDocumentationMustHaveText">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ElementReturnValueMustBeDocumented">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ElementReturnValueDocumentationMustHaveText">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="VoidReturnValueMustNotBeDocumented">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="GenericTypeParametersMustBeDocumented">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="GenericTypeParametersMustBeDocumentedPartialClass">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="GenericTypeParameterDocumentationMustMatchTypeParameters">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="GenericTypeParameterDocumentationMustDeclareParameterName">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="GenericTypeParameterDocumentationMustHaveText">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="PropertySummaryDocumentationMustMatchAccessors">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="PropertySummaryDocumentationMustOmitSetAccessorWithRestrictedAccess">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ElementDocumentationMustNotBeCopiedAndPasted">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="SingleLineCommentsMustNotUseDocumentationStyleSlashes">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="DocumentationTextMustNotBeEmpty">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="DocumentationTextMustContainWhitespace">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="DocumentationMustMeetCharacterPercentage">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ConstructorSummaryDocumentationMustBeginWithStandardText">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="DestructorSummaryDocumentationMustBeginWithStandardText">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="DocumentationHeadersMustNotContainBlankLines">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="IncludedDocumentationXPathDoesNotExist">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="IncludeNodeDoesNotContainValidFileAndPath">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="InheritDocMustBeUsedWithInheritingClass">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ElementDocumentationMustBeSpelledCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="FileMustHaveHeader">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="FileHeaderMustShowCopyright">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="FileHeaderMustHaveCopyrightText">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="FileHeaderMustContainFileName">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="FileHeaderFileNameDocumentationMustMatchFileName">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="FileHeaderMustHaveValidCompanyText">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="FileHeaderFileNameDocumentationMustMatchTypeName">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
</Rules>
|
||||
<AnalyzerSettings />
|
||||
</Analyzer>
|
||||
<Analyzer AnalyzerId="StyleCop.CSharp.NamingRules">
|
||||
<Rules>
|
||||
<Rule Name="FieldNamesMustNotBeginWithUnderscore">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ElementMustBeginWithUpperCaseLetter">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ElementMustBeginWithLowerCaseLetter">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="InterfaceNamesMustBeginWithI">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ConstFieldNamesMustBeginWithUpperCaseLetter">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="NonPrivateReadonlyFieldsMustBeginWithUpperCaseLetter">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="FieldNamesMustNotUseHungarianNotation">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="FieldNamesMustBeginWithLowerCaseLetter">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="AccessibleFieldsMustBeginWithUpperCaseLetter">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="VariableNamesMustNotBePrefixed">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="FieldNamesMustNotContainUnderscore">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="StaticReadonlyFieldsMustBeginWithUpperCaseLetter">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
</Rules>
|
||||
<AnalyzerSettings />
|
||||
</Analyzer>
|
||||
<Analyzer AnalyzerId="StyleCop.CSharp.LayoutRules">
|
||||
<Rules>
|
||||
<Rule Name="CurlyBracketsForMultiLineStatementsMustNotShareLine">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="StatementMustNotBeOnSingleLine">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ElementMustNotBeOnSingleLine">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="CurlyBracketsMustNotBeOmitted">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="AllAccessorsMustBeMultiLineOrSingleLine">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="OpeningCurlyBracketsMustNotBeFollowedByBlankLine">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ElementDocumentationHeadersMustNotBeFollowedByBlankLine">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="CodeMustNotContainMultipleBlankLinesInARow">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ClosingCurlyBracketsMustNotBePrecededByBlankLine">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="OpeningCurlyBracketsMustNotBePrecededByBlankLine">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ChainedStatementBlocksMustNotBePrecededByBlankLine">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="WhileDoFooterMustNotBePrecededByBlankLine">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="SingleLineCommentsMustNotBeFollowedByBlankLine">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ClosingCurlyBracketMustBeFollowedByBlankLine">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ElementDocumentationHeaderMustBePrecededByBlankLine">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="SingleLineCommentMustBePrecededByBlankLine">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ElementsMustBeSeparatedByBlankLine">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="CodeMustNotContainBlankLinesAtStartOfFile">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="CodeMustNotContainBlankLinesAtEndOfFile">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
</Rules>
|
||||
<AnalyzerSettings />
|
||||
</Analyzer>
|
||||
<Analyzer AnalyzerId="StyleCop.CSharp.MaintainabilityRules">
|
||||
<Rules>
|
||||
<Rule Name="AccessModifierMustBeDeclared">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="FieldsMustBePrivate">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="CodeAnalysisSuppressionMustHaveJustification">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="DebugAssertMustProvideMessageText">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="DebugFailMustProvideMessageText">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="FileMayOnlyContainASingleClass">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="FileMayOnlyContainASingleNamespace">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="StatementMustNotUseUnnecessaryParenthesis">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ArithmeticExpressionsMustDeclarePrecedence">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ConditionalExpressionsMustDeclarePrecedence">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="RemoveDelegateParenthesisWhenPossible">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="AttributeConstructorMustNotUseUnnecessaryParenthesis">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="RemoveUnnecessaryCode">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
</Rules>
|
||||
<AnalyzerSettings />
|
||||
</Analyzer>
|
||||
<Analyzer AnalyzerId="StyleCop.CSharp.OrderingRules">
|
||||
<Rules>
|
||||
<Rule Name="UsingDirectivesMustBePlacedWithinNamespace">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ElementsMustAppearInTheCorrectOrder">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ElementsMustBeOrderedByAccess">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ConstantsMustAppearBeforeFields">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="StaticElementsMustAppearBeforeInstanceElements">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="DeclarationKeywordsMustFollowOrder">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ProtectedMustComeBeforeInternal">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="PropertyAccessorsMustFollowOrder">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="EventAccessorsMustFollowOrder">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="StaticReadonlyElementsMustAppearBeforeStaticNonReadonlyElements">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="InstanceReadonlyElementsMustAppearBeforeInstanceNonReadonlyElements">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="SystemUsingDirectivesMustBePlacedBeforeOtherUsingDirectives">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="UsingAliasDirectivesMustBePlacedAfterOtherUsingDirectives">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="UsingDirectivesMustBeOrderedAlphabeticallyByNamespace">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="UsingAliasDirectivesMustBeOrderedAlphabeticallyByAliasName">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
</Rules>
|
||||
<AnalyzerSettings />
|
||||
</Analyzer>
|
||||
<Analyzer AnalyzerId="StyleCop.CSharp.ReadabilityRules">
|
||||
<Rules>
|
||||
<Rule Name="CommentsMustContainText">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="DoNotPrefixCallsWithBaseUnlessLocalImplementationExists">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="PrefixLocalCallsWithThis">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="PrefixCallsCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="OpeningParenthesisMustBeOnDeclarationLine">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ClosingParenthesisMustBeOnLineOfLastParameter">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ClosingParenthesisMustBeOnLineOfOpeningParenthesis">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="CommaMustBeOnSameLineAsPreviousParameter">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ParameterListMustFollowDeclaration">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ParameterMustFollowComma">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="SplitParametersMustStartOnLineAfterDeclaration">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ParametersMustBeOnSameLineOrSeparateLines">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ParameterMustNotSpanMultipleLines">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="QueryClauseMustFollowPreviousClause">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="QueryClausesMustBeOnSeparateLinesOrAllOnOneLine">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="QueryClauseMustBeginOnNewLineWhenPreviousClauseSpansMultipleLines">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="QueryClausesSpanningMultipleLinesMustBeginOnOwnLine">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="DoNotPlaceRegionsWithinElements">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="CodeMustNotContainEmptyStatements">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="CodeMustNotContainMultipleStatementsOnOneLine">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="BlockStatementsMustNotContainEmbeddedComments">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="BlockStatementsMustNotContainEmbeddedRegions">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="UseStringEmptyForEmptyStrings">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="UseBuiltInTypeAlias">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="UseShorthandForNullableTypes">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
</Rules>
|
||||
<AnalyzerSettings />
|
||||
</Analyzer>
|
||||
<Analyzer AnalyzerId="StyleCop.CSharp.SpacingRules">
|
||||
<Rules>
|
||||
<Rule Name="KeywordsMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="CommasMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="SemicolonsMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="SymbolsMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="DocumentationLinesMustBeginWithSingleSpace">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="SingleLineCommentsMustBeginWithSingleSpace">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="PreprocessorKeywordsMustNotBePrecededBySpace">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="OperatorKeywordMustBeFollowedBySpace">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="OpeningParenthesisMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ClosingParenthesisMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="OpeningSquareBracketsMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ClosingSquareBracketsMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="OpeningCurlyBracketsMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ClosingCurlyBracketsMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="OpeningGenericBracketsMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ClosingGenericBracketsMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="OpeningAttributeBracketsMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ClosingAttributeBracketsMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="NullableTypeSymbolsMustNotBePrecededBySpace">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="MemberAccessSymbolsMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="IncrementDecrementSymbolsMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="NegativeSignsMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="PositiveSignsMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="DereferenceAndAccessOfSymbolsMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="ColonsMustBeSpacedCorrectly">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="CodeMustNotContainMultipleWhitespaceInARow">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="CodeMustNotContainSpaceAfterNewKeywordInImplicitlyTypedArrayAllocation">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
<Rule Name="TabsMustNotBeUsed">
|
||||
<RuleSettings>
|
||||
<BooleanProperty Name="Enabled">False</BooleanProperty>
|
||||
</RuleSettings>
|
||||
</Rule>
|
||||
</Rules>
|
||||
<AnalyzerSettings />
|
||||
</Analyzer>
|
||||
</Analyzers>
|
||||
</StyleCopSettings>
|
||||
@@ -10,6 +10,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Vocaluxe", "Vocaluxe\Vocalu
|
||||
{9D4F1C27-3B8E-4A62-B5D0-7E1A2C6F9B53} = {9D4F1C27-3B8E-4A62-B5D0-7E1A2C6F9B53}
|
||||
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC} = {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}
|
||||
{5A4053F1-5AD5-441F-B254-D97A088127B6} = {5A4053F1-5AD5-441F-B254-D97A088127B6}
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20} = {3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}
|
||||
{54A48AF7-515C-4EDD-B395-2BFFA096050A} = {54A48AF7-515C-4EDD-B395-2BFFA096050A}
|
||||
{2E6A9B48-71C3-4D05-8F2B-C4A7D19E6E3F} = {2E6A9B48-71C3-4D05-8F2B-C4A7D19E6E3F}
|
||||
EndProjectSection
|
||||
@@ -22,6 +23,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PartyModeTicTacToe", "Party
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PartyModeChallenge", "PartyModes\PartyModeChallenge\PartyModeChallenge.csproj", "{5A4053F1-5AD5-441F-B254-D97A088127B6}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PartyModeTournament", "PartyModes\PartyModeTournament\PartyModeTournament.csproj", "{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebserverInitalConfig", "WebserverInitalConfig\WebserverInitalConfig.csproj", "{55F89808-4E79-4FFE-BC13-48258913F5C9}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PartyModeRuleRoulette", "PartyModes\PartyModeRuleRoulette\PartyModeRuleRoulette.csproj", "{2E6A9B48-71C3-4D05-8F2B-C4A7D19E6E3F}"
|
||||
@@ -146,6 +149,26 @@ Global
|
||||
{5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseWin|x64.Build.0 = ReleaseWin|Any CPU
|
||||
{5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseWin|x86.ActiveCfg = ReleaseWin|Any CPU
|
||||
{5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseWin|x86.Build.0 = ReleaseWin|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.DebugLinux|x64.ActiveCfg = DebugLinux|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.DebugLinux|x64.Build.0 = DebugLinux|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.DebugLinux|x86.ActiveCfg = DebugLinux|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.DebugLinux|x86.Build.0 = DebugLinux|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.DebugWin|x64.ActiveCfg = DebugWin|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.DebugWin|x64.Build.0 = DebugWin|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.DebugWin|x86.ActiveCfg = DebugWin|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.DebugWin|x86.Build.0 = DebugWin|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.InstallerWin|x64.ActiveCfg = InstallerWin|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.InstallerWin|x64.Build.0 = InstallerWin|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.InstallerWin|x86.ActiveCfg = InstallerWin|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.InstallerWin|x86.Build.0 = InstallerWin|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.ReleaseLinux|x64.ActiveCfg = ReleaseLinux|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.ReleaseLinux|x64.Build.0 = ReleaseLinux|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.ReleaseLinux|x86.ActiveCfg = ReleaseLinux|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.ReleaseLinux|x86.Build.0 = ReleaseLinux|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.ReleaseWin|x64.ActiveCfg = ReleaseWin|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.ReleaseWin|x64.Build.0 = ReleaseWin|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.ReleaseWin|x86.ActiveCfg = ReleaseWin|Any CPU
|
||||
{3C7D2E51-8A64-4F0B-9E2A-6B1D4C8F7A20}.ReleaseWin|x86.Build.0 = ReleaseWin|Any CPU
|
||||
{55F89808-4E79-4FFE-BC13-48258913F5C9}.DebugLinux|x64.ActiveCfg = Debug|Any CPU
|
||||
{55F89808-4E79-4FFE-BC13-48258913F5C9}.DebugLinux|x86.ActiveCfg = Debug|Any CPU
|
||||
{55F89808-4E79-4FFE-BC13-48258913F5C9}.DebugWin|x64.ActiveCfg = Debug|Any CPU
|
||||
|
||||
@@ -479,30 +479,13 @@ namespace VocaluxeLib.Menu
|
||||
|
||||
public Guid GetRandomUnusedProfile()
|
||||
{
|
||||
var id = Guid.Empty;
|
||||
|
||||
if (_VisibleProfiles.Count == 0)
|
||||
var unusedProfiles = _VisibleProfiles.Where(profileId => !_UsedProfiles.Contains(profileId)).ToList();
|
||||
if (unusedProfiles.Count == 0)
|
||||
{
|
||||
return id;
|
||||
return Guid.Empty;
|
||||
}
|
||||
|
||||
if (_VisibleProfiles.Count == _UsedProfiles.Count)
|
||||
{
|
||||
return id;
|
||||
}
|
||||
|
||||
while (id == Guid.Empty)
|
||||
{
|
||||
var rand = CBase.Game.GetRandom(_VisibleProfiles.Count);
|
||||
if (_UsedProfiles.Contains(_VisibleProfiles[rand]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
id = _VisibleProfiles.ElementAt(rand);
|
||||
}
|
||||
|
||||
return id;
|
||||
return unusedProfiles[CBase.Game.GetRandom(unusedProfiles.Count)];
|
||||
}
|
||||
|
||||
private void _PrepareTiles()
|
||||
|
||||
Reference in new issue
Block a user