Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros
UIWorkshopHub.cs
Go to the documentation of this file.
1using System;
7using Terraria.ID;
9using Terraria.UI;
11
13
15{
17
19
21
23
25
27
29
31
33
34 public static event Action OnWorkshopHubMenuOpened;
35
36 public UIWorkshopHub(UIState stateToGoBackTo)
37 {
38 _previousUIState = stateToGoBackTo;
39 }
40
41 public void EnterHub()
42 {
44 }
45
46 public override void OnInitialize()
47 {
48 base.OnInitialize();
49 int num = 20;
50 int num2 = 250;
51 int num3 = 50 + num * 2;
52 int num4 = 600;
53 int num5 = num4 - num2 - num3;
54 UIElement uIElement = new UIElement();
55 uIElement.Width.Set(600f, 0f);
56 uIElement.Top.Set(num2, 0f);
57 uIElement.Height.Set(num4 - num2, 0f);
58 uIElement.HAlign = 0.5f;
59 int num6 = 154;
60 UIPanel uIPanel = new UIPanel();
61 uIPanel.Width.Set(0f, 1f);
62 uIPanel.Height.Set(num5, 0f);
63 uIPanel.BackgroundColor = new Color(33, 43, 79) * 0.8f;
64 UIElement uIElement2 = new UIElement();
65 uIElement2.Width.Set(0f, 1f);
66 uIElement2.Height.Set(num6, 0f);
67 uIElement2.SetPadding(0f);
68 UITextPanel<LocalizedText> uITextPanel = new UITextPanel<LocalizedText>(Language.GetText("UI.WorkshopHub"), 0.8f, large: true);
69 uITextPanel.HAlign = 0.5f;
70 uITextPanel.Top.Set(-46f, 0f);
71 uITextPanel.SetPadding(15f);
72 uITextPanel.BackgroundColor = new Color(73, 94, 171);
73 UITextPanel<LocalizedText> uITextPanel2 = new UITextPanel<LocalizedText>(Language.GetText("UI.Back"), 0.7f, large: true);
74 uITextPanel2.Width.Set(-10f, 0.5f);
75 uITextPanel2.Height.Set(50f, 0f);
76 uITextPanel2.VAlign = 1f;
77 uITextPanel2.HAlign = 0f;
78 uITextPanel2.Top.Set(-num, 0f);
79 uITextPanel2.OnMouseOver += FadedMouseOver;
80 uITextPanel2.OnMouseOut += FadedMouseOut;
81 uITextPanel2.OnLeftClick += GoBackClick;
82 uITextPanel2.SetSnapPoint("Back", 0);
83 uIElement.Append(uITextPanel2);
84 _buttonBack = uITextPanel2;
85 UITextPanel<LocalizedText> uITextPanel3 = new UITextPanel<LocalizedText>(Language.GetText("Workshop.ReportLogsButton"), 0.7f, large: true);
86 uITextPanel3.Width.Set(-10f, 0.5f);
87 uITextPanel3.Height.Set(50f, 0f);
88 uITextPanel3.VAlign = 1f;
89 uITextPanel3.HAlign = 1f;
90 uITextPanel3.Top.Set(-num, 0f);
91 uITextPanel3.OnMouseOver += FadedMouseOver;
92 uITextPanel3.OnMouseOut += FadedMouseOut;
93 uITextPanel3.OnLeftClick += GoLogsClick;
94 uITextPanel3.SetSnapPoint("Logs", 0);
95 uIElement.Append(uITextPanel3);
96 _buttonLogs = uITextPanel3;
98 uIElement3.HAlign = 0f;
99 uIElement3.VAlign = 0f;
100 uIElement2.Append(uIElement3);
102 uIElement3.HAlign = 1f;
103 uIElement3.VAlign = 0f;
104 uIElement2.Append(uIElement3);
106 uIElement3.HAlign = 0f;
107 uIElement3.VAlign = 1f;
108 uIElement2.Append(uIElement3);
110 uIElement3.HAlign = 1f;
111 uIElement3.VAlign = 1f;
112 uIElement2.Append(uIElement3);
113 AddHorizontalSeparator(uIPanel, num6 + 6 + 6);
114 AddDescriptionPanel(uIPanel, num6 + 8 + 6 + 6, num5 - num6 - 12 - 12 - 8, "desc");
115 uIPanel.Append(uIElement2);
116 uIElement.Append(uIPanel);
117 uIElement.Append(uITextPanel);
118 Append(uIElement);
119 }
120
122 {
123 UIElement uIElement = MakeFancyButton("Images/UI/Workshop/HubResourcepacks", "Workshop.HubResourcePacks");
124 uIElement.OnLeftClick += Click_OpenResourcePacksMenu;
125 _buttonUseResourcePacks = uIElement;
126 return uIElement;
127 }
128
129 private void Click_OpenResourcePacksMenu(UIMouseEvent evt, UIElement listeningElement)
130 {
133 }
134
136 {
137 UIElement uIElement = MakeFancyButton("Images/UI/Workshop/HubWorlds", "Workshop.HubWorlds");
138 uIElement.OnLeftClick += Click_OpenWorldImportMenu;
139 _buttonImportWorlds = uIElement;
140 return uIElement;
141 }
142
143 private void Click_OpenWorldImportMenu(UIMouseEvent evt, UIElement listeningElement)
144 {
146 Main.MenuUI.SetState(new UIWorkshopWorldImport(this));
147 }
148
150 {
151 UIElement uIElement = MakeFancyButton("Images/UI/Workshop/HubPublishResourcepacks", "Workshop.HubPublishResourcePacks");
152 uIElement.OnLeftClick += Click_OpenResourcePackPublishMenu;
153 _buttonPublishResourcePacks = uIElement;
154 return uIElement;
155 }
156
157 private void Click_OpenResourcePackPublishMenu(UIMouseEvent evt, UIElement listeningElement)
158 {
161 }
162
164 {
165 UIElement uIElement = MakeFancyButton("Images/UI/Workshop/HubPublishWorlds", "Workshop.HubPublishWorlds");
166 uIElement.OnLeftClick += Click_OpenWorldPublishMenu;
167 _buttonPublishWorlds = uIElement;
168 return uIElement;
169 }
170
171 private void Click_OpenWorldPublishMenu(UIMouseEvent evt, UIElement listeningElement)
172 {
174 Main.MenuUI.SetState(new UIWorkshopSelectWorldToPublish(this));
175 }
176
177 private static void AddHorizontalSeparator(UIElement Container, float accumualtedHeight)
178 {
180 {
182 Top = StyleDimension.FromPixels(accumualtedHeight - 8f),
183 Color = Color.Lerp(Color.White, new Color(63, 65, 151, 255), 0.85f) * 0.9f
184 };
185 Container.Append(element);
186 }
187
188 public void ShowOptionDescription(UIMouseEvent evt, UIElement listeningElement)
189 {
190 LocalizedText localizedText = null;
191 if (listeningElement == _buttonUseResourcePacks)
192 {
193 localizedText = Language.GetText("Workshop.HubDescriptionUseResourcePacks");
194 }
195 if (listeningElement == _buttonPublishResourcePacks)
196 {
197 localizedText = Language.GetText("Workshop.HubDescriptionPublishResourcePacks");
198 }
199 if (listeningElement == _buttonImportWorlds)
200 {
201 localizedText = Language.GetText("Workshop.HubDescriptionImportWorlds");
202 }
203 if (listeningElement == _buttonPublishWorlds)
204 {
205 localizedText = Language.GetText("Workshop.HubDescriptionPublishWorlds");
206 }
207 if (localizedText != null)
208 {
209 _descriptionText.SetText(localizedText);
210 }
211 }
212
213 public void ClearOptionDescription(UIMouseEvent evt, UIElement listeningElement)
214 {
215 _descriptionText.SetText(Language.GetText("Workshop.HubDescriptionDefault"));
216 }
217
218 private void AddDescriptionPanel(UIElement container, float accumulatedHeight, float height, string tagGroup)
219 {
220 float num = 0f;
221 UISlicedImage uISlicedImage = new UISlicedImage(Main.Assets.Request<Texture2D>("Images/UI/CharCreation/CategoryPanelHighlight", (AssetRequestMode)1))
222 {
223 HAlign = 0.5f,
224 VAlign = 1f,
225 Width = StyleDimension.FromPixelsAndPercent((0f - num) * 2f, 1f),
226 Left = StyleDimension.FromPixels(0f - num),
229 };
230 uISlicedImage.SetSliceDepths(10);
231 uISlicedImage.Color = Color.LightGray * 0.7f;
232 container.Append(uISlicedImage);
233 UIText uIText = new UIText(Language.GetText("Workshop.HubDescriptionDefault"))
234 {
235 HAlign = 0f,
236 VAlign = 0f,
240 };
241 uIText.PaddingLeft = 20f;
242 uIText.PaddingRight = 20f;
243 uIText.PaddingTop = 6f;
244 uIText.IsWrapped = true;
245 uISlicedImage.Append(uIText);
246 _descriptionText = uIText;
247 }
248
249 private UIElement MakeFancyButton(string iconImagePath, string textKey)
250 {
251 UIPanel uIPanel = new UIPanel();
252 int num = -3;
253 int num2 = -3;
254 uIPanel.Width = StyleDimension.FromPixelsAndPercent(num, 0.5f);
255 uIPanel.Height = StyleDimension.FromPixelsAndPercent(num2, 0.5f);
256 uIPanel.OnMouseOver += SetColorsToHovered;
257 uIPanel.OnMouseOut += SetColorsToNotHovered;
258 uIPanel.BackgroundColor = new Color(63, 82, 151) * 0.7f;
259 uIPanel.BorderColor = new Color(89, 116, 213) * 0.7f;
260 uIPanel.SetPadding(6f);
261 UIImage uIImage = new UIImage(Main.Assets.Request<Texture2D>(iconImagePath, (AssetRequestMode)1))
262 {
264 VAlign = 0.5f
265 };
266 uIImage.Left.Set(2f, 0f);
267 uIPanel.Append(uIImage);
268 uIPanel.OnMouseOver += ShowOptionDescription;
269 uIPanel.OnMouseOut += ClearOptionDescription;
270 UIText uIText = new UIText(Language.GetText(textKey), 0.45f, large: true)
271 {
272 HAlign = 0f,
273 VAlign = 0.5f,
279 TextOriginX = 0f,
280 TextOriginY = 0f
281 };
282 uIText.PaddingLeft = 0f;
283 uIText.PaddingRight = 20f;
284 uIText.PaddingTop = 10f;
285 uIText.IsWrapped = true;
286 uIPanel.Append(uIText);
287 uIPanel.SetSnapPoint("Button", 0);
288 return uIPanel;
289 }
290
291 private void GoBackClick(UIMouseEvent evt, UIElement listeningElement)
292 {
295 }
296
297 private void GoLogsClick(UIMouseEvent evt, UIElement listeningElement)
298 {
302 }
303
304 private void FadedMouseOver(UIMouseEvent evt, UIElement listeningElement)
305 {
307 ((UIPanel)evt.Target).BackgroundColor = new Color(73, 94, 171);
308 ((UIPanel)evt.Target).BorderColor = Colors.FancyUIFatButtonMouseOver;
309 }
310
311 private void FadedMouseOut(UIMouseEvent evt, UIElement listeningElement)
312 {
313 ((UIPanel)evt.Target).BackgroundColor = new Color(63, 82, 151) * 0.8f;
314 ((UIPanel)evt.Target).BorderColor = Color.Black;
315 }
316
317 private void SetColorsToHovered(UIMouseEvent evt, UIElement listeningElement)
318 {
319 UIPanel obj = (UIPanel)evt.Target;
320 obj.BackgroundColor = new Color(73, 94, 171);
321 obj.BorderColor = new Color(89, 116, 213);
322 }
323
324 private void SetColorsToNotHovered(UIMouseEvent evt, UIElement listeningElement)
325 {
326 UIPanel obj = (UIPanel)evt.Target;
327 obj.BackgroundColor = new Color(63, 82, 151) * 0.7f;
328 obj.BorderColor = new Color(89, 116, 213) * 0.7f;
329 }
330
332 {
333 if (_previousUIState == null)
334 {
335 Main.menuMode = 0;
336 return;
337 }
338 Main.menuMode = 888;
339 Main.MenuUI.SetState(_previousUIState);
341 }
342
343 public override void Draw(SpriteBatch spriteBatch)
344 {
345 base.Draw(spriteBatch);
346 SetupGamepadPoints(spriteBatch);
347 }
348
349 private void SetupGamepadPoints(SpriteBatch spriteBatch)
350 {
351 UILinkPointNavigator.Shortcuts.BackButtonCommand = 7;
352 int num = 3000;
353 int idRangeEndExclusive = num;
354 UILinkPoint linkPoint = _helper.GetLinkPoint(idRangeEndExclusive++, _buttonUseResourcePacks);
355 UILinkPoint linkPoint2 = _helper.GetLinkPoint(idRangeEndExclusive++, _buttonPublishResourcePacks);
356 UILinkPoint linkPoint3 = _helper.GetLinkPoint(idRangeEndExclusive++, _buttonImportWorlds);
357 UILinkPoint linkPoint4 = _helper.GetLinkPoint(idRangeEndExclusive++, _buttonPublishWorlds);
358 UILinkPoint linkPoint5 = _helper.GetLinkPoint(idRangeEndExclusive++, _buttonBack);
359 UILinkPoint linkPoint6 = _helper.GetLinkPoint(idRangeEndExclusive++, _buttonLogs);
360 _helper.PairLeftRight(linkPoint3, linkPoint);
361 _helper.PairLeftRight(linkPoint4, linkPoint2);
362 _helper.PairLeftRight(linkPoint5, linkPoint6);
363 _helper.PairUpDown(linkPoint3, linkPoint4);
364 _helper.PairUpDown(linkPoint, linkPoint2);
365 _helper.PairUpDown(linkPoint4, linkPoint5);
366 _helper.PairUpDown(linkPoint2, linkPoint6);
367 _helper.MoveToVisuallyClosestPoint(num, idRangeEndExclusive);
368 }
369
371 {
372 UIWorkshopHub.OnWorkshopHubMenuOpened = delegate
373 {
374 };
375 }
376}
static void PlaySound(int type, Vector2 position, int style=1)
void SetSliceDepths(int top, int bottom, int left, int right)
void SetColorsToNotHovered(UIMouseEvent evt, UIElement listeningElement)
override void Draw(SpriteBatch spriteBatch)
void Click_OpenWorldPublishMenu(UIMouseEvent evt, UIElement listeningElement)
UIElement MakeFancyButton(string iconImagePath, string textKey)
void SetColorsToHovered(UIMouseEvent evt, UIElement listeningElement)
void ClearOptionDescription(UIMouseEvent evt, UIElement listeningElement)
void GoLogsClick(UIMouseEvent evt, UIElement listeningElement)
void Click_OpenWorldImportMenu(UIMouseEvent evt, UIElement listeningElement)
void FadedMouseOut(UIMouseEvent evt, UIElement listeningElement)
void ShowOptionDescription(UIMouseEvent evt, UIElement listeningElement)
void GoBackClick(UIMouseEvent evt, UIElement listeningElement)
void Click_OpenResourcePacksMenu(UIMouseEvent evt, UIElement listeningElement)
void Click_OpenResourcePackPublishMenu(UIMouseEvent evt, UIElement listeningElement)
void FadedMouseOver(UIMouseEvent evt, UIElement listeningElement)
static void AddHorizontalSeparator(UIElement Container, float accumualtedHeight)
void SetupGamepadPoints(SpriteBatch spriteBatch)
void AddDescriptionPanel(UIElement container, float accumulatedHeight, float height, string tagGroup)
static readonly Color FancyUIFatButtonMouseOver
Definition Colors.cs:91
static LocalizedText GetText(string key)
Definition Language.cs:10
static void OpenResourcePacksMenu(UIState uiStateToGoBackTo)
Definition Main.cs:49261
static UserInterface MenuUI
Definition Main.cs:381
static IssueReportsIndicator IssueReporterIndicator
Definition Main.cs:1882
static void OpenReportsMenu()
Definition Main.cs:49242
static IAssetRepository Assets
Definition Main.cs:209
StyleDimension Height
Definition UIElement.cs:29
void Append(UIElement element)
Definition UIElement.cs:166
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
void SetPadding(float pixels)
Definition UIElement.cs:361
StyleDimension Top
Definition UIElement.cs:23
readonly UIElement Target
Definition UIEvent.cs:5
static Color Lerp(Color value1, Color value2, float amount)
Definition Color.cs:491
void PairLeftRight(UILinkPoint leftSide, UILinkPoint rightSide)
void PairUpDown(UILinkPoint upSide, UILinkPoint downSide)
UILinkPoint GetLinkPoint(int id, UIElement element)
void MoveToVisuallyClosestPoint(List< UILinkPoint > lostrefpoints)
static StyleDimension FromPixels(float pixels)
void Set(float pixels, float precent)
static StyleDimension FromPercent(float percent)
static StyleDimension FromPixelsAndPercent(float pixels, float percent)