private void OnPlayerFinished(object state) { object[] stateParams = (object[])state; int currentChallengeID = (int)stateParams[0]; PlayerFinishEventArgs e = (PlayerFinishEventArgs)stateParams[1]; if (e.TimeOrScore > 0) { uint?oldPosition, newPosition; bool newBest; RecordAdapter.CheckAndWriteNewRecord(e.Login, currentChallengeID, e.TimeOrScore, out oldPosition, out newPosition, out newBest); if (newBest) { string nickname = GetNickname(e.Login); if (nickname != null && newPosition <= Settings.MaxRecordsToReport && currentChallengeID == CurrentChallengeID) { DetermineLocalRecords(); OnPlayerNewRecord(e.Login, nickname, e.TimeOrScore, oldPosition, newPosition); } } SessionAdapter.AddSession(e.Login, currentChallengeID, Convert.ToUInt32(e.TimeOrScore)); } }
private void Callbacks_PlayerFinish(object sender, PlayerFinishEventArgs e) { if (!Settings.ResetOnFinish || e.TimeOrScore <= 0) { return; } RunCatchLog(() => ResetValues(e.Login), "Error in Callbacks_PlayerFinish Method.", true); }
private void Callbacks_PlayerFinish(object sender, PlayerFinishEventArgs e) { RunCatchLog(() => { if (e.TimeOrScore <= 0) { SendEmptyManiaLinkPageToLogin(e.Login, MANIA_LINK_PAGE_ID); return; } int?diff = GetDiff(e.Login, 0, e.TimeOrScore, true); if (diff.HasValue) { SendCheckPointUIToLogin(e.Login, diff.Value, 0, true); } }, "Error in Callbacks_PlayerFinish Method.", true); }
private void Callbacks_PlayerFinish(object sender, PlayerFinishEventArgs e) { RunCatchLog(() => ThreadPool.QueueUserWorkItem(OnPlayerFinished, new object[] { CurrentChallengeID, e }), "Error in Callbacks_PlayerFinish Method.", true); }
private void Callbacks_PlayerFinish(object sender, PlayerFinishEventArgs e) { if (!IsDedimaniaResponsive) { return; } RunCatchLog(() => { if (e.TimeOrScore > 0) { int rankingIndex = Array.FindIndex(Rankings, rank => rank.Login == e.Login); DedimaniaRanking ranking = rankingIndex == -1 ? null : Rankings[rankingIndex]; uint?oldRank = null; uint?newRank = null; string nickname = null; if (ranking != null) { if (e.TimeOrScore < ranking.TimeOrScore) { oldRank = (uint)rankingIndex + 1; lock (_rankingModifyLock) { ranking.TimeOrScore = Convert.ToUInt32(e.TimeOrScore); List <DedimaniaRanking> newRankings = new List <DedimaniaRanking>(Rankings); newRankings.Sort(DedimaniaRanking.Comparer); newRank = (uint)newRankings.IndexOf(ranking) + 1; Rankings = newRankings.ToArray(); } } } else { nickname = GetNickname(e.Login); if (nickname == null) { return; } lock (_rankingModifyLock) { List <DedimaniaRanking> newRankings = new List <DedimaniaRanking>(Rankings); DedimaniaRanking newRanking = new DedimaniaRanking(e.Login, nickname, Convert.ToUInt32(e.TimeOrScore), DateTime.Now); newRankings.Add(newRanking); newRankings.Sort(DedimaniaRanking.Comparer); newRank = Convert.ToUInt32(newRankings.IndexOf(newRanking)) + 1; Rankings = newRankings.ToArray(); } } if (newRank.HasValue && newRank <= DedimaniaSettings.MAX_RECORDS_TO_REPORT) { if (newRank == 1) { BestTime = Convert.ToUInt32(e.TimeOrScore); } OnRankingsChanged(Rankings); nickname = nickname ?? GetNickname(e.Login); if (nickname == null) { return; } OnRankChanged(newRank.Value, oldRank, e.Login, nickname, Convert.ToUInt32(e.TimeOrScore)); } } }, "Error in Callbacks_PlayerFinish Method.", true); }