summaryrefslogtreecommitdiff
path: root/source/ui/elements/game/tooltips/ItemTooltipDisplay.cs
blob: 9b62af4bb297891fce7b24bd01cc8f76f56faa86 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
using Celesteia.Resources.Types;
using Celesteia.UI.Properties;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace Celesteia.UI.Elements.Game.Tooltips {
    public class ItemTooltipDisplay : TooltipDisplay
    {
        private const float OUTER_SPACING = 16f;
        private const float INNER_SPACING = 8f;
        public readonly Container Content;
        public readonly Label Title;
        public readonly ItemDisplay Item;

        public ItemTooltipDisplay(Rect rect, Texture2D background) : base(rect) {
            AddChild(new Image(Rect.RelativeFull(new Rect(
                AbsoluteUnit.WithValue(0f),
                AbsoluteUnit.WithValue(0f),
                AbsoluteUnit.WithValue(256f + (2 * OUTER_SPACING)),
                AbsoluteUnit.WithValue(32f + (2 * OUTER_SPACING))
            ))).SetTexture(background).MakePatches(4).SetColor(Color.White));

            Content = new Container(new Rect(
                AbsoluteUnit.WithValue(OUTER_SPACING),
                AbsoluteUnit.WithValue(OUTER_SPACING),
                AbsoluteUnit.WithValue(256f),
                AbsoluteUnit.WithValue(32f)
            ));

            Container titleCard = new Container(new Rect(
                AbsoluteUnit.WithValue(0f),
                AbsoluteUnit.WithValue(0f),
                new RelativeUnit(1f, Content.GetRect(), RelativeUnit.Orientation.Horizontal),
                AbsoluteUnit.WithValue(32f)
            ));
            titleCard.AddChild(Item = new ItemDisplay(new Rect(
                AbsoluteUnit.WithValue(0f),
                AbsoluteUnit.WithValue(0f),
                AbsoluteUnit.WithValue(32f),
                AbsoluteUnit.WithValue(32f)
            )) {
                Text = new TextProperties().Standard().SetTextAlignment(TextAlignment.Bottom | TextAlignment.Right)
            });
            titleCard.AddChild(Title = new Label(new Rect(
                AbsoluteUnit.WithValue(72f),
                AbsoluteUnit.WithValue(0f),
                AbsoluteUnit.WithValue(150f),
                AbsoluteUnit.WithValue(32f)
            )).SetTextProperties(new Properties.TextProperties().Standard().SetTextAlignment(TextAlignment.Left)).SetPivotPoint(new Vector2(0f, 0f)));
            Content.AddChild(titleCard);

            AddChild(Content);

            SetEnabled(false);
        }

        public void SetItem(ItemType type) {
            Item.Item = type;
            Title.SetText(type.Name);
        }
    }
}