Calculate player rating based on last sung line

This commit is contained in:
Florian Küpper committed 2017-09-02 23:15:45 +02:00
1 parent d7523ced37
commit 7edff72194
2 files changed
+9 -1

No files matched your search

+8 -1
View File
@@ -199,6 +199,7 @@ namespace Vocaluxe.Base
Players[i].Points = 0f;
Players[i].PointsLineBonus = 0f;
Players[i].PointsGoldenNotes = 0f;
Players[i].Rating = 0.5f;
Players[i].VoiceNr = 0;
Players[i].NoteDiff = 0;
Players[i].SungLines = new List<CSungLine>();
@@ -343,10 +344,11 @@ namespace Vocaluxe.Base
}
}
// Line Bonus
// Check if line ended
int numLinesWithPoints = song.Notes.GetNumLinesWithPoints(Players[p].VoiceNr);
if (beat == lines[line].LastNoteBeat && lines[line].Points > 0 && numLinesWithPoints > 0)
{
// Line Bonus
double factor = Players[p].SungLines[line].Points / (double)lines[line].Points;
if (factor <= 0.4)
factor = 0.0;
@@ -363,6 +365,11 @@ namespace Vocaluxe.Base
Players[p].Points += points;
Players[p].PointsLineBonus += points;
Players[p].SungLines[line].BonusPoints += points;
//Calculate rating
double stretchFactor = 0.2;
double current = Players[p].SungLines[line].Points / (double)lines[line].Points;
Players[p].Rating = (Players[p].Rating + (current * stretchFactor - 0.1)).Clamp(0, 1);
}
}
}
+1
View File
@@ -362,6 +362,7 @@ namespace VocaluxeLib
public double Points;
public double PointsLineBonus;
public double PointsGoldenNotes;
public double Rating;
public int NoteDiff;
public int VoiceNr;
public List<CSungLine> SungLines;