// Decompiled with JetBrains decompiler // Type: Terraria.GameContent.UI.States.UIAchievementsMenu // Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null // MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83 // Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using ReLogic.Content; using System.Collections.Generic; using Terraria.Achievements; using Terraria.Audio; using Terraria.GameContent.UI.Elements; using Terraria.GameInput; using Terraria.ID; using Terraria.Localization; using Terraria.UI; using Terraria.UI.Gamepad; namespace Terraria.GameContent.UI.States { public class UIAchievementsMenu : UIState { private UIList _achievementsList; private List _achievementElements = new List(); private List _categoryButtons = new List(); private UIElement _backpanel; private UIElement _outerContainer; public void InitializePage() { this.RemoveAllChildren(); this._categoryButtons.Clear(); this._achievementElements.Clear(); this._achievementsList = (UIList) null; bool largeForOtherLanguages = true; int num = largeForOtherLanguages.ToInt() * 100; UIElement element1 = new UIElement(); element1.Width.Set(0.0f, 0.8f); element1.MaxWidth.Set(800f + (float) num, 0.0f); element1.MinWidth.Set(600f + (float) num, 0.0f); element1.Top.Set(220f, 0.0f); element1.Height.Set(-220f, 1f); element1.HAlign = 0.5f; this._outerContainer = element1; this.Append(element1); UIPanel uiPanel = new UIPanel(); uiPanel.Width.Set(0.0f, 1f); uiPanel.Height.Set(-110f, 1f); uiPanel.BackgroundColor = new Color(33, 43, 79) * 0.8f; uiPanel.PaddingTop = 0.0f; element1.Append((UIElement) uiPanel); this._achievementsList = new UIList(); this._achievementsList.Width.Set(-25f, 1f); this._achievementsList.Height.Set(-50f, 1f); this._achievementsList.Top.Set(50f, 0.0f); this._achievementsList.ListPadding = 5f; uiPanel.Append((UIElement) this._achievementsList); UITextPanel uiTextPanel1 = new UITextPanel(Language.GetText("UI.Achievements"), large: true); uiTextPanel1.HAlign = 0.5f; uiTextPanel1.Top.Set(-33f, 0.0f); uiTextPanel1.SetPadding(13f); uiTextPanel1.BackgroundColor = new Color(73, 94, 171); element1.Append((UIElement) uiTextPanel1); UITextPanel uiTextPanel2 = new UITextPanel(Language.GetText("UI.Back"), 0.7f, true); uiTextPanel2.Width.Set(-10f, 0.5f); uiTextPanel2.Height.Set(50f, 0.0f); uiTextPanel2.VAlign = 1f; uiTextPanel2.HAlign = 0.5f; uiTextPanel2.Top.Set(-45f, 0.0f); uiTextPanel2.OnMouseOver += new UIElement.MouseEvent(this.FadedMouseOver); uiTextPanel2.OnMouseOut += new UIElement.MouseEvent(this.FadedMouseOut); uiTextPanel2.OnClick += new UIElement.MouseEvent(this.GoBackClick); element1.Append((UIElement) uiTextPanel2); this._backpanel = (UIElement) uiTextPanel2; List achievementsList = Main.Achievements.CreateAchievementsList(); for (int index = 0; index < achievementsList.Count; ++index) { UIAchievementListItem achievementListItem = new UIAchievementListItem(achievementsList[index], largeForOtherLanguages); this._achievementsList.Add((UIElement) achievementListItem); this._achievementElements.Add(achievementListItem); } UIScrollbar scrollbar = new UIScrollbar(); scrollbar.SetView(100f, 1000f); scrollbar.Height.Set(-50f, 1f); scrollbar.Top.Set(50f, 0.0f); scrollbar.HAlign = 1f; uiPanel.Append((UIElement) scrollbar); this._achievementsList.SetScrollbar(scrollbar); UIElement element2 = new UIElement(); element2.Width.Set(0.0f, 1f); element2.Height.Set(32f, 0.0f); element2.Top.Set(10f, 0.0f); Asset texture = Main.Assets.Request("Images/UI/Achievement_Categories", (AssetRequestMode) 1); for (int index = 0; index < 4; ++index) { UIToggleImage uiToggleImage = new UIToggleImage(texture, 32, 32, new Point(34 * index, 0), new Point(34 * index, 34)); uiToggleImage.Left.Set((float) (index * 36 + 8), 0.0f); uiToggleImage.SetState(true); uiToggleImage.OnClick += new UIElement.MouseEvent(this.FilterList); this._categoryButtons.Add(uiToggleImage); element2.Append((UIElement) uiToggleImage); } uiPanel.Append(element2); } public override void Draw(SpriteBatch spriteBatch) { base.Draw(spriteBatch); for (int index = 0; index < this._categoryButtons.Count; ++index) { if (this._categoryButtons[index].IsMouseHovering) { string textValue; switch (index) { case -1: textValue = Language.GetTextValue("Achievements.NoCategory"); break; case 0: textValue = Language.GetTextValue("Achievements.SlayerCategory"); break; case 1: textValue = Language.GetTextValue("Achievements.CollectorCategory"); break; case 2: textValue = Language.GetTextValue("Achievements.ExplorerCategory"); break; case 3: textValue = Language.GetTextValue("Achievements.ChallengerCategory"); break; default: textValue = Language.GetTextValue("Achievements.NoCategory"); break; } float x = FontAssets.MouseText.Value.MeasureString(textValue).X; Vector2 vector2 = new Vector2((float) Main.mouseX, (float) Main.mouseY) + new Vector2(16f); if ((double) vector2.Y > (double) (Main.screenHeight - 30)) vector2.Y = (float) (Main.screenHeight - 30); if ((double) vector2.X > (double) Main.screenWidth - (double) x) vector2.X = (float) (Main.screenWidth - 460); Utils.DrawBorderStringFourWay(spriteBatch, FontAssets.MouseText.Value, textValue, vector2.X, vector2.Y, new Color((int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor, (int) Main.mouseTextColor), Color.Black, Vector2.Zero); break; } } this.SetupGamepadPoints(spriteBatch); } public void GotoAchievement(Achievement achievement) => this._achievementsList.Goto((UIList.ElementSearchMethod) (element => element is UIAchievementListItem achievementListItem && achievementListItem.GetAchievement() == achievement)); private void GoBackClick(UIMouseEvent evt, UIElement listeningElement) { Main.menuMode = 0; IngameFancyUI.Close(); } private void FadedMouseOver(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(12); ((UIPanel) evt.Target).BackgroundColor = new Color(73, 94, 171); ((UIPanel) evt.Target).BorderColor = Colors.FancyUIFatButtonMouseOver; } private void FadedMouseOut(UIMouseEvent evt, UIElement listeningElement) { ((UIPanel) evt.Target).BackgroundColor = new Color(63, 82, 151) * 0.8f; ((UIPanel) evt.Target).BorderColor = Color.Black; } private void FilterList(UIMouseEvent evt, UIElement listeningElement) { SoundEngine.PlaySound(12); this._achievementsList.Clear(); foreach (UIAchievementListItem achievementElement in this._achievementElements) { if (this._categoryButtons[(int) achievementElement.GetAchievement().Category].IsOn) this._achievementsList.Add((UIElement) achievementElement); } this.Recalculate(); } public override void OnActivate() { this.InitializePage(); if (Main.gameMenu) { this._outerContainer.Top.Set(220f, 0.0f); this._outerContainer.Height.Set(-220f, 1f); } else { this._outerContainer.Top.Set(120f, 0.0f); this._outerContainer.Height.Set(-120f, 1f); } this._achievementsList.UpdateOrder(); if (!PlayerInput.UsingGamepadUI) return; UILinkPointNavigator.ChangePoint(3002); } private void SetupGamepadPoints(SpriteBatch spriteBatch) { UILinkPointNavigator.Shortcuts.BackButtonCommand = 3; int ID = 3000; UILinkPointNavigator.SetPosition(ID, this._backpanel.GetInnerDimensions().ToRectangle().Center.ToVector2()); UILinkPointNavigator.SetPosition(ID + 1, this._outerContainer.GetInnerDimensions().ToRectangle().Center.ToVector2()); int key = ID; UILinkPoint point1 = UILinkPointNavigator.Points[key]; point1.Unlink(); point1.Up = key + 1; int num = key + 1; UILinkPoint point2 = UILinkPointNavigator.Points[num]; point2.Unlink(); point2.Up = num + 1; point2.Down = num - 1; for (int index = 0; index < this._categoryButtons.Count; ++index) { ++num; UILinkPointNavigator.Shortcuts.FANCYUI_HIGHEST_INDEX = num; UILinkPointNavigator.SetPosition(num, this._categoryButtons[index].GetInnerDimensions().ToRectangle().Center.ToVector2()); UILinkPoint point3 = UILinkPointNavigator.Points[num]; point3.Unlink(); point3.Left = index == 0 ? -3 : num - 1; point3.Right = index == this._categoryButtons.Count - 1 ? -4 : num + 1; point3.Down = ID; } } } }