A game about forced loneliness, made by TACStudios
1using System;
2using UnityEngine;
3using UnityEngine.UIElements;
4
5namespace UnityEditor.Tilemaps
6{
7 [UxmlElement]
8 public partial class TilePaletteClipboardFirstUserElement : VisualElement
9 {
10 private static readonly string ussClassName = "unity-tilepalette-clipboard-firstuser-element";
11 private static readonly string k_Name = L10n.Tr("Tile Palette Clipboard First User Element");
12
13 static class Styles
14 {
15 public static readonly string emptyProjectTopInfo = L10n.Tr("Drag Tile, Sprite, Texture (Sprite type) asset/s here to");
16 public static readonly string emptyProjectLeftInfo = L10n.Tr("create a new ");
17 public static readonly string emptyProjectRightInfo = L10n.Tr(" Tile Palette");
18
19 public static readonly string whiteboxDropdownInfo = L10n.Tr("Create a new Whitebox Tile Palette");
20 public static readonly string whiteboxAlternateInfo = L10n.Tr("Alternatively, get started quickly with a Whitebox Tile Palette");
21 public static readonly string whiteboxButtonInfo = L10n.Tr("Create");
22 }
23
24 private GridPaletteUtility.GridPaletteType m_FirstUserPaletteType = GridPaletteUtility.GridPaletteType.Rectangle;
25 internal GridPaletteUtility.GridPaletteType firstUserPaletteType
26 {
27 get => m_FirstUserPaletteType;
28 set
29 {
30 m_FirstUserPaletteType = value;
31 m_PaletteTypeField.SetValueWithoutNotify(m_FirstUserPaletteType);
32 }
33 }
34
35 private EnumField m_PaletteTypeField;
36
37 internal event Action<GridPaletteUtility.GridPaletteType> onFirstUserPaletteTypeChanged;
38
39 public TilePaletteClipboardFirstUserElement()
40 {
41 AddToClassList(ussClassName);
42
43 name = k_Name;
44 TilePaletteOverlayUtility.SetStyleSheet(this);
45
46 var ve = new VisualElement();
47 ve.style.flexDirection = FlexDirection.Column;
48 ve.style.alignItems = Align.Center;
49
50 var he1 = new Label();
51 he1.style.flexDirection = FlexDirection.Row;
52 he1.text = Styles.emptyProjectTopInfo;
53
54 var he2 = new VisualElement();
55 he2.style.flexDirection = FlexDirection.Row;
56
57 var left = new Label();
58 left.text = Styles.emptyProjectLeftInfo;
59
60 m_PaletteTypeField = new EnumField(m_FirstUserPaletteType);
61 m_PaletteTypeField.RegisterValueChangedCallback(OnFirstUserPaletteTypeChanged);
62
63 var right = new Label();
64 right.text = Styles.emptyProjectRightInfo;
65
66 he2.Add(left);
67 he2.Add(m_PaletteTypeField);
68 he2.Add(right);
69
70 ve.Add(he1);
71 ve.Add(he2);
72 Add(ve);
73 }
74
75 private void OnFirstUserPaletteTypeChanged(ChangeEvent<Enum> evt)
76 {
77 m_FirstUserPaletteType = (GridPaletteUtility.GridPaletteType)evt.newValue;
78 onFirstUserPaletteTypeChanged?.Invoke(m_FirstUserPaletteType);
79 }
80 }
81}