public static void DoCreate(TrainCar car) { try { string carId = (car.logicCar != null) ? car.ID : "[No ID]"; switch (car.carType) { default: Main.Log($"Skipping LocoLights creation for train car {carId} ({car.carType})"); return; // locomotives case TrainCarType.LocoSteamHeavy: SH282LightDefinition.SetupEngine(car); break; case TrainCarType.LocoShunter: DE2LightDefinition.SetupLights(car); break; case TrainCarType.LocoDiesel: DE6LightDefinition.SetupLights(car); break; // train cars case TrainCarType.PassengerBlue: case TrainCarType.PassengerGreen: case TrainCarType.PassengerRed: PassengerCarLightDefinition.SetupLights(car); break; case TrainCarType.CabooseRed: CabooseLightDefinitions.SetupLights(car); break; } Main.Log($"Created LocoLights for train car {carId} ({car.carType})"); } catch (Exception e) { Main.LogError(e); } }
public static void DoDestroy(TrainCar car) { try { var tcLights = car.gameObject.GetComponent <TrainCarLights>(); if (tcLights == null) { return; } if (car.carType == TrainCarType.LocoSteamHeavy) { SH282LightDefinition.TeardownTender(car.rearCoupler?.coupledTo?.train, car); } string carId = (car.logicCar != null) ? car.ID : "[No ID]"; Main.Log($"Destroying LocoLights for train car {carId}"); GameObject.Destroy(tcLights); } catch (Exception e) { Main.LogError(e); } }