コード例 #1
0
    /// <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();
        }
    }
コード例 #2
0
    /// <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);
            }
        }
    }