예제 #1
0
        public JsonResult GetRaceState()
        {
            _logger.LogInformation("GET /GetRaceState");
            try
            {
                RaceState state = _raceManager.GetRaceState();

                ResponseObject.State stateResponse = new ResponseObject.State
                {
                    responseMessage = "success",
                    state           = state,
                    stateName       = state.ToString()
                };
                return(Json(stateResponse));
            }
            catch (Exception error)
            {
                _logger.LogError("RaceTimer/GetRaceState Exception: " + error.Message);

                ResponseObject.State stateResponse = new ResponseObject.State
                {
                    responseMessage = "error.Message",
                    state           = 0,
                    stateName       = "error getting state"
                };

                return(new JsonResult(stateResponse)
                {
                    StatusCode = (int)HttpStatusCode.BadRequest
                });
            }
        }
예제 #2
0
        public virtual LapTimeResult GetLapTime(int lapsOnTires, RaceState raceState, VehicleState vehicleStatus)
        {
            LapTimeResult result = null;

            if (vehicleStatus == VehicleState.OnTrack)
            {
                switch (raceState)
                {
                case RaceState.PreRace:
                {
                    result = new LapTimeResult();
                    break;
                }

                case RaceState.GreenFlag:
                case RaceState.WhiteFlag:
                case RaceState.Checkered:
                case RaceState.Overdrive:
                {
                    result = GetLapTime(lapsOnTires);
                    break;
                }

                case RaceState.EndOfStage:
                case RaceState.Caution:
                case RaceState.OneToGo:
                {
                    result = GetCautionLapTime();
                    break;
                }

                default:
                    throw new ArgumentException($"Unknown race state: {raceState.ToString()}", nameof(raceState));
                }
            }
            else if (vehicleStatus == VehicleState.PitInLap)
            {
                result = GetPitInLapTime();
            }
            else if (vehicleStatus == VehicleState.PitOutLap)
            {
                result = GetPitOutLapTime();
            }
            else if (vehicleStatus == VehicleState.InPit || vehicleStatus == VehicleState.InGarage || vehicleStatus == VehicleState.Retired)
            {
                result = new LapTimeResult();
            }
            else
            {
                throw new ArgumentException($"Unknown vehicle status: {vehicleStatus.ToString()}", nameof(vehicleStatus));
            }

            return(result);
        }
예제 #3
0
        protected virtual void ProcessLap(NascarRaceLap vehicle, RaceState state)
        {
            switch (state)
            {
            case RaceState.PreRace:
            {
                throw new ArgumentException($"Invalid state in LapService.ProcessLap: {state.ToString()}");
            }

            case RaceState.GreenFlag:
            case RaceState.WhiteFlag:
            case RaceState.Checkered:
            case RaceState.Overdrive:
            {
                ProcessGreenFlagLap(vehicle);
                break;
            }

            case RaceState.EndOfStage:
            case RaceState.Caution:
            case RaceState.OneToGo:
            {
                ProcessCautionFlagLap(vehicle);
                break;
            }

            default:
            {
                throw new ArgumentException($"Unknown race state in LapService.ProcessLap: {state.ToString()}", nameof(state));
            }
            }
        }