Beispiel #1
0
        public FactionTooltipLogic(Widget widget, ButtonWidget button)
        {
            var lines = button.GetTooltipText().Replace("\\n", "\n").Split('\n');

            var header = widget.Get<LabelWidget>("HEADER");
            var headerLine = lines[0];
            var headerFont = Game.Renderer.Fonts[header.Font];
            var headerSize = headerFont.Measure(headerLine);
            header.Bounds.Width += headerSize.X;
            header.Bounds.Height += headerSize.Y;
            header.GetText = () => headerLine;

            if (lines.Length > 1)
            {
                var description = widget.Get<LabelWidget>("DESCRIPTION");
                var descriptionLines = lines.Skip(1).ToArray();
                var descriptionFont = Game.Renderer.Fonts[description.Font];
                description.Bounds.Y += header.Bounds.Y + header.Bounds.Height;
                description.Bounds.Width += descriptionLines.Select(l => descriptionFont.Measure(l).X).Max();
                description.Bounds.Height += descriptionFont.Measure(descriptionLines.First()).Y * descriptionLines.Length;
                description.GetText = () => string.Join("\n", descriptionLines);

                widget.Bounds.Width = Math.Max(header.Bounds.X + header.Bounds.Width, description.Bounds.X + description.Bounds.Width);
                widget.Bounds.Height = description.Bounds.Y + description.Bounds.Height;
            }
            else
            {
                widget.Bounds.Width = header.Bounds.X + header.Bounds.Width;
                widget.Bounds.Height = header.Bounds.Y + header.Bounds.Height;
            }
        }
Beispiel #2
0
        public ButtonTooltipLogic(Widget widget, ButtonWidget button)
        {
            var label = widget.Get<LabelWidget>("LABEL");
            var font = Game.Renderer.Fonts[label.Font];
            var text = button.GetTooltipText();
            var labelWidth = font.Measure(text).X;

            label.GetText = () => text;
            label.Bounds.Width = labelWidth;
            widget.Bounds.Width = 2 * label.Bounds.X + labelWidth;

            if (button.Key.IsValid())
            {
                var hotkey = widget.Get<LabelWidget>("HOTKEY");
                hotkey.Visible = true;

                var hotkeyLabel = "({0})".F(button.Key.DisplayString());
                hotkey.GetText = () => hotkeyLabel;
                hotkey.Bounds.X = labelWidth + 2 * label.Bounds.X;

                widget.Bounds.Width = hotkey.Bounds.X + label.Bounds.X + font.Measure(hotkeyLabel).X;
            }
        }