Skip to content

Commit 7903691

Browse files
committed
log total WHR change between each battle for individual players in elochange
1 parent 43a399c commit 7903691

2 files changed

Lines changed: 11 additions & 0 deletions

File tree

Zero-K.info/Views/Battles/BattleDetail.cshtml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,10 @@
122122
@if (ViewBag.ShowWinners)
123123
{
124124
@(u.LoseTime.HasValue ? "died in " + TimeSpan.FromSeconds(u.LoseTime.Value).ToNiceString() : "")
125+
if ((Global.IsModerator || Model.IsMatchMaker) && u.EloChange.HasValue)
126+
{
127+
@:Elo: @u.EloChange.Value.ToString("F1")
128+
}
125129
foreach (var award in Model.AccountBattleAwards.Where(x => x.AccountID == u.AccountID))
126130
{
127131
<img src="/img/Awards/trophy_@(award.AwardKey).png" height="30" title="@award.AwardDescription"/>

ZkData/Ef/WHR/WholeHistoryRating.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class WholeHistoryRating : IRatingSystem
2626
IDictionary<ITopPlayersUpdateListener, int> topPlayersUpdateListeners = new Dictionary<ITopPlayersUpdateListener, int>();
2727
public event EventHandler<RatingUpdate> RatingsUpdated;
2828

29+
IDictionary<int, PlayerRating> playerOldRatings = new ConcurrentDictionary<int, PlayerRating>();
2930
IDictionary<int, PlayerRating> playerRatings = new ConcurrentDictionary<int, PlayerRating>();
3031
IDictionary<int, Player> players = new Dictionary<int, Player>();
3132
SortedDictionary<float, int> sortedPlayers = new SortedDictionary<float, int>();
@@ -100,6 +101,11 @@ public void ProcessBattle(SpringBattle battle)
100101
{
101102
Trace.TraceInformation(battlesRegistered + " battles registered for WHR " + category +", latest Battle: " + battle.SpringBattleID);
102103
UpdateRatings();
104+
using (var db = new ZkDataContext()) {
105+
db.SpringBattlePlayers.Where(p => p.SpringBattleID == battle.SpringBattleID && !p.IsSpectator && playerOldRatings.ContainsKey(p.AccountID)).ForEach(p => p.EloChange = playerRatings[p.AccountID].RealElo - playerOldRatings[p.AccountID].RealElo);
106+
db.SaveChanges();
107+
}
108+
losers.Concat(winners).ForEach(x => playerOldRatings[x] = playerRatings[x]);
103109
}
104110
}
105111
}
@@ -169,6 +175,7 @@ public void UpdateRatings()
169175
Trace.TraceInformation("Initializing WHR " + category +" ratings for " + battlesRegistered + " battles, this will take some time.. From B" + firstBattle?.SpringBattleID + " to B" + latestBattle?.SpringBattleID);
170176
runIterations(50);
171177
UpdateRankings(players.Values);
178+
playerOldRatings = new Dictionary<int, PlayerRating>(playerRatings);
172179
SaveToDB();
173180
});
174181
}

0 commit comments

Comments
 (0)