private void prepareListOfDrivers(RaceEventConfig eventCfg, out List <DriverCharacter> drivers, out DriverCharacter playerDriver) { playerDriver = null; drivers = new List <DriverCharacter>(); // Add player, if its required if (eventCfg.PlayerDriver >= 0) { playerDriver = LF.RaceAssets.Drivers[LF.RaceAssets.Names[eventCfg.PlayerDriver]]; drivers.Add(playerDriver); } // Choose random set of opponents if (eventCfg.Opponents > 0) { DriverCharacter[] allDrivers = new DriverCharacter[LF.RaceAssets.Drivers.Count]; LF.RaceAssets.Drivers.Values.CopyTo(allDrivers, 0); Utils.Shuffle(allDrivers, new System.Random()); for (int i = 0, cnt = 0; cnt < eventCfg.Opponents; ++i) { if (allDrivers[i] != playerDriver) { drivers.Add(allDrivers[i]); cnt++; } } } }
public void StartAIDemo(RaceEventConfig eventCfg) { LF.Menu.HideMenu(); // FadeOut(50); TODO setupAIRace(eventCfg); // FadeIn(50); TODO }
private void setupRace(RaceEventConfig eventCfg) { clearRace(); // Prepare list of drivers DriverCharacter playerDriver; List <DriverCharacter> drivers; prepareListOfDrivers(eventCfg, out drivers, out playerDriver); // Switch to the desired AI type if (eventCfg.Physics == RacePhysicsMode.Safe && _aiRegionBased != null) { _ai = _aiRegionBased; } else { _ai = _aiPathBased; } // Create cars, assign AI, put on the starting grid... createRacingCars(drivers, playerDriver); // Read customizable settings for the track and vehicle behavior readAIAndPhysicsConfig(eventCfg.Physics == RacePhysicsMode.Safe ? "race_safe.ini" : "race_wild.ini"); _race.Start(eventCfg.Laps, eventCfg.CarCollisions); }
public static void Load(string filepath, ref GameConfig gameCfg, ref RaceEventConfig raceCfg) { if (!File.Exists(filepath)) { return; } FileIniDataParser file = new FileIniDataParser(); file.Parser.Configuration.CommentString = "//"; IniData inidata = file.ReadFile(filepath); IniGetter ini = new IniGetter(inidata); gameCfg.MusicVolume = ini.GetInt("main", "music", gameCfg.MusicVolume); raceCfg.PlayerDriver = ini.GetInt("race", "driver", raceCfg.PlayerDriver); raceCfg.Laps = ini.GetInt("race", "laps", raceCfg.Laps); raceCfg.Opponents = ini.GetInt("race", "opponents", raceCfg.Opponents); string physics = ini.GetString("race", "physics", raceCfg.Physics.ToString()); RacePhysicsMode mode; if (Enum.TryParse <RacePhysicsMode>(physics, out mode)) { raceCfg.Physics = mode; } raceCfg.CarCollisions = ini.GetBool("race", "car_collisions", raceCfg.CarCollisions); /* TODO * * IsDebugMode = ini.ReadBool("main", "debug_mode", IsDebugMode); */ }
public void StartSinglePlayer(RaceEventConfig eventCfg) { LF.Menu.HideMenu(); // FadeOut(50); TODO setupSinglePlayerRace(eventCfg); // FadeIn(50); TODO runStartSequence(); }
// TODO: share duplicate code with setupSinglePlayerRace private void setupAIRace(RaceEventConfig eventCfg) { _game.State.Paused = true; setupRace(new RaceEventConfig(-1, eventCfg.Opponents, eventCfg.Laps, eventCfg.Physics, eventCfg.CarCollisions)); cameraTargetRandomCar(true); _isAIRace = true; _game.State.Paused = false; }
private void setupSinglePlayerRace(RaceEventConfig eventCfg) { _game.State.Paused = true; setupRace(eventCfg); cameraTargetPlayerCar(true); _isAIRace = false; RaceUI.Show(_race); _game.State.Paused = false; }
private void onLoad() { /* TODO: * FadeOut(0); * StopAllAudio(); */ RaceUI.Init(_game); RaceEventConfig cfg = LF.Menu.RaceConfig; cfg.PlayerDriver = -1; // no player cfg.Opponents = LF.RaceAssets.Drivers.Count; // max drivers cfg.Laps = 0; // drive forever setupAIRace(cfg); _music.Play(true); GameStateManager.PushState(this); }
public static void Save(string filepath, GameConfig gameCfg, RaceEventConfig raceCfg) { IniData inidata = new IniData(); IniSetter ini = new IniSetter(inidata); ini.SetInt("main", "music", gameCfg.MusicVolume); ini.SetInt("race", "driver", raceCfg.PlayerDriver); ini.SetInt("race", "laps", raceCfg.Laps); ini.SetInt("race", "opponents", raceCfg.Opponents); ini.SetString("race", "physics", raceCfg.Physics.ToString()); ini.SetBool("race", "car_collisions", raceCfg.CarCollisions); FileIniDataParser file = new FileIniDataParser(); file.Parser.Configuration.CommentString = "//"; file.WriteFile(filepath, inidata); /* TODO * * IsDebugMode = ini.ReadBool("main", "debug_mode", IsDebugMode); */ }