Inheritance: IDriverGeneral
コード例 #1
0
ファイル: Driver.cs プロジェクト: llenroc/SimTelemetry
        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);
        }
コード例 #2
0
ファイル: Drivers.cs プロジェクト: Quikcurl/SimTelemetry
        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;
            }
        }
コード例 #3
0
        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)
                {

                }*/
            }
        }