Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ DrawPlayerFull()

void Terraria.Graphics.Renderers.LegacyPlayerRenderer.DrawPlayerFull ( Camera camera,
Player drawPlayer )
inlineprivate

Definition at line 260 of file LegacyPlayerRenderer.cs.

261 {
262 SpriteBatch spriteBatch = camera.SpriteBatch;
263 SamplerState samplerState = camera.Sampler;
264 if (drawPlayer.mount.Active && drawPlayer.fullRotation != 0f)
265 {
266 samplerState = MountedSamplerState;
267 }
268 spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, samplerState, DepthStencilState.None, camera.Rasterizer, null, camera.GameViewMatrix.TransformationMatrix);
269 if (Main.gamePaused)
270 {
271 drawPlayer.PlayerFrame();
272 }
273 if (drawPlayer.ghost)
274 {
275 for (int i = 0; i < 3; i++)
276 {
277 Vector2 vector = drawPlayer.shadowPos[i];
278 vector = drawPlayer.position - drawPlayer.velocity * (2 + i * 2);
279 DrawGhost(camera, drawPlayer, vector, 0.5f + 0.2f * (float)i);
280 }
281 DrawGhost(camera, drawPlayer, drawPlayer.position);
282 }
283 else
284 {
285 if (drawPlayer.inventory[drawPlayer.selectedItem].flame || drawPlayer.head == 137 || drawPlayer.wings == 22)
286 {
287 drawPlayer.itemFlameCount--;
288 if (drawPlayer.itemFlameCount <= 0)
289 {
290 drawPlayer.itemFlameCount = 5;
291 for (int j = 0; j < 7; j++)
292 {
293 drawPlayer.itemFlamePos[j].X = (float)Main.rand.Next(-10, 11) * 0.15f;
294 drawPlayer.itemFlamePos[j].Y = (float)Main.rand.Next(-10, 1) * 0.35f;
295 }
296 }
297 }
298 if (drawPlayer.armorEffectDrawShadowEOCShield)
299 {
300 int num = drawPlayer.eocDash / 4;
301 if (num > 3)
302 {
303 num = 3;
304 }
305 for (int k = 0; k < num; k++)
306 {
307 DrawPlayer(camera, drawPlayer, drawPlayer.shadowPos[k], drawPlayer.shadowRotation[k], drawPlayer.shadowOrigin[k], 0.5f + 0.2f * (float)k);
308 }
309 }
310 Vector2 position = default(Vector2);
311 if (drawPlayer.invis)
312 {
313 drawPlayer.armorEffectDrawOutlines = false;
314 drawPlayer.armorEffectDrawShadow = false;
315 drawPlayer.armorEffectDrawShadowSubtle = false;
316 position = drawPlayer.position;
317 if (drawPlayer.aggro <= -750)
318 {
319 DrawPlayer(camera, drawPlayer, position, drawPlayer.fullRotation, drawPlayer.fullRotationOrigin, 1f);
320 }
321 else
322 {
323 drawPlayer.invis = false;
324 DrawPlayer(camera, drawPlayer, position, drawPlayer.fullRotation, drawPlayer.fullRotationOrigin);
325 drawPlayer.invis = true;
326 }
327 }
328 if (drawPlayer.armorEffectDrawOutlines)
329 {
330 _ = drawPlayer.position;
331 if (!Main.gamePaused)
332 {
333 drawPlayer.ghostFade += drawPlayer.ghostDir * 0.075f;
334 }
335 if ((double)drawPlayer.ghostFade < 0.1)
336 {
337 drawPlayer.ghostDir = 1f;
338 drawPlayer.ghostFade = 0.1f;
339 }
340 else if ((double)drawPlayer.ghostFade > 0.9)
341 {
342 drawPlayer.ghostDir = -1f;
343 drawPlayer.ghostFade = 0.9f;
344 }
345 float num2 = drawPlayer.ghostFade * 5f;
346 for (int l = 0; l < 4; l++)
347 {
348 float num3;
349 float num4;
350 switch (l)
351 {
352 default:
353 num3 = num2;
354 num4 = 0f;
355 break;
356 case 1:
357 num3 = 0f - num2;
358 num4 = 0f;
359 break;
360 case 2:
361 num3 = 0f;
362 num4 = num2;
363 break;
364 case 3:
365 num3 = 0f;
366 num4 = 0f - num2;
367 break;
368 }
369 position = new Vector2(drawPlayer.position.X + num3, drawPlayer.position.Y + drawPlayer.gfxOffY + num4);
370 DrawPlayer(camera, drawPlayer, position, drawPlayer.fullRotation, drawPlayer.fullRotationOrigin, drawPlayer.ghostFade);
371 }
372 }
373 if (drawPlayer.armorEffectDrawOutlinesForbidden)
374 {
375 _ = drawPlayer.position;
376 if (!Main.gamePaused)
377 {
378 drawPlayer.ghostFade += drawPlayer.ghostDir * 0.025f;
379 }
380 if ((double)drawPlayer.ghostFade < 0.1)
381 {
382 drawPlayer.ghostDir = 1f;
383 drawPlayer.ghostFade = 0.1f;
384 }
385 else if ((double)drawPlayer.ghostFade > 0.9)
386 {
387 drawPlayer.ghostDir = -1f;
388 drawPlayer.ghostFade = 0.9f;
389 }
390 float num5 = drawPlayer.ghostFade * 5f;
391 for (int m = 0; m < 4; m++)
392 {
393 float num6;
394 float num7;
395 switch (m)
396 {
397 default:
398 num6 = num5;
399 num7 = 0f;
400 break;
401 case 1:
402 num6 = 0f - num5;
403 num7 = 0f;
404 break;
405 case 2:
406 num6 = 0f;
407 num7 = num5;
408 break;
409 case 3:
410 num6 = 0f;
411 num7 = 0f - num5;
412 break;
413 }
414 position = new Vector2(drawPlayer.position.X + num6, drawPlayer.position.Y + drawPlayer.gfxOffY + num7);
415 DrawPlayer(camera, drawPlayer, position, drawPlayer.fullRotation, drawPlayer.fullRotationOrigin, drawPlayer.ghostFade);
416 }
417 }
418 if (drawPlayer.armorEffectDrawShadowBasilisk)
419 {
420 int num8 = (int)(drawPlayer.basiliskCharge * 3f);
421 for (int n = 0; n < num8; n++)
422 {
423 DrawPlayer(camera, drawPlayer, drawPlayer.shadowPos[n], drawPlayer.shadowRotation[n], drawPlayer.shadowOrigin[n], 0.5f + 0.2f * (float)n);
424 }
425 }
426 else if (drawPlayer.armorEffectDrawShadow)
427 {
428 for (int num9 = 0; num9 < 3; num9++)
429 {
430 DrawPlayer(camera, drawPlayer, drawPlayer.shadowPos[num9], drawPlayer.shadowRotation[num9], drawPlayer.shadowOrigin[num9], 0.5f + 0.2f * (float)num9);
431 }
432 }
433 if (drawPlayer.armorEffectDrawShadowLokis)
434 {
435 for (int num10 = 0; num10 < 3; num10++)
436 {
437 DrawPlayer(camera, drawPlayer, Vector2.Lerp(drawPlayer.shadowPos[num10], drawPlayer.position + new Vector2(0f, drawPlayer.gfxOffY), 0.5f), drawPlayer.shadowRotation[num10], drawPlayer.shadowOrigin[num10], MathHelper.Lerp(1f, 0.5f + 0.2f * (float)num10, 0.5f));
438 }
439 }
440 if (drawPlayer.armorEffectDrawShadowSubtle)
441 {
442 for (int num11 = 0; num11 < 4; num11++)
443 {
444 position.X = drawPlayer.position.X + (float)Main.rand.Next(-20, 21) * 0.1f;
445 position.Y = drawPlayer.position.Y + (float)Main.rand.Next(-20, 21) * 0.1f + drawPlayer.gfxOffY;
446 DrawPlayer(camera, drawPlayer, position, drawPlayer.fullRotation, drawPlayer.fullRotationOrigin, 0.9f);
447 }
448 }
449 if (drawPlayer.shadowDodge)
450 {
451 drawPlayer.shadowDodgeCount += 1f;
452 if (drawPlayer.shadowDodgeCount > 30f)
453 {
454 drawPlayer.shadowDodgeCount = 30f;
455 }
456 }
457 else
458 {
459 drawPlayer.shadowDodgeCount -= 1f;
460 if (drawPlayer.shadowDodgeCount < 0f)
461 {
462 drawPlayer.shadowDodgeCount = 0f;
463 }
464 }
465 if (drawPlayer.shadowDodgeCount > 0f)
466 {
467 _ = drawPlayer.position;
468 position.X = drawPlayer.position.X + drawPlayer.shadowDodgeCount;
469 position.Y = drawPlayer.position.Y + drawPlayer.gfxOffY;
470 DrawPlayer(camera, drawPlayer, position, drawPlayer.fullRotation, drawPlayer.fullRotationOrigin, 0.5f + (float)Main.rand.Next(-10, 11) * 0.005f);
471 position.X = drawPlayer.position.X - drawPlayer.shadowDodgeCount;
472 DrawPlayer(camera, drawPlayer, position, drawPlayer.fullRotation, drawPlayer.fullRotationOrigin, 0.5f + (float)Main.rand.Next(-10, 11) * 0.005f);
473 }
474 if (drawPlayer.brainOfConfusionDodgeAnimationCounter > 0)
475 {
476 Vector2 vector2 = drawPlayer.position + new Vector2(0f, drawPlayer.gfxOffY);
477 float lerpValue = Utils.GetLerpValue(300f, 270f, drawPlayer.brainOfConfusionDodgeAnimationCounter);
478 float y = MathHelper.Lerp(2f, 120f, lerpValue);
479 if (lerpValue >= 0f && lerpValue <= 1f)
480 {
481 for (float num12 = 0f; num12 < (float)Math.PI * 2f; num12 += (float)Math.PI / 3f)
482 {
483 position = vector2 + new Vector2(0f, y).RotatedBy((float)Math.PI * 2f * lerpValue * 0.5f + num12);
484 DrawPlayer(camera, drawPlayer, position, drawPlayer.fullRotation, drawPlayer.fullRotationOrigin, lerpValue);
485 }
486 }
487 }
488 position = drawPlayer.position;
489 position.Y += drawPlayer.gfxOffY;
490 if (drawPlayer.stoned)
491 {
492 DrawPlayerStoned(camera, drawPlayer, position);
493 }
494 else if (!drawPlayer.invis)
495 {
496 DrawPlayer(camera, drawPlayer, position, drawPlayer.fullRotation, drawPlayer.fullRotationOrigin);
497 }
498 }
499 spriteBatch.End();
500 }
static readonly BlendState AlphaBlend
Definition BlendState.cs:36
static float Lerp(float value1, float value2, float amount)
Definition MathHelper.cs:53
const double PI
Definition Math.cs:16
void DrawPlayer(Camera camera, Player drawPlayer, Vector2 position, float rotation, Vector2 rotationOrigin, float shadow=0f, float scale=1f)
void DrawPlayerStoned(Camera camera, Player drawPlayer, Vector2 position)
void DrawGhost(Camera camera, Player drawPlayer, Vector2 position, float shadow=0f)
static Vector2 Lerp(Vector2 value1, Vector2 value2, float amount)
Definition Vector2.cs:227

References Terraria.Mount.Active, Terraria.Player.aggro, Microsoft.Xna.Framework.Graphics.BlendState.AlphaBlend, Terraria.Player.armorEffectDrawOutlines, Terraria.Player.armorEffectDrawOutlinesForbidden, Terraria.Player.armorEffectDrawShadow, Terraria.Player.armorEffectDrawShadowBasilisk, Terraria.Player.armorEffectDrawShadowEOCShield, Terraria.Player.armorEffectDrawShadowLokis, Terraria.Player.armorEffectDrawShadowSubtle, Terraria.Player.basiliskCharge, Microsoft.Xna.Framework.Graphics.SpriteBatch.Begin(), Terraria.Player.brainOfConfusionDodgeAnimationCounter, Terraria.Graphics.Renderers.LegacyPlayerRenderer.DrawGhost(), Terraria.Graphics.Renderers.LegacyPlayerRenderer.DrawPlayer(), Terraria.Graphics.Renderers.LegacyPlayerRenderer.DrawPlayerStoned(), Microsoft.Xna.Framework.Graphics.SpriteBatch.End(), Terraria.Item.flame, Terraria.Player.fullRotation, Terraria.Player.fullRotationOrigin, Terraria.Main.gamePaused, Terraria.Utils.GetLerpValue(), Terraria.Player.gfxOffY, Terraria.Player.ghost, Terraria.Player.ghostFade, Terraria.Player.head, Terraria.Player.inventory, Terraria.Player.invis, Terraria.Player.itemFlameCount, Terraria.Player.itemFlamePos, Microsoft.Xna.Framework.MathHelper.Lerp(), Microsoft.Xna.Framework.Vector2.Lerp(), Terraria.Player.mount, Terraria.Graphics.Renderers.LegacyPlayerRenderer.MountedSamplerState, Microsoft.Xna.Framework.Graphics.DepthStencilState.None, System.Math.PI, Terraria.Player.PlayerFrame(), Terraria.Entity.position, Terraria.Main.rand, Terraria.Player.selectedItem, Terraria.Player.shadowDodge, Terraria.Player.shadowDodgeCount, Terraria.Player.shadowOrigin, Terraria.Player.shadowPos, Terraria.Player.shadowRotation, Terraria.Player.stoned, Microsoft.Xna.Framework.Graphics.Vector2, Terraria.Player.wings, Microsoft.Xna.Framework.Vector2.X, and Microsoft.Xna.Framework.Vector2.Y.

Referenced by Terraria.Graphics.Renderers.LegacyPlayerRenderer.DrawPlayers().