Merge pull request #358 from flokuep/release-0.4.1

Release 0.4.1
This commit is contained in:
Florian Küpper authored and GitHub committed 2017-12-26 16:33:49 +01:00
commit c55f779dba
4 files changed
+101 -58

No files matched your search

@@ -18,6 +18,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using VocaluxeLib.Game;
using VocaluxeLib.Menu; using VocaluxeLib.Menu;
[assembly: ComVisible(false)] [assembly: ComVisible(false)]
@@ -430,39 +431,62 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _UpdateScores() private void _UpdateScores()
{ {
//Prepare results table
if (GameData.ResultTable.Count == 0) if (GameData.ResultTable.Count == 0)
{ {
for (int i = 0; i < GameData.NumPlayer; i++) for (int i = 0; i < GameData.NumPlayer; i++)
{ {
var row = new CResultTableRow {PlayerID = GameData.ProfileIDs[i], NumPlayed = 0, NumWon = 0, NumSingPoints = 0, NumGamePoints = 0}; var row = new CResultTableRow { PlayerID = GameData.ProfileIDs[i], NumPlayed = 0, NumWon = 0, NumSingPoints = 0, NumGamePoints = 0 };
GameData.ResultTable.Add(row); GameData.ResultTable.Add(row);
} }
GameData.Results = new int[GameData.NumRounds,GameData.NumPlayerAtOnce]; GameData.Results = new int[GameData.NumRounds, GameData.NumPlayerAtOnce];
for (int i = 0; i < GameData.NumRounds; i++) for (int i = 0; i < GameData.NumRounds; i++)
{ {
for (int j = 0; j < GameData.NumPlayerAtOnce; j++) for (int j = 0; j < GameData.NumPlayerAtOnce; j++)
GameData.Results[i, j] = 0; GameData.Results[i, j] = 0;
} }
} }
SPlayer[] results = CBase.Game.GetPlayers();
if (results == null)
return;
if (results.Length < GameData.NumPlayerAtOnce) //Get points from game
return; CPoints points = CBase.Game.GetPoints();
SPlayer[] players = CBase.Game.GetPlayers();
for (int j = 0; j < GameData.NumPlayerAtOnce; j++) //Go over all rounds and sum up points
GameData.Results[GameData.CurrentRoundNr - 2, j] = (int)Math.Round(results[j].Points); for (int round = 0; round < points.NumRounds; round++)
{
SPlayer[] res = points.GetPlayer(round, GameData.NumPlayerAtOnce);
List<SStats> points = _GetPointsForPlayer(results); if (res == null || res.Length < GameData.NumPlayerAtOnce)
return;
for (int p = 0; p < GameData.NumPlayerAtOnce; p++)
{
players[p].Points += res[p].Points;
players[p].PointsGoldenNotes += res[p].PointsGoldenNotes;
players[p].PointsLineBonus += res[p].PointsLineBonus;
}
}
//Calculate average points
for (int p = 0; p < GameData.NumPlayerAtOnce; p++)
{
players[p].Points /= points.NumRounds;
players[p].PointsGoldenNotes /= points.NumRounds;
players[p].PointsLineBonus /= points.NumRounds;
//Save points in GameData
GameData.Results[GameData.CurrentRoundNr - 2, p] = (int)Math.Round(players[p].Points);
}
List<SStats> stats = _GetPointsForPlayer(players);
for (int i = 0; i < GameData.NumPlayerAtOnce; i++) for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{ {
//Find matching row in results table
int index = -1; int index = -1;
for (int j = 0; j < GameData.ResultTable.Count; j++) for (int j = 0; j < GameData.ResultTable.Count; j++)
{ {
if (points[i].ProfileID == GameData.ResultTable[j].PlayerID) if (stats[i].ProfileID == GameData.ResultTable[j].PlayerID)
{ {
index = j; index = j;
break; break;
@@ -473,14 +497,14 @@ namespace VocaluxeLib.PartyModes.Challenge
continue; continue;
CResultTableRow row = GameData.ResultTable[index]; CResultTableRow row = GameData.ResultTable[index];
//Update results entry
row.NumPlayed++; row.NumPlayed++;
row.NumWon += points[i].Won; row.NumWon += stats[i].Won;
row.NumSingPoints += points[i].SingPoints; row.NumSingPoints += stats[i].SingPoints;
row.NumGamePoints += points[i].GamePoints; row.NumGamePoints += stats[i].GamePoints;
GameData.ResultTable[index] = row; GameData.ResultTable[index] = row;
} }
GameData.ResultTable.Sort(); GameData.ResultTable.Sort();
@@ -411,74 +411,79 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _UpdateScores() private void _UpdateScores()
{ {
//Prepare results table
if (GameData.ResultTable.Count == 0) if (GameData.ResultTable.Count == 0)
{ {
for (int i = 0; i < GameData.NumPlayer; i++) for (int i = 0; i < GameData.NumPlayer; i++)
{ {
CResultTableRow row = new CResultTableRow {PlayerID = GameData.ProfileIDs[i], NumPlayed = 0, NumWon = 0, NumSingPoints = 0, NumGamePoints = 0}; var row = new CResultTableRow { PlayerID = GameData.ProfileIDs[i], NumPlayed = 0, NumWon = 0, NumSingPoints = 0, NumGamePoints = 0 };
GameData.ResultTable.Add(row); GameData.ResultTable.Add(row);
} }
GameData.Results = new int[GameData.NumRounds,GameData.NumPlayerAtOnce]; GameData.Results = new int[GameData.NumRounds, GameData.NumPlayerAtOnce];
for (int i = 0; i < GameData.NumRounds; i++) for (int i = 0; i < GameData.NumRounds; i++)
{ {
for (int j = 0; j < GameData.NumPlayerAtOnce; j++) for (int j = 0; j < GameData.NumPlayerAtOnce; j++)
GameData.Results[i, j] = 0; GameData.Results[i, j] = 0;
} }
} }
CPoints gamePoints = CBase.Game.GetPoints();
if (gamePoints == null || gamePoints.NumPlayer < GameData.NumPlayerAtOnce)
return;
SPlayer[] results = gamePoints.GetPlayer(0, GameData.NumPlayerAtOnce); //Get points from game
if (results == null) CPoints points = CBase.Game.GetPoints();
return; SPlayer[] players = CBase.Game.GetPlayers();
if (results.Length < GameData.NumPlayerAtOnce) //Go over all rounds and sum up points
return; for (int round = 0; round < points.NumRounds; round++)
if (gamePoints.NumRounds == 0)
return;
for (int i = 1; i < gamePoints.NumRounds; i++)
{ {
SPlayer[] temp = gamePoints.GetPlayer(i, GameData.NumPlayerAtOnce); SPlayer[] res = points.GetPlayer(round, GameData.NumPlayerAtOnce);
if (res == null || res.Length < GameData.NumPlayerAtOnce)
return;
for (int p = 0; p < GameData.NumPlayerAtOnce; p++) for (int p = 0; p < GameData.NumPlayerAtOnce; p++)
results[p].Points += temp[p].Points; {
players[p].Points += res[p].Points;
players[p].PointsGoldenNotes += res[p].PointsGoldenNotes;
players[p].PointsLineBonus += res[p].PointsLineBonus;
}
} }
//Calculate average points
for (int j = 0; j < GameData.NumPlayerAtOnce; j++) for (int p = 0; p < GameData.NumPlayerAtOnce; p++)
{ {
results[j].Points = results[j].Points / gamePoints.NumRounds; players[p].Points /= points.NumRounds;
GameData.Results[GameData.CurrentRoundNr - 2, j] = (int)Math.Round(results[j].Points); players[p].PointsGoldenNotes /= points.NumRounds;
players[p].PointsLineBonus /= points.NumRounds;
//Save points in GameData
GameData.Results[GameData.CurrentRoundNr - 2, p] = (int)Math.Round(players[p].Points);
} }
List<SStats> points = _GetPointsForPlayer(results); List<SStats> stats = _GetPointsForPlayer(players);
for (int i = 0; i < GameData.NumPlayerAtOnce; i++) for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{ {
//Find matching row in results table
int index = -1; int index = -1;
for (int j = 0; j < GameData.ResultTable.Count; j++) for (int j = 0; j < GameData.ResultTable.Count; j++)
{ {
if (points[i].ProfileID == GameData.ResultTable[j].PlayerID) if (stats[i].ProfileID == GameData.ResultTable[j].PlayerID)
{ {
index = j; index = j;
break; break;
} }
} }
if (index != -1) if (index == -1)
{ continue;
CResultTableRow row = GameData.ResultTable[index]; CResultTableRow row = GameData.ResultTable[index];
row.NumPlayed++; //Update results entry
row.NumWon += points[i].Won; row.NumPlayed++;
row.NumSingPoints += points[i].SingPoints; row.NumWon += stats[i].Won;
row.NumGamePoints += points[i].GamePoints; row.NumSingPoints += stats[i].SingPoints;
row.NumGamePoints += stats[i].GamePoints;
GameData.ResultTable[index] = row; GameData.ResultTable[index] = row;
}
} }
GameData.ResultTable.Sort(); GameData.ResultTable.Sort();
@@ -20,6 +20,7 @@ using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using VocaluxeLib.Game;
using VocaluxeLib.Menu; using VocaluxeLib.Menu;
using VocaluxeLib.Songs; using VocaluxeLib.Songs;
@@ -530,13 +531,33 @@ namespace VocaluxeLib.PartyModes.TicTacToe
if (!GameData.Rounds[GameData.FieldNr].Finished) if (!GameData.Rounds[GameData.FieldNr].Finished)
GameData.CurrentRoundNr++; GameData.CurrentRoundNr++;
CPoints points = CBase.Game.GetPoints();
SPlayer[] results = CBase.Game.GetPlayers(); SPlayer[] results = CBase.Game.GetPlayers();
if (results == null)
if (results == null || results.Length < 2)
return; return;
if (results.Length < 2) //Sum up all points
return; for (int r = 0; r < points.NumRounds; r++)
{
SPlayer[] player = points.GetPlayer(r, 2);
for (int i = 0; i < 2; i++)
{
results[i].Points += player[i].Points;
results[i].PointsGoldenNotes += player[i].PointsGoldenNotes;
results[i].PointsLineBonus += player[i].PointsLineBonus;
}
}
//Calc average of points
for (int i = 0; i < 2; i++)
{
results[i].Points /= points.NumRounds;
results[i].PointsGoldenNotes /= points.NumRounds;
results[i].PointsLineBonus /= points.NumRounds;
}
//Decide who has won
GameData.Rounds[GameData.FieldNr].PointsTeam1 = (int)Math.Round(results[0].Points); GameData.Rounds[GameData.FieldNr].PointsTeam1 = (int)Math.Round(results[0].Points);
GameData.Rounds[GameData.FieldNr].PointsTeam2 = (int)Math.Round(results[1].Points); GameData.Rounds[GameData.FieldNr].PointsTeam2 = (int)Math.Round(results[1].Points);
GameData.Rounds[GameData.FieldNr].Finished = true; GameData.Rounds[GameData.FieldNr].Finished = true;
-7
View File
@@ -263,7 +263,6 @@ namespace Vocaluxe.Base
if (_PreviewStartHelperTask != null && (_PreviewPlayer.Length > 0 || _PreviewStartWaitCounter++ >= _PreviewStartWaitMaxTries)) if (_PreviewStartHelperTask != null && (_PreviewPlayer.Length > 0 || _PreviewStartWaitCounter++ >= _PreviewStartWaitMaxTries))
{ {
_PreviewStartHelperTask.RunSynchronously(TaskScheduler.FromCurrentSynchronizationContext()); _PreviewStartHelperTask.RunSynchronously(TaskScheduler.FromCurrentSynchronizationContext());
_PreviewStartHelperTask.Dispose();
_PreviewStartHelperTask = null; _PreviewStartHelperTask = null;
_PreviewStartWaitCounter = 0; _PreviewStartWaitCounter = 0;
} }
@@ -327,11 +326,6 @@ namespace Vocaluxe.Base
{ {
lock (_PreviewStartHelperTaskLock) lock (_PreviewStartHelperTaskLock)
{ {
// Check if the old _PreviewStartHelperTask needs to disposed
if (_PreviewStartHelperTask != null)
{
_PreviewStartHelperTask.Dispose();
}
_PreviewStartHelperTask = new Task(() => _PreviewStartHelperTask = new Task(() =>
{ {
float length = _PreviewPlayer.Length; float length = _PreviewPlayer.Length;
@@ -360,7 +354,6 @@ namespace Vocaluxe.Base
// Recheck the condition as it cloud have change before we got the lock // Recheck the condition as it cloud have change before we got the lock
if (_PreviewStartHelperTask != null) if (_PreviewStartHelperTask != null)
{ {
_PreviewStartHelperTask.Dispose();
_PreviewStartHelperTask = null; _PreviewStartHelperTask = null;
} }
} }