Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
PlayerDrawHeadLayers.cs
Go to the documentation of this file.
1using System;
7using Terraria.ID;
8
10
11public static class PlayerDrawHeadLayers
12{
14 {
15 }
16
18 {
19 if (drawinfo.drawPlayer.head >= 0 && drawinfo.drawPlayer.head < ArmorIDs.Head.Count)
20 {
21 int num = ArmorIDs.Head.Sets.FrontToBackID[drawinfo.drawPlayer.head];
22 if (num >= 0)
23 {
24 Rectangle hairFrame = drawinfo.HairFrame;
25 QuickCDD(drawinfo.DrawData, drawinfo.cHead, TextureAssets.ArmorHead[num].Value, drawinfo.helmetOffset + new Vector2(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, hairFrame, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
26 }
27 }
28 }
29
31 {
32 bool flag = drawinfo.drawPlayer.head == 38 || drawinfo.drawPlayer.head == 135 || drawinfo.drawPlayer.head == 269;
33 if (!flag && drawinfo.drawPlayer.faceHead > 0 && drawinfo.drawPlayer.faceHead < ArmorIDs.Face.Count)
34 {
35 Vector2 faceHeadOffsetFromHelmet = drawinfo.drawPlayer.GetFaceHeadOffsetFromHelmet();
36 QuickCDD(drawinfo.DrawData, drawinfo.cFaceHead, TextureAssets.AccFace[drawinfo.drawPlayer.faceHead].Value, new Vector2(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect + faceHeadOffsetFromHelmet, drawinfo.bodyFrameMemory, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
37 if (drawinfo.drawPlayer.face <= 0 || drawinfo.drawPlayer.face >= ArmorIDs.Face.Count || !ArmorIDs.Face.Sets.DrawInFaceUnderHairLayer[drawinfo.drawPlayer.face])
38 {
39 return;
40 }
41 float num = 0f;
42 if (drawinfo.drawPlayer.face == 5)
43 {
44 sbyte faceHead = drawinfo.drawPlayer.faceHead;
45 if ((uint)(faceHead - 10) <= 3u)
46 {
47 num = 2 * drawinfo.drawPlayer.direction;
48 }
49 }
50 QuickCDD(drawinfo.DrawData, drawinfo.cFace, TextureAssets.AccFace[drawinfo.drawPlayer.face].Value, new Vector2((float)(int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)) + num, drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.bodyFrameMemory, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
51 }
52 else if (!flag && !drawinfo.drawPlayer.isHatRackDoll)
53 {
54 QuickCDD(drawinfo.DrawData, drawinfo.skinDyePacked, TextureAssets.Players[drawinfo.skinVar, 0].Value, new Vector2(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.bodyFrameMemory, drawinfo.colorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
55 QuickCDD(drawinfo.DrawData, TextureAssets.Players[drawinfo.skinVar, 1].Value, new Vector2(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.bodyFrameMemory, drawinfo.colorEyeWhites, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
56 QuickCDD(drawinfo.DrawData, TextureAssets.Players[drawinfo.skinVar, 2].Value, new Vector2(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.bodyFrameMemory, drawinfo.colorEyes, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
57 if (drawinfo.drawPlayer.yoraiz0rDarkness)
58 {
59 QuickCDD(drawinfo.DrawData, drawinfo.skinDyePacked, TextureAssets.Extra[67].Value, new Vector2(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.bodyFrameMemory, drawinfo.colorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
60 }
61 if (drawinfo.drawPlayer.face > 0 && drawinfo.drawPlayer.face < ArmorIDs.Face.Count && ArmorIDs.Face.Sets.DrawInFaceUnderHairLayer[drawinfo.drawPlayer.face])
62 {
63 QuickCDD(drawinfo.DrawData, drawinfo.cFace, TextureAssets.AccFace[drawinfo.drawPlayer.face].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.bodyFrameMemory, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
64 }
65 }
66 }
67
69 {
70 if (!drawinfo.fullHair)
71 {
72 return;
73 }
74 Color color = drawinfo.colorArmorHead;
75 int shaderTechnique = drawinfo.cHead;
76 if (ArmorIDs.Head.Sets.UseSkinColor[drawinfo.drawPlayer.head])
77 {
78 color = ((!drawinfo.drawPlayer.isDisplayDollOrInanimate) ? drawinfo.colorHead : drawinfo.colorDisplayDollSkin);
79 shaderTechnique = drawinfo.skinDyePacked;
80 }
81 QuickCDD(drawinfo.DrawData, shaderTechnique, TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value, drawinfo.helmetOffset + new Vector2(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.HairFrame, color, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
82 if (!drawinfo.hideHair)
83 {
84 Rectangle hairFrame = drawinfo.HairFrame;
85 hairFrame.Y -= 336;
86 if (hairFrame.Y < 0)
87 {
88 hairFrame.Y = 0;
89 }
90 QuickCDD(drawinfo.DrawData, drawinfo.hairShaderPacked, TextureAssets.PlayerHair[drawinfo.drawPlayer.hair].Value, new Vector2(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect + drawinfo.hairOffset, hairFrame, drawinfo.colorHair, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
91 }
92 }
93
95 {
96 if (!drawinfo.hideHair && drawinfo.hatHair)
97 {
98 Rectangle hairFrame = drawinfo.HairFrame;
99 hairFrame.Y -= 336;
100 if (hairFrame.Y < 0)
101 {
102 hairFrame.Y = 0;
103 }
104 if (!drawinfo.drawPlayer.invis)
105 {
106 QuickCDD(drawinfo.DrawData, drawinfo.hairShaderPacked, TextureAssets.PlayerHairAlt[drawinfo.drawPlayer.hair].Value, new Vector2(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, hairFrame, drawinfo.colorHair, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
107 }
108 }
109 }
110
112 {
113 Rectangle hairFrame = drawinfo.HairFrame;
114 hairFrame.Width += 2;
115 QuickCDD(drawinfo.DrawData, drawinfo.cHead, TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value, drawinfo.helmetOffset + new Vector2(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, hairFrame, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
116 }
117
119 {
120 int verticalFrames = 27;
121 Texture2D value = TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value;
122 Rectangle rectangle = value.Frame(1, verticalFrames, 0, drawinfo.drawPlayer.rabbitOrderFrame.DisplayFrame);
123 Vector2 origin = rectangle.Size() / 2f;
124 int usedGravDir = 1;
126 int hatStacks = GetHatStacks(ref drawinfo, 4955);
127 float num = (float)Math.PI / 60f;
128 float num2 = num * drawinfo.drawPlayer.position.X % ((float)Math.PI * 2f);
129 for (int num3 = hatStacks - 1; num3 >= 0; num3--)
130 {
131 float x = Vector2.UnitY.RotatedBy(num2 + num * (float)num3).X * ((float)num3 / 30f) * 2f - (float)(num3 * 2 * drawinfo.drawPlayer.direction);
132 QuickCDD(drawinfo.DrawData, drawinfo.cHead, value, vector + new Vector2(x, (float)(num3 * -14) * drawinfo.scale), rectangle, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, origin, drawinfo.scale, drawinfo.playerEffect, 0f);
133 }
134 if (!drawinfo.hideHair)
135 {
136 Rectangle hairFrame = drawinfo.HairFrame;
137 hairFrame.Y -= 336;
138 if (hairFrame.Y < 0)
139 {
140 hairFrame.Y = 0;
141 }
142 QuickCDD(drawinfo.DrawData, drawinfo.hairShaderPacked, TextureAssets.PlayerHair[drawinfo.drawPlayer.hair].Value, new Vector2(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect + drawinfo.hairOffset, hairFrame, drawinfo.colorHair, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
143 }
144 }
145
147 {
148 int verticalFrames = 6;
149 Texture2D value = TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value;
150 Rectangle rectangle = value.Frame(1, verticalFrames, 0, drawinfo.drawPlayer.rabbitOrderFrame.DisplayFrame);
151 Vector2 origin = rectangle.Size() / 2f;
152 int num = 1;
154 int hatStacks = GetHatStacks(ref drawinfo, 5004);
155 float num2 = (float)Math.PI / 60f;
156 float num3 = num2 * drawinfo.drawPlayer.position.X % ((float)Math.PI * 2f);
157 int num4 = hatStacks * 4 + 2;
158 int num5 = 0;
159 bool flag = (Main.GlobalTimeWrappedHourly + 180f) % 600f < 60f;
160 for (int num6 = num4 - 1; num6 >= 0; num6--)
161 {
162 int num7 = 0;
163 if (num6 == num4 - 1)
164 {
165 rectangle.Y = 0;
166 num7 = 2;
167 }
168 else if (num6 == 0)
169 {
170 rectangle.Y = rectangle.Height * 5;
171 }
172 else
173 {
174 rectangle.Y = rectangle.Height * (num5++ % 4 + 1);
175 }
176 if (!(rectangle.Y == rectangle.Height * 3 && flag))
177 {
178 float x = Vector2.UnitY.RotatedBy(num3 + num2 * (float)num6).X * ((float)num6 / 10f) * 4f - (float)num6 * 0.1f * (float)drawinfo.drawPlayer.direction;
179 QuickCDD(drawinfo.DrawData, drawinfo.cHead, value, vector + new Vector2(x, (num6 * -4 + num7) * num) * drawinfo.scale, rectangle, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, origin, drawinfo.scale, drawinfo.playerEffect, 0f);
180 }
181 }
182 }
183
185 {
186 Vector2 vector = new Vector2(drawinfo.drawPlayer.direction, usedGravDir);
187 return drawinfo.Position - Main.screenPosition + new Vector2(-drawinfo.bodyFrameMemory.Width / 2 + drawinfo.drawPlayer.width / 2, drawinfo.drawPlayer.height - drawinfo.bodyFrameMemory.Height + 4) + hatOffset * vector * drawinfo.scale + (drawinfo.drawPlayer.headPosition + drawinfo.headVect);
188 }
189
190 private static int GetHatStacks(ref PlayerDrawHeadSet drawinfo, int itemId)
191 {
192 int num = 0;
193 int num2 = 0;
194 if (drawinfo.drawPlayer.armor[num2] != null && drawinfo.drawPlayer.armor[num2].type == itemId && drawinfo.drawPlayer.armor[num2].stack > 0)
195 {
196 num += drawinfo.drawPlayer.armor[num2].stack;
197 }
198 num2 = 10;
199 if (drawinfo.drawPlayer.armor[num2] != null && drawinfo.drawPlayer.armor[num2].type == itemId && drawinfo.drawPlayer.armor[num2].stack > 0)
200 {
201 num += drawinfo.drawPlayer.armor[num2].stack;
202 }
203 if (num > 2)
204 {
205 num = 2;
206 }
207 return num;
208 }
209
211 {
212 if (drawinfo.drawPlayer.head == 259)
213 {
215 }
216 else
217 {
218 if (!drawinfo.helmetIsOverFullHair)
219 {
220 return;
221 }
222 if (!drawinfo.hideHair)
223 {
224 Rectangle hairFrame = drawinfo.HairFrame;
225 hairFrame.Y -= 336;
226 if (hairFrame.Y < 0)
227 {
228 hairFrame.Y = 0;
229 }
230 QuickCDD(drawinfo.DrawData, drawinfo.hairShaderPacked, TextureAssets.PlayerHair[drawinfo.drawPlayer.hair].Value, new Vector2(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect + drawinfo.hairOffset, hairFrame, drawinfo.colorHair, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
231 }
232 if (drawinfo.drawPlayer.head != 0)
233 {
234 Color color = drawinfo.colorArmorHead;
235 int shaderTechnique = drawinfo.cHead;
236 if (ArmorIDs.Head.Sets.UseSkinColor[drawinfo.drawPlayer.head])
237 {
238 color = ((!drawinfo.drawPlayer.isDisplayDollOrInanimate) ? drawinfo.colorHead : drawinfo.colorDisplayDollSkin);
239 shaderTechnique = drawinfo.skinDyePacked;
240 }
241 QuickCDD(drawinfo.DrawData, shaderTechnique, TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value, drawinfo.helmetOffset + new Vector2(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.bodyFrameMemory, color, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
242 }
243 }
244 }
245
247 {
248 if (drawinfo.helmetIsTall)
249 {
250 Rectangle hairFrame = drawinfo.HairFrame;
251 if (drawinfo.drawPlayer.head == 158)
252 {
253 hairFrame.Height -= 2;
254 }
255 int num = 0;
256 if (hairFrame.Y == hairFrame.Height * 6)
257 {
258 hairFrame.Height -= 2;
259 }
260 else if (hairFrame.Y == hairFrame.Height * 7)
261 {
262 num = -2;
263 }
264 else if (hairFrame.Y == hairFrame.Height * 8)
265 {
266 num = -2;
267 }
268 else if (hairFrame.Y == hairFrame.Height * 9)
269 {
270 num = -2;
271 }
272 else if (hairFrame.Y == hairFrame.Height * 10)
273 {
274 num = -2;
275 }
276 else if (hairFrame.Y == hairFrame.Height * 13)
277 {
278 hairFrame.Height -= 2;
279 }
280 else if (hairFrame.Y == hairFrame.Height * 14)
281 {
282 num = -2;
283 }
284 else if (hairFrame.Y == hairFrame.Height * 15)
285 {
286 num = -2;
287 }
288 else if (hairFrame.Y == hairFrame.Height * 16)
289 {
290 num = -2;
291 }
292 hairFrame.Y += num;
293 Color color = drawinfo.colorArmorHead;
294 int shaderTechnique = drawinfo.cHead;
295 if (ArmorIDs.Head.Sets.UseSkinColor[drawinfo.drawPlayer.head])
296 {
297 color = ((!drawinfo.drawPlayer.isDisplayDollOrInanimate) ? drawinfo.colorHead : drawinfo.colorDisplayDollSkin);
298 shaderTechnique = drawinfo.skinDyePacked;
299 }
300 QuickCDD(drawinfo.DrawData, shaderTechnique, TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value, drawinfo.helmetOffset + new Vector2(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f + (float)num) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, hairFrame, color, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
301 }
302 }
303
305 {
306 if (drawinfo.drawPlayer.head == 270)
307 {
309 }
310 else if (drawinfo.drawPlayer.head == 265)
311 {
313 }
314 else
315 {
316 if (!drawinfo.helmetIsNormal)
317 {
318 return;
319 }
320 Rectangle hairFrame = drawinfo.HairFrame;
321 Color color = drawinfo.colorArmorHead;
322 int shaderTechnique = drawinfo.cHead;
323 if (ArmorIDs.Head.Sets.UseSkinColor[drawinfo.drawPlayer.head])
324 {
325 color = ((!drawinfo.drawPlayer.isDisplayDollOrInanimate) ? drawinfo.colorHead : drawinfo.colorDisplayDollSkin);
326 shaderTechnique = drawinfo.skinDyePacked;
327 }
328 QuickCDD(drawinfo.DrawData, shaderTechnique, TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value, drawinfo.helmetOffset + new Vector2(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, hairFrame, color, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
329 if (drawinfo.drawPlayer.head != 271)
330 {
331 return;
332 }
334 if (num == 0)
335 {
336 return;
337 }
339 int frameY = drawinfo.drawPlayer.miscCounter % 20 / 5;
340 if (num == 5)
341 {
342 frameY = 0;
343 if (drawinfo.drawPlayer.eyeHelper.EyeFrameToShow > 0)
344 {
345 frameY = 2;
346 }
347 }
348 Rectangle value2 = value.Frame(6, 4, num, frameY, -2);
349 QuickCDD(drawinfo.DrawData, drawinfo.cHead, value, drawinfo.helmetOffset + new Vector2(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, value2, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
350 }
351 }
352
354 {
355 if (!drawinfo.helmetIsNormal && !drawinfo.helmetIsOverFullHair && !drawinfo.helmetIsTall && !drawinfo.hideHair)
356 {
357 Rectangle hairFrame = drawinfo.HairFrame;
358 hairFrame.Y -= 336;
359 if (hairFrame.Y < 0)
360 {
361 hairFrame.Y = 0;
362 }
363 QuickCDD(drawinfo.DrawData, drawinfo.hairShaderPacked, TextureAssets.PlayerHair[drawinfo.drawPlayer.hair].Value, new Vector2(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect + drawinfo.hairOffset, hairFrame, drawinfo.colorHair, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
364 }
365 }
366
368 {
369 if (drawinfo.drawPlayer.beard > 0 && (drawinfo.drawPlayer.head < 0 || !ArmorIDs.Head.Sets.PreventBeardDraw[drawinfo.drawPlayer.head]))
370 {
371 Vector2 beardDrawOffsetFromHelmet = drawinfo.drawPlayer.GetBeardDrawOffsetFromHelmet();
372 Color color = drawinfo.colorArmorHead;
373 if (ArmorIDs.Beard.Sets.UseHairColor[drawinfo.drawPlayer.beard])
374 {
375 color = drawinfo.colorHair;
376 }
377 QuickCDD(drawinfo.DrawData, drawinfo.cBeard, TextureAssets.AccBeard[drawinfo.drawPlayer.beard].Value, beardDrawOffsetFromHelmet + new Vector2(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.bodyFrameMemory, color, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
378 }
379 if (drawinfo.drawPlayer.face > 0 && drawinfo.drawPlayer.face < ArmorIDs.Face.Count && !ArmorIDs.Face.Sets.DrawInFaceUnderHairLayer[drawinfo.drawPlayer.face])
380 {
382 if (drawinfo.drawPlayer.face == 19)
383 {
384 vector = new Vector2(0f, -6f);
385 }
386 QuickCDD(drawinfo.DrawData, drawinfo.cFace, TextureAssets.AccFace[drawinfo.drawPlayer.face].Value, vector + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.bodyFrameMemory, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
387 }
388 if (drawinfo.drawPlayer.faceFlower > 0 && drawinfo.drawPlayer.faceFlower < ArmorIDs.Face.Count)
389 {
390 QuickCDD(drawinfo.DrawData, drawinfo.cFaceFlower, TextureAssets.AccFace[drawinfo.drawPlayer.faceFlower].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.bodyFrameMemory, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
391 }
392 if (drawinfo.drawUnicornHorn)
393 {
394 QuickCDD(drawinfo.DrawData, drawinfo.cUnicornHorn, TextureAssets.Extra[143].Value, new Vector2(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.bodyFrameMemory, drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
395 }
396 if (drawinfo.drawAngelHalo)
397 {
398 Main.instance.LoadAccFace(7);
399 QuickCDD(drawinfo.DrawData, drawinfo.cAngelHalo, TextureAssets.AccFace[7].Value, new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(drawinfo.bodyFrameMemory.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.bodyFrameMemory.Height + 4f) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, drawinfo.bodyFrameMemory, new Color(200, 200, 200, 200), drawinfo.drawPlayer.headRotation, drawinfo.headVect, drawinfo.scale, drawinfo.playerEffect, 0f);
400 }
401 }
402
404 {
406 Effect pixelShader = Main.pixelShader;
407 _ = Main.projectile;
408 SpriteBatch spriteBatch = Main.spriteBatch;
409 for (int i = 0; i < drawData.Count; i++)
410 {
411 DrawData cdd = drawData[i];
412 if (!cdd.sourceRect.HasValue)
413 {
414 cdd.sourceRect = cdd.texture.Frame();
415 }
417 if (cdd.texture != null)
418 {
419 cdd.Draw(spriteBatch);
420 }
421 }
422 pixelShader.CurrentTechnique.Passes[0].Apply();
423 }
424
430
431 public static void QuickCDD(List<DrawData> drawData, Texture2D texture, Vector2 position, Rectangle? sourceRectangle, Color color, float rotation, Vector2 origin, float scale, SpriteEffects effects, float layerDepth)
432 {
433 drawData.Add(new DrawData(texture, position, sourceRectangle, color, rotation, origin, scale, effects));
434 }
435
436 public static void QuickCDD(List<DrawData> drawData, int shaderTechnique, Texture2D texture, Vector2 position, Rectangle? sourceRectangle, Color color, float rotation, Vector2 origin, float scale, SpriteEffects effects, float layerDepth)
437 {
438 DrawData item = new DrawData(texture, position, sourceRectangle, color, rotation, origin, scale, effects);
439 item.shader = shaderTechnique;
441 }
442}
unsafe EffectTechnique CurrentTechnique
Definition Effect.cs:34
void Add(TKey key, TValue value)
const double PI
Definition Math.cs:16
static void DrawPlayer_RenderAllLayers(ref PlayerDrawHeadSet drawinfo)
static void DrawPlayer_03_HelmetHair(ref PlayerDrawHeadSet drawinfo)
static int GetHatStacks(ref PlayerDrawHeadSet drawinfo, int itemId)
static void DrawPlayer_05_TallHats(ref PlayerDrawHeadSet drawinfo)
static void DrawPlayer_02_DrawArmorWithFullHair(ref PlayerDrawHeadSet drawinfo)
static void DrawPlayer_04_BadgersHat(ref PlayerDrawHeadSet drawinfo)
static void DrawPlayer_01_FaceSkin(ref PlayerDrawHeadSet drawinfo)
static void QuickCDD(List< DrawData > drawData, Texture2D texture, Vector2 position, Rectangle? sourceRectangle, Color color, float rotation, Vector2 origin, float scale, SpriteEffects effects, float layerDepth)
static void DrawPlayer_06_NormalHats(ref PlayerDrawHeadSet drawinfo)
static void DrawPlayer_DrawSelectionRect(ref PlayerDrawHeadSet drawinfo)
static void DrawPlayer_04_HatsWithFullHair(ref PlayerDrawHeadSet drawinfo)
static void DrawPlayer_04_RabbitOrder(ref PlayerDrawHeadSet drawinfo)
static void DrawPlayer_07_JustHair(ref PlayerDrawHeadSet drawinfo)
static void DrawPlayer_00_BackHelmet(ref PlayerDrawHeadSet drawinfo)
static void DrawPlayer_04_CapricornMask(ref PlayerDrawHeadSet drawinfo)
static Vector2 DrawPlayer_04_GetHatDrawPosition(ref PlayerDrawHeadSet drawinfo, Vector2 hatOffset, int usedGravDir)
static void DrawPlayer_0_(ref PlayerDrawHeadSet drawinfo)
static void QuickCDD(List< DrawData > drawData, int shaderTechnique, Texture2D texture, Vector2 position, Rectangle? sourceRectangle, Color color, float rotation, Vector2 origin, float scale, SpriteEffects effects, float layerDepth)
static void DrawPlayer_08_FaceAcc(ref PlayerDrawHeadSet drawinfo)
static void SetShaderForData(Player player, int cHead, ref DrawData cdd)
static Asset< Texture2D >[] PlayerHair
static Asset< Texture2D >[] ArmorHead
static Asset< Texture2D >[] GlowMask
static Asset< Texture2D >[] Extra
static Asset< Texture2D >[] PlayerHairAlt
static Asset< Texture2D >[,] Players
static Asset< Texture2D >[] AccBeard
static Asset< Texture2D >[] AccFace
static bool[] DrawInFaceUnderHairLayer
Definition ArmorIDs.cs:1985
static readonly sbyte Count
Definition ArmorIDs.cs:2036
static bool[] PreventBeardDraw
Definition ArmorIDs.cs:18
static readonly int Count
Definition ArmorIDs.cs:587
static SpriteBatch spriteBatch
Definition Main.cs:974
static Effect pixelShader
Definition Main.cs:2764
static Main instance
Definition Main.cs:283
static Vector2 screenPosition
Definition Main.cs:1715
static Projectile[] projectile
Definition Main.cs:1691
static void DrawRect(SpriteBatch spriteBatch, Rectangle rect, Color color)
Definition Utils.cs:2090
static void GetDrawBoundary(List< DrawData > playerDrawData, out Vector2 lowest, out Vector2 highest)