/// <summary> /// Вспомогательный метод для актуализации информации о рекордах и обновлении данных /// </summary> /// <param name="parNoSort">Флаг отсутствия необходимости сортировки</param> private void ActualizeRecordsInfo(bool parNoSort = false) { if (PlayerRecordsInfo == null) { PlayerRecordsInfo = new List <RecordPlayerInfo>(); } else { if (!parNoSort) { PlayerRecordsInfo = PlayerRecordsInfo.OrderByDescending(parInfo => parInfo.PointsEarned).ToList(); } while (PlayerRecordsInfo.Count > MAXIMUM_PLAYERS_INFOS) { PlayerRecordsInfo.RemoveAt(MAXIMUM_PLAYERS_INFOS); } } }
/// <summary> /// Попробовать осуществить добавление информации о рекорде /// </summary> /// <param name="parPlayerInfo">Информация о рекорде игрока</param> /// <returns>True если добавление было произведено успешно</returns> public bool TryAddRecord(RecordPlayerInfo parPlayerInfo) { ActualizeRecordsInfo(); int insertIndex = GetInsertIndex(parPlayerInfo.PointsEarned); if (insertIndex >= MAXIMUM_PLAYERS_INFOS) { return(false); } else { if (insertIndex > PlayerRecordsInfo.Count) { PlayerRecordsInfo.Add(parPlayerInfo); } else { PlayerRecordsInfo.Insert(insertIndex, parPlayerInfo); ActualizeRecordsInfo(true); } return(true); } }