Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
AchievementAdvisor.cs
Go to the documentation of this file.
1
using
System.Collections.Generic
;
2
using
System.Linq
;
3
using
Microsoft.Xna.Framework
;
4
using
Microsoft.Xna.Framework.Graphics
;
5
using
ReLogic.Content
;
6
using
Terraria.GameInput
;
7
8
namespace
Terraria.UI
;
9
10
public
class
AchievementAdvisor
11
{
12
private
List<AchievementAdvisorCard>
_cards
=
new
List<AchievementAdvisorCard>
();
13
14
private
Asset<Texture2D>
_achievementsTexture
;
15
16
private
Asset<Texture2D>
_achievementsBorderTexture
;
17
18
private
Asset<Texture2D>
_achievementsBorderMouseHoverFatTexture
;
19
20
private
Asset<Texture2D>
_achievementsBorderMouseHoverThinTexture
;
21
22
private
AchievementAdvisorCard
_hoveredCard
;
23
24
public
bool
CanDrawAboveCoins
25
{
26
get
27
{
28
if
(
Main
.
screenWidth
>= 1000 && !
PlayerInput
.
UsingGamepad
)
29
{
30
return
!
PlayerInput
.
SteamDeckIsUsed
;
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
{
50
List<AchievementAdvisorCard>
bestCards
=
GetBestCards
(1);
51
if
(
bestCards
.
Count
< 1)
52
{
53
return
;
54
}
55
AchievementAdvisorCard
hoveredCard
=
bestCards
[0];
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
}
67
_hoveredCard
=
hoveredCard
;
68
if
(!
PlayerInput
.
IgnoreMouseInterface
)
69
{
70
Main
.
player
[
Main
.
myPlayer
].mouseInterface =
true
;
71
if
(
Main
.
mouseLeft
&&
Main
.
mouseLeftRelease
)
72
{
73
Main.ingameOptionsWindow =
false
;
74
IngameFancyUI
.
OpenAchievementsAndGoto
(
_hoveredCard
.
achievement
);
75
}
76
}
77
}
78
79
public
void
Update
()
80
{
81
_hoveredCard
=
null
;
82
}
83
84
public
void
DrawOptionsPanel
(
SpriteBatch
spriteBatch,
Vector2
leftPosition
,
Vector2
rightPosition
)
85
{
86
List<AchievementAdvisorCard>
bestCards
=
GetBestCards
();
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
{
99
_hoveredCard
=
bestCards
[i];
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
{
107
_hoveredCard
=
bestCards
[
j
];
108
}
109
}
110
if
(
_hoveredCard
==
null
)
111
{
112
return
;
113
}
114
if
(
_hoveredCard
.
achievement
.IsCompleted)
115
{
116
_hoveredCard
=
null
;
117
}
118
else
if
(!
PlayerInput
.
IgnoreMouseInterface
)
119
{
120
Main
.
player
[
Main
.
myPlayer
].mouseInterface =
true
;
121
if
(
Main
.
mouseLeft
&&
Main
.
mouseLeftRelease
)
122
{
123
Main.ingameOptionsWindow =
false
;
124
IngameFancyUI
.
OpenAchievementsAndGoto
(
_hoveredCard
.
achievement
);
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
);
135
PlayerInput
.
SetZoom_UI
();
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;
165
Texture2D
value =
_achievementsBorderMouseHoverFatTexture
.
Value
;
166
if
(scale > 0.5f)
167
{
168
value =
_achievementsBorderMouseHoverThinTexture
.
Value
;
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
181
private
List<AchievementAdvisorCard>
GetBestCards
(
int
cardsAmount
= 10)
182
{
183
List<AchievementAdvisorCard>
list =
new
List<AchievementAdvisorCard>
();
184
for
(
int
i = 0; i <
_cards
.
Count
; i++)
185
{
186
AchievementAdvisorCard
achievementAdvisorCard
=
_cards
[i];
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
}
Microsoft.Xna.Framework.Graphics.SpriteBatch.Draw
void Draw(Texture2D texture, Vector2 position, Color color)
Definition
SpriteBatch.cs:397
Microsoft.Xna.Framework.Graphics.SpriteBatch
Definition
SpriteBatch.cs:8
Microsoft.Xna.Framework.Graphics.Texture2D
Definition
Texture2D.cs:13
ReLogic.Content.Asset.Value
T Value
Definition
Asset.cs:26
System.Collections.Generic.Dictionary.Count
int Count
Definition
Dictionary.cs:682
System.Collections.Generic.Dictionary.Add
void Add(TKey key, TValue value)
Definition
Dictionary.cs:873
System.Collections.Generic.Dictionary
Definition
Dictionary.cs:14
Terraria.GameInput.PlayerInput.SteamDeckIsUsed
static bool SteamDeckIsUsed
Definition
PlayerInput.cs:361
Terraria.GameInput.PlayerInput.IgnoreMouseInterface
static bool IgnoreMouseInterface
Definition
PlayerInput.cs:345
Terraria.GameInput.PlayerInput.SetZoom_UI
static void SetZoom_UI()
Definition
PlayerInput.cs:2251
Terraria.GameInput.PlayerInput.UsingGamepad
static bool UsingGamepad
Definition
PlayerInput.cs:331
Terraria.GameInput.PlayerInput
Definition
PlayerInput.cs:18
Terraria.Item
Definition
Item.cs:22
Terraria.Main.Achievements
static AchievementManager Achievements
Definition
Main.cs:2756
Terraria.Main.spriteBatch
static SpriteBatch spriteBatch
Definition
Main.cs:974
Terraria.Main.myPlayer
static int myPlayer
Definition
Main.cs:1801
Terraria.Main.mouseLeftRelease
static bool mouseLeftRelease
Definition
Main.cs:1755
Terraria.Main.instance
static Main instance
Definition
Main.cs:283
Terraria.Main.MouseScreen
static Vector2 MouseScreen
Definition
Main.cs:2773
Terraria.Main.UIScaleMatrix
static Matrix UIScaleMatrix
Definition
Main.cs:2619
Terraria.Main.OurFavoriteColor
static Microsoft.Xna.Framework.Color OurFavoriteColor
Definition
Main.cs:902
Terraria.Main.screenWidth
static int screenWidth
Definition
Main.cs:1719
Terraria.Main.Assets
static IAssetRepository Assets
Definition
Main.cs:209
Terraria.Main.player
static Player[] player
Definition
Main.cs:1803
Terraria.Main.mouseLeft
static bool mouseLeft
Definition
Main.cs:614
Terraria.Main
Definition
Main.cs:79
Terraria.UI.AchievementAdvisorCard.achievement
Achievement achievement
Definition
AchievementAdvisorCard.cs:14
Terraria.UI.AchievementAdvisorCard.order
float order
Definition
AchievementAdvisorCard.cs:16
Terraria.UI.AchievementAdvisorCard
Definition
AchievementAdvisorCard.cs:7
Terraria.UI.AchievementAdvisor.DrawOneAchievement
void DrawOneAchievement(SpriteBatch spriteBatch, Vector2 position, bool large)
Definition
AchievementAdvisor.cs:48
Terraria.UI.AchievementAdvisor._achievementsBorderTexture
Asset< Texture2D > _achievementsBorderTexture
Definition
AchievementAdvisor.cs:16
Terraria.UI.AchievementAdvisor.DrawMouseHover
void DrawMouseHover()
Definition
AchievementAdvisor.cs:129
Terraria.UI.AchievementAdvisor.LoadContent
void LoadContent()
Definition
AchievementAdvisor.cs:36
Terraria.UI.AchievementAdvisor.Draw
void Draw(SpriteBatch spriteBatch)
Definition
AchievementAdvisor.cs:44
Terraria.UI.AchievementAdvisor.Update
void Update()
Definition
AchievementAdvisor.cs:79
Terraria.UI.AchievementAdvisor._achievementsBorderMouseHoverThinTexture
Asset< Texture2D > _achievementsBorderMouseHoverThinTexture
Definition
AchievementAdvisor.cs:20
Terraria.UI.AchievementAdvisor.DrawCard
void DrawCard(AchievementAdvisorCard card, SpriteBatch spriteBatch, Vector2 position, float scale, out bool hovered)
Definition
AchievementAdvisor.cs:150
Terraria.UI.AchievementAdvisor.DrawOptionsPanel
void DrawOptionsPanel(SpriteBatch spriteBatch, Vector2 leftPosition, Vector2 rightPosition)
Definition
AchievementAdvisor.cs:84
Terraria.UI.AchievementAdvisor.Initialize
void Initialize()
Definition
AchievementAdvisor.cs:199
Terraria.UI.AchievementAdvisor._cards
List< AchievementAdvisorCard > _cards
Definition
AchievementAdvisor.cs:12
Terraria.UI.AchievementAdvisor._achievementsTexture
Asset< Texture2D > _achievementsTexture
Definition
AchievementAdvisor.cs:14
Terraria.UI.AchievementAdvisor.CanDrawAboveCoins
bool CanDrawAboveCoins
Definition
AchievementAdvisor.cs:25
Terraria.UI.AchievementAdvisor._achievementsBorderMouseHoverFatTexture
Asset< Texture2D > _achievementsBorderMouseHoverFatTexture
Definition
AchievementAdvisor.cs:18
Terraria.UI.AchievementAdvisor.GetBestCards
List< AchievementAdvisorCard > GetBestCards(int cardsAmount=10)
Definition
AchievementAdvisor.cs:181
Terraria.UI.AchievementAdvisor._hoveredCard
AchievementAdvisorCard _hoveredCard
Definition
AchievementAdvisor.cs:22
Terraria.UI.AchievementAdvisor
Definition
AchievementAdvisor.cs:11
Terraria.UI.IngameFancyUI.OpenAchievementsAndGoto
static void OpenAchievementsAndGoto(Achievement achievement)
Definition
IngameFancyUI.cs:42
Terraria.UI.IngameFancyUI
Definition
IngameFancyUI.cs:13
Terraria.UI.ItemTooltip.FromLanguageKey
static ItemTooltip FromLanguageKey(string key)
Definition
ItemTooltip.cs:44
Terraria.UI.ItemTooltip
Definition
ItemTooltip.cs:7
Microsoft.Xna.Framework.Graphics.SurfaceFormat.Vector2
@ Vector2
Microsoft.Xna.Framework.Graphics.SurfaceFormat.Color
@ Color
Microsoft.Xna.Framework.Graphics.SpriteEffects
SpriteEffects
Definition
SpriteEffects.cs:7
Microsoft.Xna.Framework.Graphics.SpriteSortMode
SpriteSortMode
Definition
SpriteSortMode.cs:4
Microsoft.Xna.Framework.Graphics
Definition
AlphaTestEffect.cs:1
Microsoft.Xna.Framework
Definition
AlphaTestEffect.cs:1
ReLogic.Content.AssetRequestMode
AssetRequestMode
Definition
AssetRequestMode.cs:4
ReLogic.Content
Definition
IAssetReader.cs:5
System.Collections.Generic
Definition
IHashKeyCollection.cs:1
System.Linq
Definition
ImmutableArrayExtensions.cs:4
Terraria.GameInput
Definition
CursorMode.cs:1
Terraria.UI
Definition
ChatLine.cs:3
Microsoft.Xna.Framework.Color.White
static Color White
Definition
Color.cs:350
Microsoft.Xna.Framework.Color
Definition
Color.cs:12
Microsoft.Xna.Framework.Rectangle
Definition
Rectangle.cs:12
Microsoft.Xna.Framework.Vector2.Zero
static Vector2 Zero
Definition
Vector2.cs:27
Microsoft.Xna.Framework.Vector2
Definition
Vector2.cs:12
source
Terraria.UI
AchievementAdvisor.cs
Generated by
1.10.0