Пример #1
0
        void BindButtonIcon(ButtonWidget button)
        {
            var icon           = button.Get <ImageWidget>("ICON");
            var hasDisabled    = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-disabled") != null;
            var hasActive      = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-active") != null;
            var hasActiveHover = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-active-hover") != null;
            var hasHover       = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-hover") != null;

            icon.GetImageName = () => hasActive && button.IsHighlighted() ?
                                (hasActiveHover && Ui.MouseOverWidget == button ? icon.ImageName + "-active-hover" : icon.ImageName + "-active") :
                                hasDisabled && button.IsDisabled() ? icon.ImageName + "-disabled" :
                                hasHover && Ui.MouseOverWidget == button ? icon.ImageName + "-hover" : icon.ImageName;
        }
        void BindStanceButton(ButtonWidget button, UnitStance stance, Func <ButtonWidget, Hotkey> getHotkey)
        {
            var icon = button.Get <ImageWidget>("ICON");

            icon.GetImageName = () => button.IsDisabled() ? icon.ImageName + "-disabled" :
                                button.IsHighlighted() ? icon.ImageName + "-active" : icon.ImageName;

            button.GetKey        = getHotkey;
            button.IsDisabled    = () => { UpdateStateIfNecessary(); return(!actorStances.Any()); };
            button.IsHighlighted = () => actorStances.Any(
                at => !at.Trait.IsTraitDisabled && at.Trait.PredictedStance == stance);
            button.OnClick = () => SetSelectionStance(stance);
        }
        void BindStanceButton(ButtonWidget button, UnitStance stance)
        {
            var icon           = button.Get <ImageWidget>("ICON");
            var hasDisabled    = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-disabled") != null;
            var hasActive      = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-active") != null;
            var hasActiveHover = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-active-hover") != null;
            var hasHover       = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-hover") != null;

            icon.GetImageName = () => hasActive && button.IsHighlighted() ?
                                (hasActiveHover && Ui.MouseOverWidget == button ? icon.ImageName + "-active-hover" : icon.ImageName + "-active") :
                                hasDisabled && button.IsDisabled() ? icon.ImageName + "-disabled" :
                                hasHover && Ui.MouseOverWidget == button ? icon.ImageName + "-hover" : icon.ImageName;

            button.IsDisabled    = () => { UpdateStateIfNecessary(); return(!actorStances.Any()); };
            button.IsHighlighted = () => actorStances.Any(
                at => !at.Trait.IsTraitDisabled && at.Trait.PredictedStance == stance);
            button.OnClick = () => SetSelectionStance(stance);
        }
Пример #4
0
        public static void TextInputPrompt(
            string title, string prompt, string initialText,
            Action <string> onAccept, Action onCancel = null,
            string acceptText = null, string cancelText = null,
            Func <string, bool> inputValidator = null)
        {
            var          panel = Ui.OpenWindow("TEXT_INPUT_PROMPT");
            Func <bool>  doValidate = null;
            ButtonWidget acceptButton = null, cancelButton = null;

            // Title
            panel.Get <LabelWidget>("PROMPT_TITLE").GetText = () => title;

            // Prompt
            panel.Get <LabelWidget>("PROMPT_TEXT").GetText = () => prompt;

            // Text input
            var input = panel.Get <TextFieldWidget>("INPUT_TEXT");
            var isValid = false;

            input.Text       = initialText;
            input.IsValid    = () => isValid;
            input.OnEnterKey = () =>
            {
                if (acceptButton.IsDisabled())
                {
                    return(false);
                }

                acceptButton.OnClick();
                return(true);
            };
            input.OnEscKey = () =>
            {
                if (cancelButton.IsDisabled())
                {
                    return(false);
                }

                cancelButton.OnClick();
                return(true);
            };
            input.TakeKeyboardFocus();
            input.CursorPosition = input.Text.Length;
            input.OnTextEdited   = () => doValidate();

            // Buttons
            acceptButton = panel.Get <ButtonWidget>("ACCEPT_BUTTON");
            if (!string.IsNullOrEmpty(acceptText))
            {
                acceptButton.GetText = () => acceptText;
            }

            acceptButton.OnClick = () =>
            {
                if (!doValidate())
                {
                    return;
                }

                Ui.CloseWindow();
                onAccept(input.Text);
            };

            cancelButton = panel.Get <ButtonWidget>("CANCEL_BUTTON");
            if (!string.IsNullOrEmpty(cancelText))
            {
                cancelButton.GetText = () => cancelText;
            }

            cancelButton.OnClick = () =>
            {
                Ui.CloseWindow();
                onCancel?.Invoke();
            };

            // Validation
            doValidate = () =>
            {
                if (inputValidator == null)
                {
                    return(true);
                }

                isValid = inputValidator(input.Text);
                if (isValid)
                {
                    acceptButton.Disabled = false;
                    return(true);
                }

                acceptButton.Disabled = true;
                return(false);
            };

            doValidate();
        }
Пример #5
0
        public static void BindButtonIcon(ButtonWidget button)
        {
            var icon = button.Get <ImageWidget>("ICON");

            var hasActiveImage         = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-active") != null;
            var hasActiveDisabledImage = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-active-disabled") != null;
            var hasActivePressedImage  = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-active-pressed") != null;
            var hasActiveHoverImage    = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-active-hover") != null;

            var hasImage         = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName) != null;
            var hasDisabledImage = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-disabled") != null;
            var hasPressedImage  = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-pressed") != null;
            var hasHoverImage    = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-hover") != null;

            icon.GetImageName = () =>
            {
                var isActive   = button.IsHighlighted();
                var isDisabled = button.IsDisabled();
                var isPressed  = button.Depressed;
                var isHovered  = Ui.MouseOverWidget == button;

                var baseName  = button.IsHighlighted() ? icon.ImageName + "-active" : icon.ImageName;
                var stateName = WidgetUtils.GetStatefulImageName(baseName, isDisabled, isPressed, isHovered);

                if (isActive)
                {
                    if (isDisabled)
                    {
                        return(hasActiveDisabledImage ? stateName : hasActiveImage?baseName : icon.ImageName);
                    }
                    else if (isPressed)
                    {
                        return(hasActivePressedImage ? stateName : hasActiveImage?baseName : icon.ImageName);
                    }
                    else if (isHovered)
                    {
                        return(hasActiveHoverImage ? stateName : hasActiveImage?baseName : icon.ImageName);
                    }
                    else
                    {
                        return(hasActiveImage ? baseName : icon.ImageName);
                    }
                }
                else
                {
                    if (isDisabled)
                    {
                        return(hasDisabledImage ? stateName : baseName);
                    }
                    else if (isPressed)
                    {
                        return(hasPressedImage ? stateName : baseName);
                    }
                    else if (isHovered)
                    {
                        return(hasHoverImage ? stateName : baseName);
                    }
                    else
                    {
                        return(baseName);
                    }
                }
            };
        }
        void BindButtonIcon(ButtonWidget button)
        {
            var icon = button.Get <ImageWidget>("ICON");

            icon.GetImageName = () => button.IsDisabled() ? icon.ImageName + "-disabled" : icon.ImageName;
        }