Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ DrawPlayer_25_Shield()

static void Terraria.DataStructures.PlayerDrawLayers.DrawPlayer_25_Shield ( ref PlayerDrawSet drawinfo)
inlinestatic

Definition at line 2391 of file PlayerDrawLayers.cs.

2392 {
2393 if (drawinfo.drawPlayer.shield <= 0 || drawinfo.drawPlayer.shield >= ArmorIDs.Shield.Count)
2394 {
2395 return;
2396 }
2398 if (drawinfo.drawPlayer.shieldRaised)
2399 {
2400 zero.Y -= 4f * drawinfo.drawPlayer.gravDir;
2401 }
2402 Rectangle bodyFrame = drawinfo.drawPlayer.bodyFrame;
2404 Vector2 bodyVect = drawinfo.bodyVect;
2405 if (bodyFrame.Width != TextureAssets.AccShield[drawinfo.drawPlayer.shield].Value.Width)
2406 {
2407 bodyFrame.Width = TextureAssets.AccShield[drawinfo.drawPlayer.shield].Value.Width;
2408 bodyVect.X += bodyFrame.Width - TextureAssets.AccShield[drawinfo.drawPlayer.shield].Value.Width;
2409 if (drawinfo.playerEffect.HasFlag(SpriteEffects.FlipHorizontally))
2410 {
2411 bodyVect.X = (float)bodyFrame.Width - bodyVect.X;
2412 }
2413 }
2414 DrawData item;
2415 if (drawinfo.drawPlayer.shieldRaised)
2416 {
2417 float num = (float)Math.Sin(Main.GlobalTimeWrappedHourly * ((float)Math.PI * 2f));
2418 float x = 2.5f + 1.5f * num;
2419 Color colorArmorBody = drawinfo.colorArmorBody;
2420 colorArmorBody.A = 0;
2421 colorArmorBody *= 0.45f - num * 0.15f;
2422 for (float num2 = 0f; num2 < 4f; num2 += 1f)
2423 {
2424 item = new DrawData(TextureAssets.AccShield[drawinfo.drawPlayer.shield].Value, zero2 + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2) + zero + new Vector2(x, 0f).RotatedBy(num2 / 4f * ((float)Math.PI * 2f)), bodyFrame, colorArmorBody, drawinfo.drawPlayer.bodyRotation, bodyVect, 1f, drawinfo.playerEffect);
2425 item.shader = drawinfo.cShield;
2426 drawinfo.DrawDataCache.Add(item);
2427 }
2428 }
2429 item = new DrawData(TextureAssets.AccShield[drawinfo.drawPlayer.shield].Value, zero2 + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2) + zero, bodyFrame, drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, bodyVect, 1f, drawinfo.playerEffect);
2430 item.shader = drawinfo.cShield;
2431 drawinfo.DrawDataCache.Add(item);
2432 if (drawinfo.drawPlayer.shieldRaised)
2433 {
2434 Color colorArmorBody2 = drawinfo.colorArmorBody;
2435 float num3 = (float)Math.Sin(Main.GlobalTimeWrappedHourly * (float)Math.PI);
2436 colorArmorBody2.A = (byte)((float)(int)colorArmorBody2.A * (0.5f + 0.5f * num3));
2437 colorArmorBody2 *= 0.5f + 0.5f * num3;
2438 item = new DrawData(TextureAssets.AccShield[drawinfo.drawPlayer.shield].Value, zero2 + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2) + zero, bodyFrame, colorArmorBody2, drawinfo.drawPlayer.bodyRotation, bodyVect, 1f, drawinfo.playerEffect);
2439 item.shader = drawinfo.cShield;
2440 }
2441 if (drawinfo.drawPlayer.shieldRaised && drawinfo.drawPlayer.shieldParryTimeLeft > 0)
2442 {
2443 float num4 = (float)drawinfo.drawPlayer.shieldParryTimeLeft / 20f;
2444 float num5 = 1.5f * num4;
2445 Vector2 vector = zero2 + new Vector2((int)(drawinfo.Position.X - Main.screenPosition.X - (float)(bodyFrame.Width / 2) + (float)(drawinfo.drawPlayer.width / 2)), (int)(drawinfo.Position.Y - Main.screenPosition.Y + (float)drawinfo.drawPlayer.height - (float)drawinfo.drawPlayer.bodyFrame.Height + 4f)) + drawinfo.drawPlayer.bodyPosition + new Vector2(bodyFrame.Width / 2, drawinfo.drawPlayer.bodyFrame.Height / 2) + zero;
2446 Color colorArmorBody3 = drawinfo.colorArmorBody;
2447 float num6 = 1f;
2448 Vector2 vector2 = drawinfo.Position + drawinfo.drawPlayer.Size / 2f - Main.screenPosition;
2450 vector += vector3 * num5;
2451 num6 += num5;
2452 colorArmorBody3.A = (byte)((float)(int)colorArmorBody3.A * (1f - num4));
2453 colorArmorBody3 *= 1f - num4;
2454 item = new DrawData(TextureAssets.AccShield[drawinfo.drawPlayer.shield].Value, vector, bodyFrame, colorArmorBody3, drawinfo.drawPlayer.bodyRotation, bodyVect, num6, drawinfo.playerEffect);
2455 item.shader = drawinfo.cShield;
2456 drawinfo.DrawDataCache.Add(item);
2457 }
2458 if (drawinfo.drawPlayer.mount.Cart)
2459 {
2460 drawinfo.DrawDataCache.Reverse(drawinfo.DrawDataCache.Count - 2, 2);
2461 }
2462 }
void Add(TKey key, TValue value)
static double Sin(double a)
const double PI
Definition Math.cs:16
static Asset< Texture2D >[] AccShield
static readonly int Count
Definition ArmorIDs.cs:1943

References Terraria.GameContent.TextureAssets.AccShield, System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.Collections.Generic.Dictionary< TKey, TValue >.Count, Terraria.ID.ArmorIDs.Shield.Count, Terraria.Main.GlobalTimeWrappedHourly, System.item, System.Math.PI, Terraria.Main.screenPosition, System.Math.Sin(), Microsoft.Xna.Framework.Graphics.Vector2, Microsoft.Xna.Framework.Rectangle.Width, Microsoft.Xna.Framework.Vector2.X, and Microsoft.Xna.Framework.Vector2.Zero.

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