static IEnumerator <object> AttachListeners() { yield return((object)null); var rotary02 = GameObjectUtils.FindObject(instance.transform.gameObject, "C headlights dash_rotary02"); DV.CabControls.ControlImplBase lightCtrl = rotary02.gameObject.GetComponent <DV.CabControls.ControlImplBase>(); if (PlayerManager.Car.carType == TrainCarType.LocoShunter) { locoLights = PlayerManager.Car.GetComponent <LocoLights>(); } if (locoLights != null) { lightCtrl.SetValue(locoLights.IsOn ? 1f : 0f); } lightCtrl.ValueChanged += (e => { if (locoLights != null) { locoLights.SetLights(e.newValue > 0.5f); } }); }
static IEnumerator <object> AttachListeners() { yield return((object)null); DV.CabControls.ControlImplBase fanCtrl = instance.fanSwitchButton.GetComponent <DV.CabControls.ControlImplBase>(); fanCtrl.ValueChanged += (e => { Main.isFanOn = e.newValue >= 0.5f; }); }
static IEnumerator AttachListeners() { yield return(null); var light_switch = GameObjectUtils.FindObject(instance.transform.gameObject, "C light lever"); DV.CabControls.ControlImplBase lightCtrl = light_switch .gameObject.GetComponent <DV.CabControls.ControlImplBase>(); if (PlayerManager.Car.carType == TrainCarType.LocoSteamHeavy) { locoLights = PlayerManager.Car.GetComponent <LocoLights>(); } var isInitialized = Traverse.Create(lightCtrl).Field("isInitialized"); Main.Log("pausing until Lever is initialized"); while (!isInitialized.GetValue <bool>()) { yield return(null); } Main.Log("Lever is initialized; resuming"); if (locoLights != null) { float position = DirectionToLeverPosition(locoLights.IsOn ? locoLights.Direction : 0f); lightCtrl.SetValue(position); } lightCtrl.ValueChanged += (e => { if (locoLights != null) { float direction = LeverPositionToDirection(e.newValue); locoLights.SetLights(Mathf.Abs(direction) > 0.25f); locoLights.SetDirection(Mathf.Abs(direction) > 0.75f ? direction : 0f); } }); }
static IEnumerator <object> AttachListeners() { yield return((object)null); DV.CabControls.ControlImplBase sandDeployCtrl = instance.sandDeployBtn.GetComponent <DV.CabControls.ControlImplBase>(); sandDeployCtrl.ValueChanged += (e => { if (PlayerManager.Car == null || PlayerManager.Car.trainset == null) { return; } for (int i = 0; i < PlayerManager.Car.trainset.cars.Count; i++) { TrainCar car = PlayerManager.Car.trainset.cars[i]; if (PlayerManager.Car.Equals(car)) { continue; } if (car.carType == TrainCarType.LocoShunter) { LocoControllerShunter locoController = car.GetComponent <LocoControllerShunter>(); if (locoController) { locoController.SetSandersOn(e.newValue >= 0.5f); } } else if (car.carType == TrainCarType.LocoDiesel) { LocoControllerDiesel locoController = car.GetComponent <LocoControllerDiesel>(); if (locoController) { locoController.SetSandersOn(e.newValue >= 0.5f); } } } }); DV.CabControls.ControlImplBase fanCtrl = instance.fanSwitchButton.GetComponent <DV.CabControls.ControlImplBase>(); fanCtrl.ValueChanged += (e => { if (PlayerManager.Car == null || PlayerManager.Car.trainset == null) { return; } for (int i = 0; i < PlayerManager.Car.trainset.cars.Count; i++) { TrainCar car = PlayerManager.Car.trainset.cars[i]; if (PlayerManager.Car.Equals(car)) { continue; } if (car.carType == TrainCarType.LocoShunter) { LocoControllerShunter locoController = car.GetComponent <LocoControllerShunter>(); if (locoController) { locoController.SetFan(e.newValue >= 0.5f); } } else if (car.carType == TrainCarType.LocoDiesel) { LocoControllerDiesel locoController = car.GetComponent <LocoControllerDiesel>(); if (locoController) { locoController.SetFan(e.newValue >= 0.5f); } } } }); }
static IEnumerator <object> AttachListeners() { yield return(null); DV.CabControls.ControlImplBase sanderCtrl = instance.sanderValveObj.GetComponent <DV.CabControls.ControlImplBase>(); sanderCtrl.ValueChanged += (e => { if (PlayerManager.Car == null || PlayerManager.Car.trainset == null) { return; } for (int i = 0; i < PlayerManager.Car.trainset.cars.Count; i++) { TrainCar car = PlayerManager.Car.trainset.cars[i]; if (PlayerManager.Car.Equals(car)) { continue; } if (car.carType == TrainCarType.LocoSteamHeavy) { LocoControllerSteam steamController = car.GetComponent <LocoControllerSteam>(); if (steamController) { steamController.SetSanderValve(e.newValue); } } } }); DV.CabControls.ControlImplBase blowerCtrl = instance.blowerValveObj.GetComponent <DV.CabControls.ControlImplBase>(); blowerCtrl.ValueChanged += (e => { if (PlayerManager.Car == null || PlayerManager.Car.trainset == null) { return; } for (int i = 0; i < PlayerManager.Car.trainset.cars.Count; i++) { TrainCar car = PlayerManager.Car.trainset.cars[i]; if (PlayerManager.Car.Equals(car)) { continue; } if (car.carType == TrainCarType.LocoSteamHeavy) { LocoControllerSteam steamController = car.GetComponent <LocoControllerSteam>(); if (steamController) { steamController.SetBlower(e.newValue); } } } }); DV.CabControls.ControlImplBase injectorCtrl = instance.injectorValveObj.GetComponent <DV.CabControls.ControlImplBase>(); injectorCtrl.ValueChanged += (e => { if (PlayerManager.Car == null || PlayerManager.Car.trainset == null) { return; } for (int i = 0; i < PlayerManager.Car.trainset.cars.Count; i++) { TrainCar car = PlayerManager.Car.trainset.cars[i]; if (PlayerManager.Car.Equals(car)) { continue; } if (car.carType == TrainCarType.LocoSteamHeavy) { LocoControllerSteam steamController = car.GetComponent <LocoControllerSteam>(); if (steamController) { steamController.SetInjector(e.newValue); } } } }); DV.CabControls.ControlImplBase waterDumpCtrl = instance.waterDumpValveObj.GetComponent <DV.CabControls.ControlImplBase>(); waterDumpCtrl.ValueChanged += (e => { if (PlayerManager.Car == null || PlayerManager.Car.trainset == null) { return; } for (int i = 0; i < PlayerManager.Car.trainset.cars.Count; i++) { TrainCar car = PlayerManager.Car.trainset.cars[i]; if (PlayerManager.Car.Equals(car)) { continue; } if (car.carType == TrainCarType.LocoSteamHeavy) { LocoControllerSteam steamController = car.GetComponent <LocoControllerSteam>(); if (steamController) { steamController.SetWaterDump(e.newValue); } } } }); DV.CabControls.ControlImplBase steamReleaseCtrl = instance.steamReleaserValveObj.GetComponent <DV.CabControls.ControlImplBase>(); steamReleaseCtrl.ValueChanged += (e => { if (PlayerManager.Car == null || PlayerManager.Car.trainset == null) { return; } for (int i = 0; i < PlayerManager.Car.trainset.cars.Count; i++) { TrainCar car = PlayerManager.Car.trainset.cars[i]; if (PlayerManager.Car.Equals(car)) { continue; } if (car.carType == TrainCarType.LocoSteamHeavy) { LocoControllerSteam steamController = car.GetComponent <LocoControllerSteam>(); if (steamController) { steamController.SetSteamReleaser(e.newValue); } } } }); DV.CabControls.ControlImplBase draftPullerCtrl = instance.draftPullerObj.GetComponent <DV.CabControls.ControlImplBase>(); draftPullerCtrl.ValueChanged += (e => { if (PlayerManager.Car == null || PlayerManager.Car.trainset == null) { return; } for (int i = 0; i < PlayerManager.Car.trainset.cars.Count; i++) { TrainCar car = PlayerManager.Car.trainset.cars[i]; if (PlayerManager.Car.Equals(car)) { continue; } if (car.carType == TrainCarType.LocoSteamHeavy) { LocoControllerSteam steamController = car.GetComponent <LocoControllerSteam>(); if (steamController) { steamController.SetDraft(e.newValue); } } } }); DV.CabControls.ControlImplBase fireDoorLeverCtrl = instance.fireDoorLeverObj.GetComponent <DV.CabControls.ControlImplBase>(); fireDoorLeverCtrl.ValueChanged += (e => { if (PlayerManager.Car == null || PlayerManager.Car.trainset == null) { return; } for (int i = 0; i < PlayerManager.Car.trainset.cars.Count; i++) { TrainCar car = PlayerManager.Car.trainset.cars[i]; if (PlayerManager.Car.Equals(car)) { continue; } if (car.carType == TrainCarType.LocoSteamHeavy) { LocoControllerSteam steamController = car.GetComponent <LocoControllerSteam>(); if (steamController) { steamController.SetFireDoorOpen(e.newValue); } } } }); }