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++; } } } }