private void reset() { // empty track position driverTrkPos = new Double[maxcars]; // reset laptimes lapStartTime = 0; lapTimeValid = false; // fuel consumption, last 5 lap rolling fuelcons = new Double[fuelconslaps]; fuelconsPtr = 0; // init timedelta timedelta = new TimeDelta((Int32)trackLength); timedelta.SaveBestLap(carid); }
public void initialize() { sdk = new iRacingSDK(); sdk.Startup(); // check connection if (sdk.IsConnected()) { String yaml = sdk.GetSessionInfo(); // caridx Int32 start = yaml.IndexOf("DriverCarIdx: ") + "DriverCarIdx: ".Length; Int32 end = yaml.IndexOf("\n", start); carIdx = Int32.Parse(yaml.Substring(start, end - start)); // carname start = yaml.IndexOf("CarIdx: " + carIdx.ToString(), start); start = yaml.IndexOf("CarPath: ", start) + "CarPath: ".Length; end = yaml.IndexOf("\n", start); if (start < 0) { carname = "unknown"; } else { carname = yaml.Substring(start, end - start); } // track name start = yaml.IndexOf("TrackName: ") + "TrackName: ".Length; end = yaml.IndexOf("\n", start); if (start < 0) { trackname = "unknown"; } else { trackname = yaml.Substring(start, end - start); } // track length start = yaml.IndexOf("TrackLength: ") + "TrackLength: ".Length; end = yaml.IndexOf("km\n", start); String dbg = yaml.Substring(start, end - start); trackLength = (Int32)(Single.Parse(yaml.Substring(start, end - start)) * 1000); // session types RegexOptions options = RegexOptions.IgnoreCase | RegexOptions.Compiled; MatchCollection sessionNums, sessionTypes; Regex optionRegex = new Regex(@"SessionNum: (\d+)", options); // Get matches of pattern in yaml sessionNums = optionRegex.Matches(yaml); optionRegex = new Regex(@"SessionType: (\w+)", options); sessionTypes = optionRegex.Matches(yaml); Int32 currentSessionNum = (Int32)sdk.GetData("SessionNum"); // Iterate matches for (Int32 ctr = 0; ctr < Math.Min(sessionNums.Count, sessionTypes.Count); ctr++) { if (Int32.Parse(sessionNums[ctr].Value.Substring(12)) == currentSessionNum) { switch (sessionTypes[ctr].Value.Substring(13).Trim()) { case "Practice": sessiontype = iRacing.SessionTypes.practice; break; case "Qualify": sessiontype = iRacing.SessionTypes.qualify; break; case "Race": sessiontype = iRacing.SessionTypes.race; break; default: sessiontype = iRacing.SessionTypes.invalid; break; } } } // reset laptimes lapStartTime = (Double)sdk.GetData("ReplaySessionTime"); lapTimeValid = false; // fuel consumption, last 5 lap rolling fuelcons = new Single[fuelconslaps]; fuelconsPtr = 0; // init timedelta timedelta = new TimeDelta(trackLength); timedelta.SaveBestLap(carIdx); LoadBestLap(); init = true; } else // retry next tick { init = false; } }