Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }