Ejemplo n.º 1
0
 public ButtonComponent(
     ComponentGroup componentGroup,
     Vector2 position,
     Vector2 size,
     string text,
     MultiStateSprite bgSprite,
     Font font,
     int fontSize
     ) : this(
         componentGroup,
         position,
         size,
         text,
         bgSprite,
         font,
         Color.white,
         fontSize
         )
 {
 }
Ejemplo n.º 2
0
        public ButtonComponent(
            ComponentGroup componentGroup,
            Vector2 position,
            Vector2 size,
            string text,
            MultiStateSprite bgSprite,
            Font font,
            Color textColor,
            int fontSize
            ) : base(componentGroup, position, size)
        {
            _bgSprite     = bgSprite;
            _interactable = true;

            // Create background image
            _image        = GameObject.AddComponent <Image>();
            _image.sprite = bgSprite.Neutral;
            _image.type   = Image.Type.Sliced;

            // Create the text component in the button
            var textObject = new GameObject();

            textObject.AddComponent <RectTransform>().sizeDelta = size;
            _text           = textObject.AddComponent <Text>();
            _text.text      = text;
            _text.font      = font;
            _text.fontSize  = fontSize;
            _text.alignment = TextAnchor.MiddleCenter;
            _text.color     = textColor;

            // Set the transform parent to the ButtonComponent gameObject
            textObject.transform.SetParent(GameObject.transform, false);
            Object.DontDestroyOnLoad(textObject);

            var eventTrigger = GameObject.AddComponent <EventTrigger>();

            _isMouseDown = false;
            _isHover     = false;

            AddEventTrigger(eventTrigger, EventTriggerType.PointerEnter, data => {
                _isHover = true;

                if (_interactable)
                {
                    _image.sprite = bgSprite.Hover;
                }
            });
            AddEventTrigger(eventTrigger, EventTriggerType.PointerExit, data => {
                _isHover = false;
                if (_interactable && !_isMouseDown)
                {
                    _image.sprite = bgSprite.Neutral;
                }
            });
            AddEventTrigger(eventTrigger, EventTriggerType.PointerDown, data => {
                _isMouseDown = true;

                if (_interactable)
                {
                    _image.sprite = bgSprite.Active;
                }
            });
            AddEventTrigger(eventTrigger, EventTriggerType.PointerUp, data => {
                _isMouseDown = false;

                if (_interactable)
                {
                    if (_isHover)
                    {
                        _image.sprite = bgSprite.Hover;
                        _onPress?.Invoke();
                    }
                    else
                    {
                        _image.sprite = bgSprite.Neutral;
                    }
                }
            });
        }
Ejemplo n.º 3
0
        private HiddenInputComponent(
            ComponentGroup componentGroup,
            Vector2 position,
            Vector2 size,
            string defaultValue,
            string placeholderText,
            MultiStateSprite bgSprite,
            Font font,
            int fontSize,
            InputField.CharacterValidation characterValidation = InputField.CharacterValidation.None
            ) : base(
                componentGroup,
                position,
                size,
                defaultValue,
                placeholderText,
                bgSprite,
                font,
                fontSize,
                characterValidation
                )
        {
            _isHidden = true;

            _currentInput = defaultValue;

            InputField.text = HiddenText;
            SetTextAlpha(NotInteractableOpacity);

            var eventTrigger = GameObject.GetComponent <EventTrigger>();

            eventTrigger.triggers.Clear();

            AddEventTrigger(eventTrigger, EventTriggerType.PointerEnter, data => {
                if (Interactable)
                {
                    Image.sprite = bgSprite.Hover;
                }
            });
            AddEventTrigger(eventTrigger, EventTriggerType.PointerExit, data => {
                if (Interactable)
                {
                    Image.sprite = bgSprite.Neutral;

                    if (!_isHidden)
                    {
                        _currentInput   = InputField.text;
                        InputField.text = HiddenText;
                        SetTextAlpha(NotInteractableOpacity);
                    }

                    _isHidden = true;
                }
            });
            AddEventTrigger(eventTrigger, EventTriggerType.PointerDown, data => {
                if (Interactable)
                {
                    Image.sprite    = bgSprite.Active;
                    InputField.text = _currentInput;
                    SetTextAlpha(1f);

                    _isHidden = false;
                }
            });
        }
Ejemplo n.º 4
0
        public InputComponent(
            ComponentGroup componentGroup,
            Vector2 position,
            Vector2 size,
            string defaultValue,
            string placeholderText,
            MultiStateSprite bgSprite,
            Font font,
            int fontSize,
            InputField.CharacterValidation characterValidation = InputField.CharacterValidation.None,
            int characterLimit = 0
            ) : base(componentGroup, position, size)
        {
            _bgSprite = bgSprite;

            Interactable = true;

            // Create background image
            Image        = GameObject.AddComponent <Image>();
            Image.sprite = bgSprite.Neutral;
            Image.type   = Image.Type.Sliced;

            var placeholder = new GameObject();

            placeholder.AddComponent <RectTransform>().sizeDelta = size;
            var placeholderTextComponent = placeholder.AddComponent <Text>();

            placeholderTextComponent.text      = placeholderText;
            placeholderTextComponent.font      = font;
            placeholderTextComponent.fontSize  = fontSize;
            placeholderTextComponent.alignment = TextAnchor.MiddleCenter;
            // Make the color white with opacity so it is clearly different from inputted text
            placeholderTextComponent.color = new Color(1f, 1f, 1f, 0.5f);

            // Set the transform parent to the InputComponent gameObject
            placeholder.transform.SetParent(GameObject.transform, false);
            Object.DontDestroyOnLoad(placeholder);

            var textObject = new GameObject();

            textObject.AddComponent <RectTransform>().sizeDelta = size - new Vector2(TextMargin * 2f, 0f);
            Text           = textObject.AddComponent <Text>();
            Text.text      = defaultValue;
            Text.font      = font;
            Text.fontSize  = fontSize;
            Text.alignment = TextAnchor.MiddleCenter;
            Text.color     = Color.white;

            // Set the transform parent to the InputComponent gameObject
            textObject.transform.SetParent(GameObject.transform, false);

            Object.DontDestroyOnLoad(textObject);

            // Create the actual inputField component
            InputField = GameObject.AddComponent <InputField>();
            InputField.targetGraphic       = Image;
            InputField.placeholder         = placeholderTextComponent;
            InputField.textComponent       = Text;
            InputField.text                = defaultValue;
            InputField.characterValidation = characterValidation;
            InputField.characterLimit      = characterLimit;

            InputField.shouldActivateOnSelect = false;
            InputField.onValueChanged.AddListener(value => { _onChange?.Invoke(value); });

            var eventTrigger = GameObject.AddComponent <EventTrigger>();

            AddEventTrigger(eventTrigger, EventTriggerType.PointerEnter, data => {
                if (Interactable)
                {
                    Image.sprite = bgSprite.Hover;
                }
            });
            AddEventTrigger(eventTrigger, EventTriggerType.PointerExit, data => {
                if (Interactable)
                {
                    Image.sprite = bgSprite.Neutral;
                }
            });
            AddEventTrigger(eventTrigger, EventTriggerType.PointerDown, data => {
                if (Interactable)
                {
                    Image.sprite = bgSprite.Active;
                }
            });
        }