private void CheckInputSelection(PlayerPrompt prompt) { if (prompt && prompt.inputDropdown) { int value = prompt.inputDropdown.value; if (value - 1 < controllersInPrompts.Length) { if (prompt) { RefreshLayoutDropdown(prompt); prompt.inputTypeImage.color = new Color(0, 0, 0, 1); if (value <= 0) { prompt.inputTypeImage.color = new Color(0, 0, 0, 0); } else if (controllersInPrompts[value - 1].type == ControllerType.Keyboard) { prompt.inputTypeImage.overrideSprite = keyboardIcon; } else if (controllersInPrompts[value - 1].type == ControllerType.Mouse) { prompt.inputTypeImage.overrideSprite = mouseIcon; } else { prompt.inputTypeImage.overrideSprite = joystickIcon; } } } } playerManagementContinueButton.interactable = AllPlayersPickedControllers(); }
public void RefreshPlayerPrompts() { if (playerPrompts != null) { #region Add AddPlayerButton? if (currentAddPlayerButton) { Destroy(currentAddPlayerButton.gameObject); } if (playerPrompts.Count < maxPlayers) { currentAddPlayerButton = Instantiate(addPlayerButtonPrefab); currentAddPlayerButton.onClick.AddListener(AddPlayerPrompt); currentAddPlayerButton.transform.SetParent(playerBowlContent.transform, false); } #endregion Controller[] previousControllers = controllersInPrompts; controllersInPrompts = ReInput.controllers.Controllers.ToArray(); List <string> controllerNames = new List <string>(); controllerNames.Add("None"); foreach (Controller controller in controllersInPrompts) { controllerNames.Add(controller.name); } for (int i = 0; i < playerPrompts.Count; i++) { PlayerPrompt playerPrompt = playerPrompts[i]; playerPrompt.playerText.text = "Player " + (i > 8 ? "" : "0") + (i + 1); int selectionIndex = -1; #region Check Controller Selection if (playerPrompt.inputDropdown.value > 0) { Controller inputSelection = previousControllers[playerPrompt.inputDropdown.value - 1]; if (inputSelection.isConnected) { for (int j = 0; j < controllersInPrompts.Length; j++) { if (controllersInPrompts[j] == inputSelection) { selectionIndex = j; break; } } } //Debug.Log("Index Found: " + selectionIndex); } #endregion playerPrompt.inputDropdown.ClearOptions(); playerPrompt.inputDropdown.AddOptions(controllerNames); playerPrompt.inputDropdown.value = selectionIndex + 1; CheckInputSelection(playerPrompt); } } }
private void OnRemovePlayerClicked() { PlayerPrompt playerPrompt = EventSystem.current.currentSelectedGameObject.GetComponentInParent <PlayerPrompt>(); if (playerPrompt) { if (playerPrompts.Contains(playerPrompt)) { playerPrompts.Remove(playerPrompt); } Destroy(playerPrompt.gameObject); RefreshPlayerPrompts(); } playerManagementContinueButton.interactable = AllPlayersPickedControllers(); }
public void RefreshLayoutDropdown(PlayerPrompt playerPrompt) { if (playerPrompt.inputDropdown && playerPrompt.layoutDropdown) { playerPrompt.layoutDropdown.value = 0; playerPrompt.layoutDropdown.ClearOptions(); if (playerPrompt.inputDropdown.value > 0 && playerPrompt.inputDropdown.value - 1 < controllersInPrompts.Length) { Controller controller = controllersInPrompts[playerPrompt.inputDropdown.value - 1]; IList <InputLayout> layouts; if (controller.type == ControllerType.Joystick) { layouts = ReInput.mapping.JoystickLayouts; } else if (controller.type == ControllerType.Keyboard) { layouts = ReInput.mapping.KeyboardLayouts; } else if (controller.type == ControllerType.Mouse) { layouts = ReInput.mapping.MouseLayouts; } else { layouts = ReInput.mapping.CustomControllerLayouts; } List <string> layoutNames = new List <string>(); foreach (InputLayout layout in layouts) { if (ReInput.mapping.GetControllerMapInstance(controller, "VehicleActions", layout.name).elementMapCount > 0) { layoutNames.Add(layout.name); } } playerPrompt.layoutDropdown.AddOptions(layoutNames); } playerPrompt.layoutDropdown.interactable = playerPrompt.layoutDropdown.options.Count > 0; } }
public void AddPlayerPrompt() { if (playerPrompts == null) { playerPrompts = new List <PlayerPrompt>(); } PlayerPrompt playerPrompt = Instantiate(playerPromptPrefab); playerPrompt.removePlayerButton.onClick.AddListener(OnRemovePlayerClicked); playerPrompt.inputDropdown.onValueChanged.AddListener(OnControllerDropdownValueChanged); playerPrompt.transform.SetParent(playerBowlContent.transform, false); if (playerPrompts.Count <= 0) { playerPrompt.removePlayerButton.interactable = false; } playerPrompts.Add(playerPrompt); RefreshPlayerPrompts(); playerManagementContinueButton.interactable = AllPlayersPickedControllers(); }