private static StaticPassengerJobDefinition PopulateTransportJobAndSpawn( JobChainController chainController, Station startStation, Track startTrack, Track destTrack, List <TrainCarType> carTypes, StationsChainData chainData, float timeLimit, float initialPay, bool unifyConsist = false) { // Spawn the cars RailTrack startRT = SingletonBehaviour <LogicController> .Instance.LogicToRailTrack[startTrack]; var spawnedCars = CarSpawner.SpawnCarTypesOnTrack(carTypes, startRT, true, 0, false, true); if (spawnedCars == null) { return(null); } chainController.trainCarsForJobChain = spawnedCars; var logicCars = TrainCar.ExtractLogicCars(spawnedCars); if (logicCars == null) { PassengerJobs.ModEntry.Logger.Error("Couldn't extract logic cars, deleting spawned cars"); SingletonBehaviour <CarSpawner> .Instance.DeleteTrainCars(spawnedCars, true); return(null); } if (unifyConsist && SkinManager_Patch.Enabled) { SkinManager_Patch.UnifyConsist(spawnedCars); } return(PopulateTransportJobExistingCars(chainController, startStation, startTrack, destTrack, logicCars, chainData, timeLimit, initialPay)); }
public static bool Load(UnityModManager.ModEntry modEntry) { ModEntry = modEntry; CargoTypes.cargoTypeToCargoMassPerUnit[CargoType.Passengers] = 3000f; if (AccessTools.Field(typeof(ResourceTypes), "cargoToFullCargoDamagePrice")?.GetValue(null) is Dictionary <CargoType, float> cdpDict) { cdpDict[CargoType.Passengers] = 70_000f; } else { ModEntry.Logger.Warning("Failed to adjust passenger damage cost"); } try { PassengerLicenseUtil.RegisterPassengerLicenses(); } catch (Exception ex) { var sb = new StringBuilder("Failed to inject new license definitions into LicenseManager:\n"); for ( ; ex != null; ex = ex.InnerException) { sb.AppendLine(ex.Message); } ModEntry.Logger.Error(sb.ToString()); return(false); } // Initialize settings Settings = UnityModManager.ModSettings.Load <PJModSettings>(ModEntry); ModEntry.OnGUI = DrawGUI; ModEntry.OnSaveGUI = SaveGUI; if (Settings.UniformConsists) { SkinManager_Patch.Initialize(); } var harmony = HarmonyInstance.Create("com.foxden.passenger_jobs"); harmony.PatchAll(Assembly.GetExecutingAssembly()); return(true); }