/// <summary> /// Registers the move of a list item at a specific index to a button. /// </summary> /// <param name="button">The button to assign the move to.</param> /// <param name="index">The index of the list item.</param> private void RegisterPlayerMoveToButton(string button, int index) { Move selectedMove = listItems [index].getMove(); Character registeredCharacter = InputSettings.Register(button, selectedMove.GetName()); //The character returned by InputSettings.Register is the character that uses the button. //If the returned character is null, no character uses the button. if (registeredCharacter != null) { registeredCharacter.AddMove(selectedMove); Color characterColor = registeredCharacter.GetColor(); int characterNbr = registeredCharacter.GetNbr(); string buttonDisplayName = button; if (buttonDisplayName.Length > 1) { buttonDisplayName = UnityUtils.ControllerButtonToDisplayName(buttonDisplayName); } listSelector.ClearButton(buttonDisplayName); listItems [index].AssignButton(buttonDisplayName, characterColor, characterNbr); //Mark the selected list item with button and player color. //listSelector AddPanelToCharacterMoves(registeredCharacter, buttonDisplayName, index); ShowOrHideplayText(); } }
/// <summary> /// Init this instance. Adds slots for the buttons of the current owner to the list of moves. /// This is init and not start because the owner is not set form the start. /// </summary> void Init() { //TODO: In case we ever set owner twice, we would have to delete all children of the panel. this.inited = true; panels = new List <GameObject> (); List <string> character1Buttons = InputSettings.GetCharacterButtons(owner.GetNbr()); foreach (string characterButton in character1Buttons) { string previewPath = "Prefabs" + Path.DirectorySeparatorChar + "MovePanel"; string previewCharacterPath = "Prefabs" + Path.DirectorySeparatorChar + "Character"; GameObject previewPanelObject = (GameObject)Resources.Load(previewPath); GameObject previewCharacterObject = (GameObject)Resources.Load(previewCharacterPath); previewCharacterObject.GetComponent <CharacterCollisionDetector>().enabled = false; GameObject previewPanel = Instantiate(previewPanelObject, previewPanelObject.transform.position, previewPanelObject.transform.rotation, transform); if (owner.GetNbr() == 1) { foreach (Transform child in previewPanel.transform) { //Flip all text fields. //The transform of player 1 is flipped. So if all children are not flipped as well, the text is reversed. child.GetComponent <RectTransform> ().localScale = new Vector3(-1, 1, 1); } } //Make selection panel list entries have the default button sprite to make them look less like an interactable list. //string defaultButtonPath = "UI/Skin/Background.psd"; string defaultButtonPath = "Art/Main Menu/button_up_test"; if (System.IO.File.Exists(defaultButtonPath)) { Debug.Log("foooound! file "); } //Sprite defaultButtonSprite = AssetDatabase.GetBuiltinExtraResource<Sprite> (defaultButtonPath); Sprite defaultButtonSprite = Resources.Load <Sprite>(defaultButtonPath); previewPanel.GetComponent <Image> ().sprite = defaultButtonSprite; ResetText(previewPanel); foreach (Transform child in previewPanel.transform) { Text text = child.GetComponent <Text> (); if (text != null) { text.fontSize = 24; } } GameObject previewCharacter = Instantiate(previewCharacterObject, previewCharacterObject.transform.position, previewCharacterObject.transform.rotation, previewPanel.transform); previewPanel.GetComponent <MovePanelBehaviour>().addPreviewCharacter(previewCharacter); float characterPosition; if (owner.GetNbr() == 1) { characterPosition = 2.4f; } else { characterPosition = -2.4f; } previewCharacter.transform.position = new Vector2(characterPosition * previewPanel.transform.localScale.x, 0); previewCharacter.transform.localScale = new Vector3(3 * -previewPanel.transform.localScale.x, 3, 3); previewCharacter.SetActive(false); MovePanelBehaviour panelBehaviour = previewPanel.GetComponent <MovePanelBehaviour> (); if (owner != null) { string characterButtonDisplayName = characterButton; if (characterButtonDisplayName.Length > 1) { characterButtonDisplayName = UnityUtils.ControllerButtonToDisplayName(characterButtonDisplayName); } panelBehaviour.AssignButton(characterButtonDisplayName, owner.GetColor(), 2); } } }