server-master/srcs/WingsAPI.Game/Configurations/ReputationConfiguration.cs
2026-02-10 18:21:30 +01:00

34 lines
No EOL
1 KiB
C#

using System.Collections.Generic;
using System.Linq;
using WingsEmu.Game._enum;
namespace WingsEmu.Game.Configurations;
public interface IReputationConfiguration
{
public ReputationInfo GetReputationInfo(long reputation, int place);
}
public class ReputationConfiguration : IReputationConfiguration
{
private readonly List<ReputationInfo> _reputationInfos;
public ReputationConfiguration(IEnumerable<ReputationInfo> reputationInfos)
{
_reputationInfos = reputationInfos.OrderByDescending(s => s.Threshold).ToList();
}
public ReputationInfo GetReputationInfo(long reputation, int place)
{
var reputationInfo = _reputationInfos.Where(s => reputation >= s.Threshold).ToList();
return reputationInfo.FirstOrDefault(s => place >= s.MaxPlayers && place <= s.MinPlayers) ?? reputationInfo.FirstOrDefault();
}
}
public class ReputationInfo
{
public ReputationType Rank { get; set; }
public long Threshold { get; set; }
public int? MinPlayers { get; set; }
public int? MaxPlayers { get; set; }
}