Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
AchievementAdvisor.cs
Go to the documentation of this file.
2using System.Linq;
7
8namespace Terraria.UI;
9
11{
13
15
17
19
21
23
25 {
26 get
27 {
29 {
31 }
32 return false;
33 }
34 }
35
36 public void LoadContent()
37 {
38 _achievementsTexture = Main.Assets.Request<Texture2D>("Images/UI/Achievements", (AssetRequestMode)1);
39 _achievementsBorderTexture = Main.Assets.Request<Texture2D>("Images/UI/Achievement_Borders", (AssetRequestMode)1);
40 _achievementsBorderMouseHoverFatTexture = Main.Assets.Request<Texture2D>("Images/UI/Achievement_Borders_MouseHover", (AssetRequestMode)1);
41 _achievementsBorderMouseHoverThinTexture = Main.Assets.Request<Texture2D>("Images/UI/Achievement_Borders_MouseHoverThin", (AssetRequestMode)1);
42 }
43
44 public void Draw(SpriteBatch spriteBatch)
45 {
46 }
47
48 public void DrawOneAchievement(SpriteBatch spriteBatch, Vector2 position, bool large)
49 {
51 if (bestCards.Count < 1)
52 {
53 return;
54 }
56 float num = 0.35f;
57 if (large)
58 {
59 num = 0.75f;
60 }
61 _hoveredCard = null;
62 DrawCard(bestCards[0], spriteBatch, position + new Vector2(8f) * num, num, out var hovered);
63 if (!hovered)
64 {
65 return;
66 }
69 {
70 Main.player[Main.myPlayer].mouseInterface = true;
72 {
73 Main.ingameOptionsWindow = false;
75 }
76 }
77 }
78
79 public void Update()
80 {
81 _hoveredCard = null;
82 }
83
85 {
87 _hoveredCard = null;
88 int num = bestCards.Count;
89 if (num > 5)
90 {
91 num = 5;
92 }
93 bool hovered;
94 for (int i = 0; i < num; i++)
95 {
96 DrawCard(bestCards[i], spriteBatch, leftPosition + new Vector2(42 * i, 0f), 0.5f, out hovered);
97 if (hovered)
98 {
100 }
101 }
102 for (int j = 5; j < bestCards.Count; j++)
103 {
104 DrawCard(bestCards[j], spriteBatch, rightPosition + new Vector2(42 * j, 0f), 0.5f, out hovered);
105 if (hovered)
106 {
108 }
109 }
110 if (_hoveredCard == null)
111 {
112 return;
113 }
114 if (_hoveredCard.achievement.IsCompleted)
115 {
116 _hoveredCard = null;
117 }
119 {
120 Main.player[Main.myPlayer].mouseInterface = true;
122 {
123 Main.ingameOptionsWindow = false;
125 }
126 }
127 }
128
129 public void DrawMouseHover()
130 {
131 if (_hoveredCard != null)
132 {
133 Main.spriteBatch.End();
134 Main.spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, Main.UIScaleMatrix);
136 Item item = new Item();
137 item.SetDefaults(0, noMatCheck: true);
138 item.SetNameOverride(_hoveredCard.achievement.FriendlyName.Value);
139 item.ToolTip = ItemTooltip.FromLanguageKey(_hoveredCard.achievement.Description.Key);
140 item.type = 1;
141 item.scale = 0f;
142 item.rare = 10;
143 item.value = -1;
144 Main.HoverItem = item;
145 Main.instance.MouseText("", 0, 0);
146 Main.mouseText = true;
147 }
148 }
149
150 private void DrawCard(AchievementAdvisorCard card, SpriteBatch spriteBatch, Vector2 position, float scale, out bool hovered)
151 {
152 hovered = false;
153 if (Main.MouseScreen.Between(position, position + card.frame.Size() * scale))
154 {
155 Main.LocalPlayer.mouseInterface = true;
156 hovered = true;
157 }
158 Color color = Color.White;
159 if (!hovered)
160 {
161 color = new Color(220, 220, 220, 220);
162 }
163 Vector2 vector = new Vector2(-4f) * scale;
164 Vector2 vector2 = new Vector2(-8f) * scale;
166 if (scale > 0.5f)
167 {
169 vector2 = new Vector2(-5f) * scale;
170 }
171 Rectangle frame = card.frame;
172 frame.X += 528;
173 spriteBatch.Draw(_achievementsTexture.Value, position, frame, color, 0f, Vector2.Zero, scale, SpriteEffects.None, 0f);
174 spriteBatch.Draw(_achievementsBorderTexture.Value, position + vector, null, color, 0f, Vector2.Zero, scale, SpriteEffects.None, 0f);
175 if (hovered)
176 {
177 spriteBatch.Draw(value, position + vector2, null, Main.OurFavoriteColor, 0f, Vector2.Zero, scale, SpriteEffects.None, 0f);
178 }
179 }
180
182 {
184 for (int i = 0; i < _cards.Count; i++)
185 {
187 if (!achievementAdvisorCard.achievement.IsCompleted && achievementAdvisorCard.IsAchievableInWorld())
188 {
189 list.Add(achievementAdvisorCard);
190 if (list.Count >= cardsAmount)
191 {
192 break;
193 }
194 }
195 }
196 return list;
197 }
198
199 public void Initialize()
200 {
201 float num = 1f;
202 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("TIMBER"), num++));
203 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("BENCHED"), num++));
204 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("OBTAIN_HAMMER"), num++));
205 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("NO_HOBO"), num++));
206 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("YOU_CAN_DO_IT"), num++));
207 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("OOO_SHINY"), num++));
208 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("HEAVY_METAL"), num++));
209 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("MATCHING_ATTIRE"), num++));
210 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("HEART_BREAKER"), num++));
211 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("I_AM_LOOT"), num++));
212 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("HOLD_ON_TIGHT"), num++));
213 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("STAR_POWER"), num++));
214 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("EYE_ON_YOU"), num++));
215 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("SMASHING_POPPET"), num++));
216 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("WHERES_MY_HONEY"), num++));
217 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("STING_OPERATION"), num++));
218 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("BONED"), num++));
219 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("DUNGEON_HEIST"), num++));
220 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("ITS_GETTING_HOT_IN_HERE"), num++));
221 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("MINER_FOR_FIRE"), num++));
222 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("STILL_HUNGRY"), num++));
223 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("ITS_HARD"), num++));
224 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("BEGONE_EVIL"), num++));
225 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("EXTRA_SHINY"), num++));
226 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("HEAD_IN_THE_CLOUDS"), num++));
227 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("BUCKETS_OF_BOLTS"), num++));
228 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("DRAX_ATTAX"), num++));
229 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("PHOTOSYNTHESIS"), num++));
230 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("GET_A_LIFE"), num++));
231 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("THE_GREAT_SOUTHERN_PLANTKILL"), num++));
232 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("TEMPLE_RAIDER"), num++));
233 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("LIHZAHRDIAN_IDOL"), num++));
234 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("ROBBING_THE_GRAVE"), num++));
235 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("OBSESSIVE_DEVOTION"), num++));
236 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("STAR_DESTROYER"), num++));
237 _cards.Add(new AchievementAdvisorCard(Main.Achievements.GetAchievement("CHAMPION_OF_TERRARIA"), num++));
238 _cards.OrderBy((AchievementAdvisorCard x) => x.order);
239 }
240}
void Draw(Texture2D texture, Vector2 position, Color color)
void Add(TKey key, TValue value)
static AchievementManager Achievements
Definition Main.cs:2756
static SpriteBatch spriteBatch
Definition Main.cs:974
static int myPlayer
Definition Main.cs:1801
static bool mouseLeftRelease
Definition Main.cs:1755
static Main instance
Definition Main.cs:283
static Vector2 MouseScreen
Definition Main.cs:2773
static Matrix UIScaleMatrix
Definition Main.cs:2619
static Microsoft.Xna.Framework.Color OurFavoriteColor
Definition Main.cs:902
static int screenWidth
Definition Main.cs:1719
static IAssetRepository Assets
Definition Main.cs:209
static Player[] player
Definition Main.cs:1803
static bool mouseLeft
Definition Main.cs:614
void DrawOneAchievement(SpriteBatch spriteBatch, Vector2 position, bool large)
Asset< Texture2D > _achievementsBorderTexture
void Draw(SpriteBatch spriteBatch)
Asset< Texture2D > _achievementsBorderMouseHoverThinTexture
void DrawCard(AchievementAdvisorCard card, SpriteBatch spriteBatch, Vector2 position, float scale, out bool hovered)
void DrawOptionsPanel(SpriteBatch spriteBatch, Vector2 leftPosition, Vector2 rightPosition)
List< AchievementAdvisorCard > _cards
Asset< Texture2D > _achievementsTexture
Asset< Texture2D > _achievementsBorderMouseHoverFatTexture
List< AchievementAdvisorCard > GetBestCards(int cardsAmount=10)
AchievementAdvisorCard _hoveredCard
static void OpenAchievementsAndGoto(Achievement achievement)
static ItemTooltip FromLanguageKey(string key)