public double GetSplitTime(IDriverGeneral _player) { DriverGeneral player = (DriverGeneral)_player; //return 1; int lapsbase_leader = player.__LapsData.ToInt32(); if (lapsbase_leader == 0) { return(1000000f); } int lapsbase = __LapsData.ToInt32(); int sectors_leader = player.SectorsDriven; int sectors_follower = SectorsDriven; bool ahead = false; int plus = 0; if (player.Laps - this.Laps == 1) { if (player.MetersDriven > this.MetersDriven && sectors_leader - 2 >= sectors_follower) { return(10000); } } if (player.Laps - this.Laps > 1) { ahead = true; } if (ahead) { if (player.MetersDriven < this.MetersDriven) { sectors_leader--; } return(10000 * (plus + Math.Floor((sectors_leader - sectors_follower) / 3.0))); } // Get the most accurate sectors // get both race time values for this sector double sector_leader = GetSectorRaceTime(lapsbase_leader, sectors_follower); double sector_follower = GetSectorRaceTime(lapsbase, sectors_follower); return(sector_follower - sector_leader); }
void UpdateDrivers_Elapsed(object sender, ElapsedEventArgs e) { if(rFactor.Session.Cars != PrevCars || PrevCars!= _AllDrivers.Count) { lock (_AllDrivers) { _AllDrivers.Clear(); int dpos = 0; // Create XX drivers for (int i = 0; i < MaxCars; i++) { int pos = rFactor.Game.ReadInt32(new IntPtr(0x04*i + 0x715298)); int d = pos - dpos; dpos = pos; DriverGeneral c = new DriverGeneral(pos); if (c.Name != "" && c.Position > 0 && c.Position < 120) _AllDrivers.Add(c); } if(_AllDrivers.Count == 0) _AllDrivers.Add(new DriverGeneral(0x7154C0)); } PrevCars = rFactor.Session.Cars; } }
void UpdateDrivers_Elapsed(object sender, ElapsedEventArgs e) { if (rFactor.Simulator.UseMemoryReader) { // TODO: Match car to MMF instead if (rFactor.Session.Cars != PrevCars || PrevCars != _AllDrivers.Count) { lock (_AllDrivers) { _AllDrivers.Clear(); int dpos = 0; // Create XX drivers for (int i = 0; i < MaxCars; i++) { int pos = rFactor.Game.ReadInt32(new IntPtr(0x04 * i + 0x715298)); int d = pos - dpos; dpos = pos; DriverGeneral c = new DriverGeneral(pos); if (pos != 0 && c.Name != "" && c.Position > 0 && c.Position < 120) _AllDrivers.Add(c); } if (_AllDrivers.Count == 0) _AllDrivers.Add(new DriverGeneral(0x7154C0)); } if (_AllDrivers.Count(x => x.IsPlayer) == 1) _player = _AllDrivers.Where(x => x.IsPlayer).FirstOrDefault(); else if (_AllDrivers.Count(x => x.BaseAddress == 0x7154C0) == 1) _player = _AllDrivers.Where(x => x.BaseAddress == 0x7154C0).FirstOrDefault(); else if (_AllDrivers.Count > 0) _player = _AllDrivers.FirstOrDefault(); else _player = null; PrevCars = rFactor.Session.Cars; } } else { /* try { lock (_AllDrivers) { if (rFactor.Session.Cars != PrevCars || PrevCars != _AllDrivers.Count) { _AllDrivers.Clear(); for (int i = 0; i < rFactor.MMF.Telemetry.Session.Cars; i++) { _AllDrivers.Add(new DriverGeneral(rFactor.MMF.Drivers[i])); } if (_AllDrivers.Count == 0) _player = null; else _player = _AllDrivers.Where(x => x.IsPlayer).FirstOrDefault(); PrevCars = rFactor.Session.Cars; } else { for (int i = 0; i < rFactor.MMF.Telemetry.Session.Cars; i++) { _AllDrivers[i] = new DriverGeneral(rFactor.MMF.Drivers[i]); } } } } catch (Exception ex) { }*/ } }