private static async Task loadAIRegionsData(TrackAIData data, string assetpath, IGraphicsFactory f) { IBitmap regionMask = await f.LoadBitmapAsync(assetpath + "airegions.bmp"); if (regionMask == null) { return; } FileIniDataParser file = new FileIniDataParser(); file.Parser.Configuration.CommentString = "//"; IniData inidata = file.ReadFile(assetpath + "airegions.ini"); if (inidata == null) { return; } IniGetter ini = new IniGetter(inidata); Dictionary <Color, float> regionAngles = new Dictionary <Color, float>(); int regions = ini.GetInt("ai", "regions"); for (int i = 0; i < regions; ++i) { string secname = string.Format("region{0}", i); if (!inidata.Sections.ContainsSection(secname)) { continue; } Color col = Color.FromArgb(255, (byte)ini.GetInt(secname, "color_r"), (byte)ini.GetInt(secname, "color_g"), (byte)ini.GetInt(secname, "color_b")); regionAngles[col] = MathUtils.DegreesToRadians(ini.GetFloat(secname, "angle")); } data.AIRegionMask = regionMask; data.AIRegionAngles = regionAngles; return; }
public static TrackConfig LoadConfig(Track track, string iniFilePath) { FileIniDataParser file = new FileIniDataParser(); file.Parser.Configuration.CommentString = "//"; IniData inidata = file.ReadFile(iniFilePath); if (inidata == null) { return(null); } IniGetter ini = new IniGetter(inidata); TrackConfig cfg = new TrackConfig(); cfg.Gravity = ini.GetFloat("track", "gravity"); cfg.AirResistance = ini.GetFloat("track", "air_resistance"); int regions = ini.GetInt("track", "regions"); cfg.Regions = new List <TrackRegionConfig>(); for (int i = 0; i < regions; ++i) { string secname = String.Format("area{0}", i); if (!inidata.Sections.ContainsSection(secname)) { continue; } TrackRegionConfig r = new TrackRegionConfig(); r.IsObstacle = ini.GetBool(secname, "is_obstacle"); r.TerraSlideFriction = ini.GetFloat(secname, "slide_friction"); r.TerraRollFriction = ini.GetFloat(secname, "roll_friction"); r.TerraGrip = ini.GetFloat(secname, "grip"); r.EnvResistance = ini.GetFloat(secname, "env_resistance"); cfg.Regions.Add(r); } return(cfg); }
public static VehicleConfig LoadConfig(Track track, string iniFilePath) { FileIniDataParser file = new FileIniDataParser(); file.Parser.Configuration.CommentString = "//"; IniData inidata = file.ReadFile(iniFilePath); if (inidata == null || !inidata.Sections.ContainsSection("car")) { return(null); } IniGetter ini = new IniGetter(inidata); VehicleConfig cfg = new VehicleConfig(); cfg.BodyLength = ini.GetFloat("car", "bodyLength"); cfg.BodyWidth = ini.GetFloat("car", "bodyWidth"); cfg.DistanceBetweenAxles = ini.GetFloat("car", "distanceBetweenAxles"); cfg.BodyMass = ini.GetFloat("car", "bodyMass"); cfg.BodyAerodynamics = ini.GetFloat("car", "bodyAerodynamics"); cfg.HardImpactLossFactor = ini.GetFloat("car", "hardImpactLossFactor"); cfg.SoftImpactLossFactor = ini.GetFloat("car", "softImpactLossFactor"); cfg.EngineMaxPower = ini.GetFloat("car", "engineMaxPower"); cfg.StillTurningVelocity = ini.GetFloat("car", "stillTurningVelocity"); cfg.DriftVelocityFactor = ini.GetFloat("car", "driftVelocityFactor"); cfg.UISteeringAngle = ini.GetFloat("car_control", "steeringAngle"); return(cfg); }