Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
UIWorkshopImportWorldListItem.cs
Go to the documentation of this file.
6using Terraria.IO;
9using Terraria.UI;
10
12
14{
16
18
20
22
24
26
27 private int _orderInList;
28
30
31 public UIWorkshopImportWorldListItem(UIState ownerState, WorldFileData data, int orderInList)
32 {
33 _ownerState = ownerState;
34 _orderInList = orderInList;
35 _data = data;
39 _worldIcon.Left.Set(4f, 0f);
40 _worldIcon.OnLeftDoubleClick += ImportButtonClick_ImportWorldToLocalFiles;
42 float num = 4f;
43 UIImageButton uIImageButton = new UIImageButton(Main.Assets.Request<Texture2D>("Images/UI/ButtonPlay", (AssetRequestMode)1));
44 uIImageButton.VAlign = 1f;
45 uIImageButton.Left.Set(num, 0f);
46 uIImageButton.OnLeftClick += ImportButtonClick_ImportWorldToLocalFiles;
47 base.OnLeftDoubleClick += ImportButtonClick_ImportWorldToLocalFiles;
48 uIImageButton.OnMouseOver += PlayMouseOver;
49 uIImageButton.OnMouseOut += ButtonMouseOut;
50 Append(uIImageButton);
51 num += 24f;
52 _buttonLabel = new UIText("");
53 _buttonLabel.VAlign = 1f;
54 _buttonLabel.Left.Set(num, 0f);
55 _buttonLabel.Top.Set(-3f, 0f);
57 uIImageButton.SetSnapPoint("Import", orderInList);
58 }
59
60 private void LoadTextures()
61 {
62 _dividerTexture = Main.Assets.Request<Texture2D>("Images/UI/Divider", (AssetRequestMode)1);
63 _innerPanelTexture = Main.Assets.Request<Texture2D>("Images/UI/InnerPanelBackground", (AssetRequestMode)1);
65 }
66
67 private void InitializeAppearance()
68 {
69 Height.Set(96f, 0f);
70 Width.Set(0f, 1f);
71 SetPadding(6f);
73 }
74
75 private void SetColorsToHovered()
76 {
77 BackgroundColor = new Color(73, 94, 171);
78 BorderColor = new Color(89, 116, 213);
79 }
80
81 private void SetColorsToNotHovered()
82 {
83 BackgroundColor = new Color(63, 82, 151) * 0.7f;
84 BorderColor = new Color(89, 116, 213) * 0.7f;
85 }
86
87 private void PlayMouseOver(UIMouseEvent evt, UIElement listeningElement)
88 {
90 }
91
92 private void ButtonMouseOut(UIMouseEvent evt, UIElement listeningElement)
93 {
95 }
96
98 {
99 if (listeningElement == evt.Target)
100 {
102 Main.clrInput();
103 UIVirtualKeyboard uIVirtualKeyboard = new UIVirtualKeyboard(Language.GetTextValue("Workshop.EnterNewNameForImportedWorld"), _data.Name, OnFinishedSettingName, GoToMainMenu, 0, allowEmpty: true);
104 uIVirtualKeyboard.SetMaxInputLength(27);
105 uIVirtualKeyboard.Text = _data.Name;
106 Main.MenuUI.SetState(uIVirtualKeyboard);
107 }
108 }
109
110 private void OnFinishedSettingName(string name)
111 {
112 string newDisplayName = name.Trim();
113 if (SocialAPI.Workshop != null)
114 {
115 SocialAPI.Workshop.ImportDownloadedWorldToLocalSaves(_data, null, newDisplayName);
116 }
117 }
118
119 private void GoToMainMenu()
120 {
122 Main.menuMode = 0;
123 }
124
125 public override int CompareTo(object obj)
126 {
127 if (obj is UIWorkshopImportWorldListItem uIWorkshopImportWorldListItem)
128 {
129 return _orderInList.CompareTo(uIWorkshopImportWorldListItem._orderInList);
130 }
131 return base.CompareTo(obj);
132 }
133
134 public override void MouseOver(UIMouseEvent evt)
135 {
136 base.MouseOver(evt);
138 }
139
140 public override void MouseOut(UIMouseEvent evt)
141 {
142 base.MouseOut(evt);
144 }
145
146 private void DrawPanel(SpriteBatch spriteBatch, Vector2 position, float width)
147 {
148 spriteBatch.Draw(_innerPanelTexture.Value, position, new Rectangle(0, 0, 8, _innerPanelTexture.Height()), Color.White);
149 spriteBatch.Draw(_innerPanelTexture.Value, new Vector2(position.X + 8f, position.Y), new Rectangle(8, 0, 8, _innerPanelTexture.Height()), Color.White, 0f, Vector2.Zero, new Vector2((width - 16f) / 8f, 1f), SpriteEffects.None, 0f);
150 spriteBatch.Draw(_innerPanelTexture.Value, new Vector2(position.X + width - 8f, position.Y), new Rectangle(16, 0, 8, _innerPanelTexture.Height()), Color.White);
151 }
152
153 protected override void DrawSelf(SpriteBatch spriteBatch)
154 {
155 base.DrawSelf(spriteBatch);
156 CalculatedStyle innerDimensions = GetInnerDimensions();
158 float num = dimensions.X + dimensions.Width;
159 Color color = (_data.IsValid ? Color.White : Color.Gray);
160 string worldName = _data.GetWorldName(allowCropping: true);
161 if (worldName != null)
162 {
163 Utils.DrawBorderString(spriteBatch, worldName, new Vector2(num + 6f, dimensions.Y - 2f), color);
164 }
166 spriteBatch.Draw(_dividerTexture.Value, new Vector2(num, innerDimensions.Y + 21f), null, Color.White, 0f, Vector2.Zero, new Vector2((GetDimensions().X + GetDimensions().Width - num) / 8f, 1f), SpriteEffects.None, 0f);
167 Vector2 vector = new Vector2(num + 6f, innerDimensions.Y + 29f);
168 float num2 = 100f;
169 DrawPanel(spriteBatch, vector, num2);
170 string expertText = "";
171 Color gameModeColor = Color.White;
172 GetDifficulty(out expertText, out gameModeColor);
173 float x = FontAssets.MouseText.Value.MeasureString(expertText).X;
174 float x2 = num2 * 0.5f - x * 0.5f;
175 Utils.DrawBorderString(spriteBatch, expertText, vector + new Vector2(x2, 3f), gameModeColor);
176 vector.X += num2 + 5f;
177 if (_data._worldSizeName != null)
178 {
179 float num3 = 150f;
180 if (!GameCulture.FromCultureName(GameCulture.CultureName.English).IsActive)
181 {
182 num3 += 40f;
183 }
184 DrawPanel(spriteBatch, vector, num3);
185 string textValue = Language.GetTextValue("UI.WorldSizeFormat", _data.WorldSizeName);
186 float x3 = FontAssets.MouseText.Value.MeasureString(textValue).X;
187 float x4 = num3 * 0.5f - x3 * 0.5f;
188 Utils.DrawBorderString(spriteBatch, textValue, vector + new Vector2(x4, 3f), Color.White);
189 vector.X += num3 + 5f;
190 }
191 float num4 = innerDimensions.X + innerDimensions.Width - vector.X;
192 DrawPanel(spriteBatch, vector, num4);
193 string arg = ((!GameCulture.FromCultureName(GameCulture.CultureName.English).IsActive) ? _data.CreationTime.ToShortDateString() : _data.CreationTime.ToString("d MMMM yyyy"));
194 string textValue2 = Language.GetTextValue("UI.WorldCreatedFormat", arg);
195 float x5 = FontAssets.MouseText.Value.MeasureString(textValue2).X;
196 float x6 = num4 * 0.5f - x5 * 0.5f;
197 Utils.DrawBorderString(spriteBatch, textValue2, vector + new Vector2(x6, 3f), Color.White);
198 vector.X += num4 + 5f;
199 }
200}
void Draw(Texture2D texture, Vector2 position, Color color)
static void PlaySound(int type, Vector2 position, int style=1)
static Asset< DynamicSpriteFont > MouseText
Definition FontAssets.cs:10
static Asset< Texture2D >[] Extra
void GetDifficulty(out string expertText, out Color gameModeColor)
void DrawPanel(SpriteBatch spriteBatch, Vector2 position, float width)
void PlayMouseOver(UIMouseEvent evt, UIElement listeningElement)
UIWorkshopImportWorldListItem(UIState ownerState, WorldFileData data, int orderInList)
void ImportButtonClick_ImportWorldToLocalFiles(UIMouseEvent evt, UIElement listeningElement)
void ButtonMouseOut(UIMouseEvent evt, UIElement listeningElement)
string GetWorldName(bool allowCropping=false)
static GameCulture FromCultureName(CultureName name)
static string GetTextValue(string key)
Definition Language.cs:15
static UserInterface MenuUI
Definition Main.cs:381
static void clrInput()
Definition Main.cs:18584
static IAssetRepository Assets
Definition Main.cs:209
static Terraria.Social.Base.WorkshopSocialModule Workshop
Definition SocialAPI.cs:24
StyleDimension Height
Definition UIElement.cs:29
void Append(UIElement element)
Definition UIElement.cs:166
CalculatedStyle GetInnerDimensions()
Definition UIElement.cs:377
StyleDimension Left
Definition UIElement.cs:25
void SetSnapPoint(string name, int id, Vector2? anchor=null, Vector2? offset=null)
Definition UIElement.cs:122
StyleDimension Width
Definition UIElement.cs:27
CalculatedStyle GetDimensions()
Definition UIElement.cs:382
void SetPadding(float pixels)
Definition UIElement.cs:361
StyleDimension Top
Definition UIElement.cs:23
readonly UIElement Target
Definition UIEvent.cs:5
static Vector2 DrawBorderString(SpriteBatch sb, string text, Vector2 pos, Color color, float scale=1f, float anchorx=0f, float anchory=0f, int maxCharactersDisplayed=-1)
Definition Utils.cs:1891
void Set(float pixels, float precent)