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 }); } }
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); }
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)); } } }