public TryGetString ( string key ) : string | ||
key | string | |
Résultat | string |
public void Scan() { if (!Scanned) { Scanned = true; _mScanner = new IniScanner {IniFile = _file}; _mScanner.HandleUnknownLine += new Signal(Handle_TrackLine); _mScanner.IgnoreGroups = false; _mScanner.Read(); // Only name available in rFactor. Or where else? _name = _mScanner.TryGetString("Mod Name"); _author = ""; _description = ""; _website = ""; _version = ""; _directoryVehicles = _mScanner.TryGetString("Main.ConfigOverrides", "VehiclesDir"); string c = _mScanner.TryGetString("Main", "Vehicle Filter"); if (c.StartsWith("\"")) 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())); } // Pitspeeds Int32.TryParse(_mScanner.TryGetString("Main.DefaultScoring", "RacePitKPH"), out _pitSpeedRaceDefault); Int32.TryParse(_mScanner.TryGetString("Main.DefaultScoring", "NormalPitKPH"), out _pitSpeedPracticeDefault); // TODO: Add more properties like ParcFerme properties, flag settings, point scoring, etc. foreach (KeyValuePair<string, Dictionary<string, string[]>> GroupKey in _mScanner.Data) { if (GroupKey.Key.StartsWith("Season")) { // Championship! // TODO: parse track data. } } Int32.TryParse(_mScanner.TryGetString("Main", "Max Opponents"), out _opponents); // Search for all cars in folder. List<string> vehicles = rFactor.Garage.Files.SearchFiles(rFactor.Garage.InstallationDirectory + _directoryVehicles, "*.veh"); foreach (string veh in vehicles) { ICar car = rFactor.Garage.CarFactory(this, veh); if (car.InClass(Classes)) { _models.Add(car); } } Console.WriteLine("Found " + _models.Count + " vehicles for MOD [" + _name + "]"); } }
public void Scan() { if (FoundFiles) { if (!ScannedGDB) { ScannedGDB = true; track_gdb = new IniScanner { IniData = masfile_gdb.Master.ExtractString(masfile_gdb) }; track_gdb.Read(); _name = track_gdb.TryGetString("eventname"); // Extract version number string MASFileDirectory = Path.GetDirectoryName(masfile_gdb.Master.File); _version = ParseVersion(MASFileDirectory); } } }
public void Scan() { if (!ScannedGDB) { track_gdb = new IniScanner {IniFile = _file}; track_gdb.Read(); _name = track_gdb.TryGetString("TrackName"); _location = track_gdb.TryGetString("Location"); _type = track_gdb.TryGetString("TrackType"); _imageCache = System.IO.File.Exists(Thumbnail); _length = 0; // Read from AIW. /******************* QUALIFY DAY *******************/ _qualifyDay = track_gdb.TryGetString("QualifyDay"); Int32.TryParse(track_gdb.TryGetString("QualifyLaps"), out _qualifyLaps); Int32.TryParse(track_gdb.TryGetString("QualifyDuration"), out _qualifyMinutes); int qualify_start_hr = 0, qualify_start_min = 0; string qstart = track_gdb.TryGetString("QualifyStart").Trim(); if (qstart.Length == 5) { Int32.TryParse(qstart.Substring(0, 2), out qualify_start_hr); Int32.TryParse(qstart.Substring(3, 2), out qualify_start_min); _qualifyStart = qualify_start_min*60 + qualify_start_hr*3600; } /******************* RACE DAY *******************/ _fullRaceDay = track_gdb.TryGetString("RaceDay"); Int32.TryParse(track_gdb.TryGetString("RaceLaps"), out _fullRaceLaps); Int32.TryParse(track_gdb.TryGetString("RaceDuration"), out _fullRaceMinutes); int race_start_hr = 0, race_start_min = 0; string rstart = track_gdb.TryGetString("RaceStart").Trim(); if (rstart.Length == 5) { Int32.TryParse(rstart.Substring(0, 2), out race_start_hr); Int32.TryParse(rstart.Substring(3, 2), out race_start_min); _fullRaceMinutes = race_start_min*60 + race_start_hr*3600; } _pitlane = true; //Int32.TryParse(scanner.TryGetString("NormalPitKPH"), out _startingGridSize); //Int32.TryParse(scanner.TryGetString("NormalPitKPH"), out _pitSpots); // TODO: Headlights required. Int32.TryParse(track_gdb.TryGetString("NormalPitKPH"), out _pitSpeedPractice); Int32.TryParse(track_gdb.TryGetString("RacePitKPH"), out _pitSpeedRace); Double.TryParse(track_gdb.TryGetString("Qualify Laptime").Trim(), out _laprecordQualifyTime); Double.TryParse(track_gdb.TryGetString("Race Laptime").Trim(), out _laprecordRaceTime); // Unfortunately, no driver strings in rFactor for lap records. } }
public rFactorCarWheels(IniScanner mHdv) { try { File = mHdv.TryGetString("GENERAL", "TireBrand"); if (File.EndsWith(".tbc") == false) File = File + ".tbc"; File = rFactor.Garage.Files.SearchFile(rFactor.Garage.GamedataDirectory, File); var sides = new string[4] {"FRONTLEFT","FRONTRIGHT","REARLEFT","REARRIGHT"}; IniScanner mTyre = new IniScanner {IniFile = File}; mTyre.Read(); foreach (var side in sides) { var brakeTempInfo = new string[4] {"40", "300", "500", "700"}; if(mHdv.Data.ContainsKey(side) && mHdv.Data[side].ContainsKey("brakeresponsecurve")) brakeTempInfo = mHdv.TryGetData(side, "BrakeResponseCurve"); var brakeTempLow = double.Parse(brakeTempInfo[1]) + 273; var brakeTempHigh = double.Parse(brakeTempInfo[3]) + 273; var brakeFailureMain = mHdv.TryGetString(side, "BrakeFailure").Split(','); var brakeFailure = double.Parse(brakeFailureMain[0]); var optimalPressure = 158.25; // TODO var radius = 0.3261; // TODO rFactorCarWheel rcw = new rFactorCarWheel(radius, brakeTempHigh, brakeTempLow, brakeFailure, optimalPressure); switch (side) { case "FRONTLEFT": LeftFront = rcw; break; case "FRONTRIGHT": RightFront = rcw; break; case "REARLEFT": LeftRear = rcw; break; case "REARRIGHT": RightRear = rcw; break; } } }catch(Exception e) { LeftFront = new rFactorCarWheel(); RightFront = new rFactorCarWheel(); LeftRear = new rFactorCarWheel(); RightRear = new rFactorCarWheel(); } }
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. } }
public void Scan() { string rfmData = MASFile.Master.ExtractString(MASFile); _teams = new List<string>(); _championships = new List<IModChampionship>(); _classes = new List<string>(); _models = new List<ICar>(); IniScanner scan = new IniScanner { IniData = rfmData }; scan.HandleCustomKeys += new Signal(Scan_AddTeamAndLayout); scan.FireEventsForKeys = new List<string>(); scan.FireEventsForKeys.Add("Main.layout"); scan.FireEventsForKeys.Add("Main.team"); scan.Read(); _name = scan.TryGetString("Mod Name"); _version = scan.TryGetString("Mod Version"); _opponents = scan.TryGetInt32("Max Opponents"); _author = "Henk"; _website = ""; _pitSpeedPracticeDefault = scan.TryGetInt32("NormalPitKPH"); _pitSpeedRaceDefault = scan.TryGetInt32("RacePitKPH"); _description = ""; _directoryVehicles = ""; // Irrelevant?! _image = "Cache/Mods/rfactor2_ " + _name+".png"; // Search&extract DDS from RFM file if(System.IO.File.Exists(_image)==false) { // Search in the MAS archive for SMICON.DDS foreach(MAS2File masf in MASFile.Master.Files) { if(masf.Filename.Contains("SMICON")) { try { MASFile.Master.ExtractFile(masf, "tmp.dds"); Bitmap dds_bitmap = DevIL.DevIL.LoadBitmap("tmp.dds"); System.IO.File.Delete("tmp.dds"); DevIL.DevIL.SaveBitmap(_image, dds_bitmap); } catch (Exception ex) { // Failed _image = ""; } break; } } } // Search for vehicles in mod directory // rFactor2 works with 'teams' instead of car class filters List<MAS2File> vehicles = rFactor2.Garage.Files.SearchFiles("*.veh"); foreach(MAS2File f in vehicles) { rFactor2Car c = (rFactor2Car)rFactor2.Garage.CarFactory(this, f.Filename); c.Scan(); if(_teams.Contains(c.Team.Trim().ToLower())) { _models.Add(c); } } }
public void Scan() { if(!Scanned) { _mScanner = new IniScanner{IniData = masfile.Master.ExtractString(masfile)}; _mScanner.Read(); Scanned = true; _team = _mScanner.TryGetString("Description"); _driver = _mScanner.TryGetString("Driver"); _description = _mScanner.TryGetString("Team"); _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 = c.Substring(1, c.Length - 2); if (c.StartsWith("\"")) 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())); } _files = new Dictionary<string, MAS2File>(); _files.Add("Vehicle", rFactor2.Garage.Files.SearchFile(_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"); _mHDV = new IniScanner { IniData = _files["Vehicle"].Master.ExtractString(_files["Vehicle"]) }; _mHDV.IgnoreGroups = false; _mHDV.Read(); } }