diff --git a/Output/PartyModes/Challenge/Languages/Deutsch.xml b/Output/PartyModes/Challenge/Languages/Deutsch.xml
index 8a6220b0..74d61366 100644
--- a/Output/PartyModes/Challenge/Languages/Deutsch.xml
+++ b/Output/PartyModes/Challenge/Languages/Deutsch.xml
@@ -21,5 +21,12 @@
Challenge Modus: Spielerwahl
Challenge Modus: Übersicht
+ Pos
+ Name
+ S
+ U
+ N
+ Sing-Punkte
+ Punkte
diff --git a/Output/PartyModes/Challenge/Languages/English.xml b/Output/PartyModes/Challenge/Languages/English.xml
index 8ea1dc14..403f4843 100644
--- a/Output/PartyModes/Challenge/Languages/English.xml
+++ b/Output/PartyModes/Challenge/Languages/English.xml
@@ -21,5 +21,12 @@
Challenge Mode: Choose Player
Challenge Mode: Overview
+ Pos
+ Name
+ W
+ D
+ L
+ Sing Points
+ Score
diff --git a/Output/PartyModes/Challenge/Languages/French.xml b/Output/PartyModes/Challenge/Languages/French.xml
index 9611cdf6..af8f9136 100644
--- a/Output/PartyModes/Challenge/Languages/French.xml
+++ b/Output/PartyModes/Challenge/Languages/French.xml
@@ -21,5 +21,12 @@
TODO: Challenge Mode: Choose Player
TODO: Challenge Mode: Overview
+ TODO: Pos
+ TODO: Name
+ TODO: W
+ TODO: D
+ TODO: L
+ TODO: Sing Points
+ TODO: Score
diff --git a/Output/PartyModes/Challenge/Languages/Spanish.xml b/Output/PartyModes/Challenge/Languages/Spanish.xml
index 3515c34a..f16f9a61 100644
--- a/Output/PartyModes/Challenge/Languages/Spanish.xml
+++ b/Output/PartyModes/Challenge/Languages/Spanish.xml
@@ -21,5 +21,11 @@
TODO: Challenge Mode: Choose Player
TODO: Challenge Mode: Overview
+ TODO: Name
+ TODO: W
+ TODO: D
+ TODO: L
+ TODO: Sing Points
+ TODO: Score
diff --git a/Output/PartyModes/Challenge/Screens/PartyScreenChallengeMain.xml b/Output/PartyModes/Challenge/Screens/PartyScreenChallengeMain.xml
index e039aeee..eccf108c 100644
--- a/Output/PartyModes/Challenge/Screens/PartyScreenChallengeMain.xml
+++ b/Output/PartyModes/Challenge/Screens/PartyScreenChallengeMain.xml
@@ -58,6 +58,209 @@
+
+
+ 100
+ 100
+
+ 0,00
+
+ 37
+
+
+
+ StaticColor
+
+
+ TextSColor
+
+ Right
+
+ Center
+
+
+
+ Outline
+
+ TR_SCREENMAIN_TABLE_POS
+
+
+
+
+
+
+ 110
+ 100
+
+ 0,00
+
+ 37
+
+
+
+ StaticColor
+
+
+ TextSColor
+
+ Left
+
+ Center
+
+
+
+ Outline
+
+ TR_SCREENMAIN_TABLE_PLAYERNAME
+
+
+
+
+
+
+ 400
+ 100
+
+ 0,00
+
+ 37
+
+
+
+ StaticColor
+
+
+ TextSColor
+
+ Right
+
+ Center
+
+
+
+ Outline
+
+ TR_SCREENMAIN_TABLE_WON
+
+
+
+
+
+
+ 475
+ 100
+
+ 0,00
+
+ 37
+
+
+
+ StaticColor
+
+
+ TextSColor
+
+ Right
+
+ Center
+
+
+
+ Outline
+
+ TR_SCREENMAIN_TABLE_DRAWN
+
+
+
+
+
+
+ 550
+ 100
+
+ 0,00
+
+ 37
+
+
+
+ StaticColor
+
+
+ TextSColor
+
+ Right
+
+ Center
+
+
+
+ Outline
+
+ TR_SCREENMAIN_TABLE_LOST
+
+
+
+
+
+
+ 750
+ 100
+
+ 0,00
+
+ 37
+
+
+
+ StaticColor
+
+
+ TextSColor
+
+ Right
+
+ Center
+
+
+
+ Outline
+
+ TR_SCREENMAIN_TABLE_SINGPOINTS
+
+
+
+
+
+
+ 850
+ 100
+
+ 0,00
+
+ 37
+
+
+
+ StaticColor
+
+
+ TextSColor
+
+ Right
+
+ Center
+
+
+
+ Outline
+
+ TR_SCREENMAIN_TABLE_GAMEPOINTS
+
+
+
+
Button
diff --git a/PartyModeChallenge/PartyModeChallenge.cs b/PartyModeChallenge/PartyModeChallenge.cs
index 1b412442..9a342266 100644
--- a/PartyModeChallenge/PartyModeChallenge.cs
+++ b/PartyModeChallenge/PartyModeChallenge.cs
@@ -24,6 +24,7 @@ namespace Vocaluxe.PartyModes
public struct DataToScreenMain
{
public int CurrentRoundNr;
+ public int NumPlayerAtOnce;
public List Combs;
public List ResultTable;
}
@@ -262,8 +263,10 @@ namespace Vocaluxe.PartyModes
GameData.Rounds = new ChallengeRounds(GameData.NumRounds, GameData.NumPlayer, GameData.NumPlayerAtOnce);
GameData.CurrentRoundNr = 1;
ToScreenMain.CurrentRoundNr = 1;
+ ToScreenMain.NumPlayerAtOnce = GameData.NumPlayerAtOnce;
ToScreenMain.Combs = GameData.Rounds.Rounds;
UpdateScores();
+ ToScreenMain.ResultTable = GameData.ResultTable;
Screen.DataToScreen(ToScreenMain);
}
break;
@@ -533,6 +536,19 @@ namespace Vocaluxe.PartyModes
}
}
+ GameData.ResultTable.Sort(delegate(ResultTableRow s1, ResultTableRow s2)
+ {
+ int res = s1.NumGamePoints.CompareTo(s2.NumGamePoints);
+ if (res == 0)
+ {
+ res = s1.SumSingPoints.CompareTo(s2.NumGamePoints);
+ if (res == 0)
+ {
+ res = s1.NumWon.CompareTo(s2.NumWon);
+ }
+ }
+ return res;
+ });
}
diff --git a/PartyModeChallenge/PartyScreenChallengeMain.cs b/PartyModeChallenge/PartyScreenChallengeMain.cs
index ba0fc37f..282b0b20 100644
--- a/PartyModeChallenge/PartyScreenChallengeMain.cs
+++ b/PartyModeChallenge/PartyScreenChallengeMain.cs
@@ -7,14 +7,37 @@ using Vocaluxe.Menu;
namespace Vocaluxe.PartyModes
{
+ struct TableRow
+ {
+ public CText Pos;
+ public CText Name;
+ public CText Won;
+ public CText Drawn;
+ public CText Lost;
+ public CText SingPoints;
+ public CText GamePoints;
+ }
+
+
public class PartyScreenChallengeMain : CMenuParty
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
const int ScreenVersion = 1;
+ const string TextPosition = "TextPosition";
+ const string TextPlayerName = "TextPlayerName";
+ const string TextWon = "TextWon";
+ const string TextDrawn = "TextDrawn";
+ const string TextLost = "TextLost";
+ const string TextSingPoints = "TextSingPoints";
+ const string TextGamePoints = "TextGamePoints";
+
const string ButtonNextRound = "ButtonNextRound";
+
private DataFromScreen Data;
+ private DataToScreenMain GameState;
+ private List Table;
public PartyScreenChallengeMain()
{
@@ -27,6 +50,7 @@ namespace Vocaluxe.PartyModes
base.Init();
_ThemeName = "PartyScreenChallengeMain";
+ _ThemeTexts = new string[] { TextPosition, TextPlayerName, TextWon, TextDrawn, TextLost, TextSingPoints, TextGamePoints };
_ThemeButtons = new string[] { "ButtonNextRound" };
_ScreenVersion = ScreenVersion;
}
@@ -34,6 +58,9 @@ namespace Vocaluxe.PartyModes
public override void LoadTheme(string XmlPath)
{
base.LoadTheme(XmlPath);
+
+ GameState = new DataToScreenMain();
+ BuildTable();
}
public override void DataToScreen(object ReceivedData)
@@ -43,7 +70,7 @@ namespace Vocaluxe.PartyModes
try
{
data = (DataToScreenMain)ReceivedData;
-
+ GameState = data;
}
catch (Exception e)
{
@@ -99,6 +126,8 @@ namespace Vocaluxe.PartyModes
public override void OnShow()
{
base.OnShow();
+
+ Updatetable();
}
public override bool UpdateGame()
@@ -127,5 +156,80 @@ namespace Vocaluxe.PartyModes
{
//TODO
}
+
+ private void BuildTable()
+ {
+ Table = new List();
+ float delta = Texts[htTexts(TextPosition)].Height * 1.2f;
+
+ for (int i = 0; i < _PartyMode.GetMaxPlayer(); i++)
+ {
+ TableRow row = new TableRow();
+
+ row.Pos = GetNewText(Texts[htTexts(TextPosition)]);
+ row.Name = GetNewText(Texts[htTexts(TextPlayerName)]);
+ row.Won = GetNewText(Texts[htTexts(TextWon)]);
+ row.Drawn = GetNewText(Texts[htTexts(TextDrawn)]);
+ row.Lost = GetNewText(Texts[htTexts(TextLost)]);
+ row.SingPoints = GetNewText(Texts[htTexts(TextSingPoints)]);
+ row.GamePoints = GetNewText(Texts[htTexts(TextGamePoints)]);
+
+ row.Pos.Y += delta * (i + 1);
+ row.Name.Y += delta * (i + 1);
+ row.Won.Y += delta * (i + 1);
+ row.Drawn.Y += delta * (i + 1);
+ row.Lost.Y += delta * (i + 1);
+ row.SingPoints.Y += delta * (i + 1);
+ row.GamePoints.Y += delta * (i + 1);
+
+ row.Pos.Text = (i + 1).ToString() + ")";
+
+ row.Pos.Visible = false;
+ row.Name.Visible = false;
+ row.Won.Visible = false;
+ row.Drawn.Visible = false;
+ row.Lost.Visible = false;
+ row.SingPoints.Visible = false;
+ row.GamePoints.Visible = false;
+
+ AddText(row.Pos);
+ AddText(row.Name);
+ AddText(row.Won);
+ AddText(row.Drawn);
+ AddText(row.Lost);
+ AddText(row.SingPoints);
+ AddText(row.GamePoints);
+
+ Table.Add(row);
+ }
+ }
+
+ private void Updatetable()
+ {
+ SProfile[] profiles = _Base.Profiles.GetProfiles();
+
+ for (int i = 0; i < Table.Count; i++)
+ {
+ if (i < GameState.ResultTable.Count)
+ {
+ TableRow row = Table[i];
+
+ row.Pos.Visible = true;
+ row.Name.Visible = true;
+ row.Won.Visible = true;
+ row.Drawn.Visible = true;
+ row.Lost.Visible = true;
+ row.SingPoints.Visible = true;
+ row.GamePoints.Visible = true;
+
+ row.Name.Text = profiles[GameState.ResultTable[i].PlayerID].PlayerName;
+ row.Won.Text = GameState.ResultTable[i].NumWon.ToString();
+ row.Drawn.Text = GameState.ResultTable[i].NumDrawn.ToString();
+ row.Lost.Text = GameState.ResultTable[i].NumLost.ToString();
+ row.SingPoints.Text = GameState.ResultTable[i].SumSingPoints.ToString();
+ row.GamePoints.Text = GameState.ResultTable[i].NumGamePoints.ToString();
+ }
+ }
+ }
}
}
diff --git a/Vocaluxe/Base/CParty.cs b/Vocaluxe/Base/CParty.cs
index 2aaf77ba..f3d38752 100644
--- a/Vocaluxe/Base/CParty.cs
+++ b/Vocaluxe/Base/CParty.cs
@@ -302,15 +302,19 @@ namespace Vocaluxe.Base
foreach (string screenfile in pm.ScreenFiles)
{
+ string XmlPath = Path.Combine(Path.Combine(CSettings.sFolderPartyModes, pm.Folder), CSettings.sFolderPartyModeScreens);
CMenuParty Screen = GetPartyScreenInstance(
Output,
screenfile,
- Path.Combine(Path.Combine(CSettings.sFolderPartyModes, pm.Folder), CSettings.sFolderPartyModeScreens),
- pm.PartyModeID);
+ Path.Combine(Path.Combine(CSettings.sFolderPartyModes, pm.Folder), CSettings.sFolderPartyModeScreens)
+ );
if (Screen != null)
{
+ Screen.Initialize(CMain.Base);
Screen.AssingPartyMode(pm.PartyMode);
+ Screen.SetPartyModeID(pm.PartyModeID);
+ Screen.LoadTheme(XmlPath);
pm.PartyMode.AddScreen(Screen, screenfile);
}
else
@@ -361,7 +365,7 @@ namespace Vocaluxe.Base
return CompileResult.CompiledAssembly;
}
- private static CMenuParty GetPartyScreenInstance(Assembly Assembly, string ScreenName, string XmlPath, int PartyModeID)
+ private static CMenuParty GetPartyScreenInstance(Assembly Assembly, string ScreenName, string XmlPath)
{
if (Assembly == null)
return null;
@@ -383,9 +387,6 @@ namespace Vocaluxe.Base
CLog.LogError("Error casting PartyScreen: " + ScreenName + "; " + e.Message);
return null;
}
- Screen.Initialize(CMain.Base);
- Screen.SetPartyModeID(PartyModeID);
- Screen.LoadTheme(XmlPath);
return Screen;
}
#endregion private stuff