AcManager.Tools.Data.GameSpecific.PlaceConditions.GetTakenPlace C# (CSharp) Method

GetTakenPlace() public method

public GetTakenPlace ( Game result ) : int
result AcTools.Processes.Game
return int
        public int GetTakenPlace(Game.Result result) {
            if (result == null) return UnremarkablePlace;

            var drift = result.GetExtraByType<Game.ResultExtraDrift>();
            if (drift != null && Type == PlaceConditionsType.Points) {
                return GetTakenPlace(drift.Points);
            }

            var timeAttack = result.GetExtraByType<Game.ResultExtraTimeAttack>();
            if (timeAttack != null && Type == PlaceConditionsType.Points) {
                return GetTakenPlace(timeAttack.Points);
            }

            switch (Type) {
                case PlaceConditionsType.Points:
                    return UnremarkablePlace;
                case PlaceConditionsType.Position:
                    var place = result.Sessions.LastOrDefault(x => x.BestLaps.Any())?.CarPerTakenPlace?.IndexOf(0);
                    return place.HasValue ? GetTakenPlace(place.Value + 1) : UnremarkablePlace;
                case PlaceConditionsType.Time:
                    var time = result.Sessions.LastOrDefault(x => x.BestLaps.Any())?.BestLaps.FirstOrDefault(x => x.CarNumber == 0)?.Time;
                    return time.HasValue ? GetTakenPlace((int)time.Value.TotalMilliseconds) : UnremarkablePlace;
                default:
                    throw new ArgumentOutOfRangeException();
            }
        }

Same methods

PlaceConditions::GetTakenPlace ( int value ) : int