Example #1
0
        public void Scan()
        {
            if (!Scanned)
            {
                _classes = new List <string>();
                _files   = new Dictionary <string, string>();
                Scanned  = true;
                try
                {
                    _mScanner = new IniScanner {
                        IniFile = _file
                    };

                    _mScanner.Read();

                    _team        = _mScanner.TryGetString("Team");
                    _driver      = _mScanner.TryGetString("Driver");
                    _description = _mScanner.TryGetString("Description");
                    _number      = _mScanner.TryGetInt32("Number");

                    if (_team.Length > 3)
                    {
                        _team = _team.Substring(1, _team.Length - 2);
                    }
                    if (_driver.Length > 3)
                    {
                        _driver = _driver.Substring(1, _driver.Length - 2);
                    }
                    if (_description.Length > 3)
                    {
                        _description = _description.Substring(1, _description.Length - 2);
                    }

                    string c = _mScanner.TryGetString("Classes");
                    if (c.StartsWith("\"") && c.Length > 3)
                    {
                        c = c.Substring(1, c.Length - 2);
                    }

                    if (c.StartsWith("\"") && c.Length > 3)
                    {
                        c = c.Substring(1, c.Length - 2);
                    }
                    if (c.Contains(" "))
                    {
                        _classes = new List <string>(c.Split(" ".ToCharArray()));
                    }
                    else
                    {
                        _classes = new List <string>(c.Split(",".ToCharArray()));
                    }

                    // Add category to classes as well!
                    string _category = _mScanner.TryGetString("Category");
                    if (_category.Length > 3)
                    {
                        if (_category.StartsWith("\"") && _category.Length > 3)
                        {
                            _category = _category.Substring(1, _category.Length - 2);
                        }


                        _classes.AddRange(_category.Split(','));
                    }
                    _mod.AddClasses(_classes);

                    if (_files.ContainsKey("Vehicle") == false)
                    {
                        _files.Add("Vehicle",
                                   rFactor.Garage.Files.SearchFile(rFactor.Garage.GamedataDirectory,
                                                                   _mScanner.TryGetString("HDVehicle")));
                    }

                    _infoEngineManufacturer = _mScanner.TryGetString("Engine");

                    _infoYearFounded   = _mScanner.TryGetInt32("TeamFounded");
                    _infoHq            = _mScanner.TryGetString("TeamHeadquarters");
                    _infoStarts        = _mScanner.TryGetInt32("TeamStarts");
                    _infoPoles         = _mScanner.TryGetInt32("TeamPoles");
                    _infoWins          = _mScanner.TryGetInt32("TeamWins");
                    _infoChampionships = _mScanner.TryGetInt32("TeamWorldChampionships");
                }
                catch (Exception e)
                {
                }
                if (_files.ContainsKey("Vehicle"))
                {
                    try
                    {
                        _mHDV = new IniScanner {
                            IniFile = _files["Vehicle"]
                        };
                        _mHDV.IgnoreGroups = false;
                        _mHDV.Read();

                        int gears = _mHDV.TryGetInt32("DRIVELINE", "forwardgears");

                        _gearbox = new rFactorCarGearbox(gears);
                        _wheels  = new rFactorCarWheels(_mHDV);
                    }
                    catch (Exception e)
                    {
                    }
                }

                // Add additional files.
                //_files.Add("Tyre", rFactor.Garage.Files.SearchFile(rFactor.Garage.GamedataDirectory, _mHDV.TryGetString("GENERAL", "TireBrand") + ".tbc"));

                // TODO: Parse more data.
            }
        }