public void OnUse() { switch (CurrentState) { case State.SelectCar: if (PointedCar != null) { SelectedCar = PointedCar; PointedCar = null; HighlightCar(SelectedCar, skinningMaterial); CommsRadioController.PlayAudioFromRadio(SelectedCarSound, transform); SetState(State.SelectSkin); } break; case State.SelectSkin: if ((PointedCar != null) && (PointedCar == SelectedCar)) { // clicked on the selected car again, this means confirm ApplySelectedSkin(); CommsRadioController.PlayAudioFromRadio(ConfirmSound, transform); } else { // clicked off the selected car, this means cancel CommsRadioController.PlayAudioFromRadio(CancelSound, transform); } ResetState(); break; } }
private void SetState(State newState) { if (state == newState) { return; } state = newState; switch (state) { case State.EnterSpawnMode: SetStartingDisplay(); lcdArrow.TurnOff(); ButtonBehaviour = ButtonBehaviourType.Regular; break; case State.PickCar: if (trackUpdateCoro == null) { trackUpdateCoro = StartCoroutine(PotentialTracksUpdateCoro()); } ButtonBehaviour = ButtonBehaviourType.Override; CommsRadioController.PlayAudioFromRadio(spawnModeEnterSound, transform); break; case State.PickDestination: ButtonBehaviour = ButtonBehaviourType.Override; break; } }
private void PointToCar(TrainCar?car) { if (PointedCar != car) { if ((car != null) && CarTypes.IsLocomotive(car.carType)) { PointedCar = car; HighlightCar(PointedCar, selectionMaterial !); CommsRadioController.PlayAudioFromRadio(HoverCarSound, transform); } else { PointedCar = null; ClearHighlightedCar(); } } }
private void PointToCar(TrainCar car) { if (PointedCar != car) { if (car != null) { PointedCar = car; HighlightCar(PointedCar, selectionMaterial); CommsRadioController.PlayAudioFromRadio(HoverCarSound, transform); } else { PointedCar = null; ClearHighlightedCar(); } } }
static void Postfix(CommsRadioController __instance, ref List <ICommsRadioMode> ___allModes, ref CommsRadioCarSpawner ___carSpawnerControl) { if (!Main.Enabled) { return; } try { if (Main.CustomCarManagerInstance.CustomCarsToSpawn.Count <= 0) { return; } //Add our spawner to the comms radio var ccm = Main.CommsRadioCustomCarManager = __instance.gameObject.AddComponent <CommsRadioCustomCarManager>(); //We need to get info from car spawner because we don't have these naturally. ccm.display = ___carSpawnerControl.display; ccm.validMaterial = ___carSpawnerControl.validMaterial; ccm.invalidMaterial = ___carSpawnerControl.invalidMaterial; ccm.lcdArrow = ___carSpawnerControl.lcdArrow; ccm.spawnModeEnterSound = ___carSpawnerControl.spawnModeEnterSound; ccm.spawnVehicleSound = ___carSpawnerControl.spawnVehicleSound; ccm.confirmSound = ___carSpawnerControl.confirmSound; ccm.cancelSound = ___carSpawnerControl.cancelSound; ccm.destinationHighlighterGO = ___carSpawnerControl.destinationHighlighterGO; ccm.directionArrowsHighlighterGO = ___carSpawnerControl.directionArrowsHighlighterGO; //setup script after we add references. ccm.Setup(); //Add our custom mode to comms radio ___allModes.Add(Main.CommsRadioCustomCarManager); } catch (Exception e) { Main.ModEntry.Logger.Error(e.ToString()); } }
private static void AddCommsRouteManager() { if (commsRadioController == null) { commsRadioController = Resources.FindObjectsOfTypeAll <CommsRadioController>().FirstOrDefault(); if (commsRadioController == null) { Module.mod.Logger.Log("commsRadioController empty"); return; } } try { var modes = Traverse.Create(commsRadioController).Field("allModes").GetValue <List <ICommsRadioMode> >(); if (modes != null && modes.Count > 0) { GameObject objToSpawn = new GameObject("CommsRouteManager"); objToSpawn.AddComponent <CommsRouteManager>(); CommsRouteManager radioMode = objToSpawn.GetComponent <CommsRouteManager>(); radioMode.display = Traverse.Create(modes[0]).Field("display").GetValue <CommsRadioDisplay>(); objToSpawn.transform.parent = (modes[0] as MonoBehaviour).gameObject.transform; objToSpawn.SetActive(true); modes.Add(radioMode); commsRouteManager = radioMode; Module.mod.Logger.Log("Comm radio mode added"); } else { Module.mod.Logger.Log($"No commsradio modes found"); } } catch (Exception e) { Module.mod.Logger.Log("Error in mod CommsRadioController registration: " + e.Message); } }
public static void CommsRadioController_UpdateSpawnModesAvailability_Patch(CommsRadioController __instance) { __instance.disabledModeIndices.Clear(); }
static void Postfix(CommsRadioController __instance) { commsRadioController = __instance; Module.mod.Logger.Log("commsRadioController set"); AddCommsRouteManager(); }
static void Postfix(CommsRadioController __instance, List <ICommsRadioMode> ___allModes) { CommsRadioSkinSwitcher.Controller = __instance; skinSwitcher = __instance.gameObject.AddComponent <CommsRadioSkinSwitcher>(); ___allModes.Add(skinSwitcher); }
public void OnUse() { switch (state) { case State.EnterSpawnMode: SetCarToSpawn(Main.CustomCarManagerInstance.CustomCarsToSpawn[selectedCarTypeIndex]); SetState(State.PickCar); break; case State.PickCar: if (carPrefabToSpawn == null) { Debug.LogError("carPrefabToSpawn is null! Something is wrong, can't spawn this car.", this); ClearFlags(); break; } if (canSpawnAtPoint) { SetState(State.PickDestination); CommsRadioController.PlayAudioFromRadio(confirmSound, transform); break; } ClearFlags(); CommsRadioController.PlayAudioFromRadio(cancelSound, transform); break; case State.PickDestination: if (canSpawnAtPoint) { var forward = closestPointOnDestinationTrack.Value.forward; if (!spawnWithTrackDirection) { forward = -forward; } var trainCar = CarSpawner.SpawnCar(carPrefabToSpawn, destinationTrack, (Vector3)closestPointOnDestinationTrack.Value.position + WorldMover.currentMove, forward, true); if (trainCar != null) { SingletonBehaviour <UnusedTrainCarDeleter> .Instance.MarkForDelete(trainCar); CommsRadioController.PlayAudioFromCar(spawnVehicleSound, trainCar); CommsRadioController.PlayAudioFromRadio(confirmSound, transform); canSpawnAtPoint = false; Main.CustomCarManagerInstance.CustomCarsToSpawn[selectedCarTypeIndex].Spawn(trainCar); break; } Debug.LogError("Couldn't spawn car!", carPrefabToSpawn); ClearFlags(); break; } ClearFlags(); CommsRadioController.PlayAudioFromRadio(cancelSound, transform); break; } }