mirror of
https://github.com/RHeavenStudio/HeavenStudio.git
synced 2025-06-12 08:27:40 +02:00
add controller selection, auto-search
- fix bug in master volume control where the text input doesn't work - fix bug in the Fan Club minigame where the player wouldn't jump when they were supposed to
This commit is contained in:
@ -17,10 +17,53 @@ namespace HeavenStudio.Editor
|
||||
[SerializeField] private TMP_Text currentControllerLabel;
|
||||
[SerializeField] private TMP_Dropdown controllersDropdown;
|
||||
[SerializeField] private TMP_Dropdown splitControllersDropdown;
|
||||
[SerializeField] private GameObject autoSearchLabel;
|
||||
|
||||
private bool isAutoSearching = false;
|
||||
|
||||
private void Start() {
|
||||
numConnectedLabel.text = "Connected: " + PlayerInput.GetNumControllersConnected();
|
||||
currentControllerLabel.text = "Current Controller: " + PlayerInput.GetInputController(1).GetDeviceName();
|
||||
PopulateControllersDropdown();
|
||||
PopulateSplitControllersDropdown();
|
||||
|
||||
controllersDropdown.onValueChanged.AddListener(delegate
|
||||
{
|
||||
InputController lastController = PlayerInput.GetInputController(1);
|
||||
InputController newController = PlayerInput.GetInputControllers()[controllersDropdown.value];
|
||||
lastController.SetPlayer(newController.GetPlayer() != null ? (int) newController.GetPlayer() : -1);
|
||||
newController.SetPlayer(1);
|
||||
currentControllerLabel.text = "Current Controller: " + newController.GetDeviceName();
|
||||
|
||||
if (typeof(InputJoyshock) == newController.GetType()) {
|
||||
StartCoroutine(SelectionVibrate((InputJoyshock) newController));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void Update() {
|
||||
if (isAutoSearching) {
|
||||
var controllers = PlayerInput.GetInputControllers();
|
||||
foreach (var controller in controllers) {
|
||||
if (controller.GetLastButtonDown() > 0 || controller.GetLastKeyDown() > 0) {
|
||||
PlayerInput.GetInputController(1).SetPlayer(controller.GetPlayer() != null ? (int) controller.GetPlayer() : -1);
|
||||
controller.SetPlayer(1);
|
||||
isAutoSearching = false;
|
||||
autoSearchLabel.SetActive(false);
|
||||
controllersDropdown.value = PlayerInput.GetInputControllerId(1);
|
||||
currentControllerLabel.text = "Current Controller: " + controller.GetDeviceName();
|
||||
|
||||
if (typeof(InputJoyshock) == controller.GetType()) {
|
||||
StartCoroutine(SelectionVibrate((InputJoyshock) controller));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void StartAutoSearch() {
|
||||
autoSearchLabel.SetActive(true);
|
||||
isAutoSearching = true;
|
||||
}
|
||||
|
||||
public void SearchAndConnectControllers()
|
||||
@ -28,9 +71,11 @@ namespace HeavenStudio.Editor
|
||||
int connected = PlayerInput.InitInputControllers();
|
||||
numConnectedLabel.text = "Connected: " + connected;
|
||||
currentControllerLabel.text = "Current Controller: " + PlayerInput.GetInputController(1).GetDeviceName();
|
||||
PopulateControllersDropdown();
|
||||
PopulateSplitControllersDropdown();
|
||||
}
|
||||
|
||||
public void populateControllersDropdown()
|
||||
public void PopulateControllersDropdown()
|
||||
{
|
||||
List<TMP_Dropdown.OptionData> dropDownData = new List<TMP_Dropdown.OptionData>();
|
||||
var vals = PlayerInput.GetInputControllers();
|
||||
@ -44,7 +89,7 @@ namespace HeavenStudio.Editor
|
||||
controllersDropdown.value = 0;
|
||||
}
|
||||
|
||||
public void populateSplitControllersDropdown()
|
||||
public void PopulateSplitControllersDropdown()
|
||||
{
|
||||
List<TMP_Dropdown.OptionData> dropDownData = new List<TMP_Dropdown.OptionData>();
|
||||
var vals = PlayerInput.GetInputControllers();
|
||||
@ -62,5 +107,16 @@ namespace HeavenStudio.Editor
|
||||
splitControllersDropdown.AddOptions(dropDownData);
|
||||
splitControllersDropdown.value = 0;
|
||||
}
|
||||
|
||||
IEnumerator SelectionVibrate(InputJoyshock controller)
|
||||
{
|
||||
JslSetRumbleFrequency(controller.GetHandle(), 0.2f, 0.25f, 80f, 160f);
|
||||
yield return new WaitForSeconds(0.08f);
|
||||
JslSetRumbleFrequency(controller.GetHandle(), 0f, 0f, 0f, 0f);
|
||||
yield return new WaitForSeconds(0.04f);
|
||||
JslSetRumbleFrequency(controller.GetHandle(), 0.25f, 0f, 640f, 0f);
|
||||
yield return new WaitForSeconds(0.05f);
|
||||
JslSetRumbleFrequency(controller.GetHandle(), 0f, 0f, 0f, 0f);
|
||||
}
|
||||
}
|
||||
}
|
@ -68,7 +68,7 @@ namespace HeavenStudio.Editor
|
||||
|
||||
public void OnVolLabelChanged()
|
||||
{
|
||||
volSlider.value = (float)System.Math.Round(System.Convert.ToSingle(volLabel.text), 2);
|
||||
volSlider.value = (float)System.Math.Round(System.Convert.ToSingle(volLabel.text) / 100f, 2);
|
||||
GlobalGameManager.ChangeMasterVolume(volSlider.value);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user