// Decompiled with JetBrains decompiler // Type: Terraria.DataStructures.PlayerDrawLayers // Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null // MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83 // Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using ReLogic.Content; using System; using System.Collections.Generic; using Terraria.GameContent; using Terraria.Graphics; using Terraria.Graphics.Shaders; using Terraria.ID; using Terraria.UI; namespace Terraria.DataStructures { public static class PlayerDrawLayers { public static void DrawPlayer_extra_TorsoPlus(ref PlayerDrawSet drawinfo) { drawinfo.Position.Y += drawinfo.torsoOffset; drawinfo.ItemLocation.Y += drawinfo.torsoOffset; } public static void DrawPlayer_extra_TorsoMinus(ref PlayerDrawSet drawinfo) { drawinfo.Position.Y -= drawinfo.torsoOffset; drawinfo.ItemLocation.Y -= drawinfo.torsoOffset; } public static void DrawPlayer_extra_MountPlus(ref PlayerDrawSet drawinfo) => drawinfo.Position.Y += (float) ((int) drawinfo.mountOffSet / 2); public static void DrawPlayer_extra_MountMinus(ref PlayerDrawSet drawinfo) => drawinfo.Position.Y -= (float) ((int) drawinfo.mountOffSet / 2); public static void DrawCompositeArmorPiece( ref PlayerDrawSet drawinfo, CompositePlayerDrawContext context, DrawData data) { drawinfo.DrawDataCache.Add(data); switch (context) { case CompositePlayerDrawContext.BackShoulder: case CompositePlayerDrawContext.BackArm: case CompositePlayerDrawContext.FrontArm: case CompositePlayerDrawContext.FrontShoulder: if (drawinfo.armGlowColor.PackedValue > 0U) { DrawData drawData = data; drawData.color = drawinfo.armGlowColor; Rectangle rectangle = drawData.sourceRect.Value; rectangle.Y += 224; drawData.sourceRect = new Rectangle?(rectangle); if (drawinfo.drawPlayer.body == 227) { Vector2 position = drawData.position; for (int index = 0; index < 2; ++index) { Vector2 vector2 = new Vector2((float) Main.rand.Next(-10, 10) * 0.125f, (float) Main.rand.Next(-10, 10) * 0.125f); drawData.position = position + vector2; if (index == 0) drawinfo.DrawDataCache.Add(drawData); } } drawinfo.DrawDataCache.Add(drawData); break; } break; case CompositePlayerDrawContext.Torso: if (drawinfo.bodyGlowColor.PackedValue > 0U) { DrawData drawData = data; drawData.color = drawinfo.bodyGlowColor; Rectangle rectangle = drawData.sourceRect.Value; rectangle.Y += 224; drawData.sourceRect = new Rectangle?(rectangle); if (drawinfo.drawPlayer.body == 227) { Vector2 position = drawData.position; for (int index = 0; index < 2; ++index) { Vector2 vector2 = new Vector2((float) Main.rand.Next(-10, 10) * 0.125f, (float) Main.rand.Next(-10, 10) * 0.125f); drawData.position = position + vector2; if (index == 0) drawinfo.DrawDataCache.Add(drawData); } } drawinfo.DrawDataCache.Add(drawData); break; } break; } if (context != CompositePlayerDrawContext.FrontArm || drawinfo.drawPlayer.body != 205) return; Color color = new Color(100, 100, 100, 0); ulong seed = (ulong) (drawinfo.drawPlayer.miscCounter / 4); int num1 = 4; for (int index = 0; index < num1; ++index) { float num2 = (float) Utils.RandomInt(ref seed, -10, 11) * 0.2f; float num3 = (float) Utils.RandomInt(ref seed, -10, 1) * 0.15f; DrawData drawData = data; Rectangle rectangle = drawData.sourceRect.Value; rectangle.Y += 224; drawData.sourceRect = new Rectangle?(rectangle); drawData.position.X += num2; drawData.position.Y += num3; drawData.color = color; drawinfo.DrawDataCache.Add(drawData); } } public static void DrawPlayer_01_BackHair(ref PlayerDrawSet drawinfo) { drawinfo.hairFrame = drawinfo.drawPlayer.bodyFrame; drawinfo.hairFrame.Y -= 336; if (drawinfo.hairFrame.Y < 0) drawinfo.hairFrame.Y = 0; int num = 26; int hair = drawinfo.drawPlayer.hair; drawinfo.backHairDraw = hair > 50 && (hair < 56 || hair > 63) && (hair < 74 || hair > 77) && (hair < 88 || hair > 89) && hair != 94 && hair != 100 && hair != 104 && hair != 112 && hair < 116; if (hair == 133) drawinfo.backHairDraw = true; if (drawinfo.hideHair) { drawinfo.hairFrame.Height = 0; } else { if (!drawinfo.backHairDraw) return; if (drawinfo.drawPlayer.head == -1 || drawinfo.fullHair || drawinfo.drawsBackHairWithoutHeadgear) drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.PlayerHair[drawinfo.drawPlayer.hair].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.hairFrame), drawinfo.colorHair, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.hairDyePacked }); else if (drawinfo.hatHair) drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.PlayerHairAlt[drawinfo.drawPlayer.hair].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.hairFrame), drawinfo.colorHair, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.hairDyePacked }); if ((double) drawinfo.drawPlayer.gravDir != 1.0) return; drawinfo.hairFrame.Height = num; } } public static void DrawPlayer_02_MountBehindPlayer(ref PlayerDrawSet drawinfo) { if (!drawinfo.drawPlayer.mount.Active) return; PlayerDrawLayers.DrawMeowcartTrail(ref drawinfo); PlayerDrawLayers.DrawTiedBalloons(ref drawinfo); drawinfo.drawPlayer.mount.Draw(drawinfo.DrawDataCache, 0, drawinfo.drawPlayer, drawinfo.Position, drawinfo.colorMount, drawinfo.playerEffect, drawinfo.shadow); drawinfo.drawPlayer.mount.Draw(drawinfo.DrawDataCache, 1, drawinfo.drawPlayer, drawinfo.Position, drawinfo.colorMount, drawinfo.playerEffect, drawinfo.shadow); } public static void DrawPlayer_03_Carpet(ref PlayerDrawSet drawinfo) { if (drawinfo.drawPlayer.carpetFrame < 0) return; Color colorArmorLegs = drawinfo.colorArmorLegs; float num = 0.0f; if ((double) drawinfo.drawPlayer.gravDir == -1.0) num = 10f; drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.FlyingCarpet.Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) (drawinfo.drawPlayer.height / 2) + 28.0 * (double) drawinfo.drawPlayer.gravDir + (double) num)), new Rectangle?(new Rectangle(0, TextureAssets.FlyingCarpet.Height() / 6 * drawinfo.drawPlayer.carpetFrame, TextureAssets.FlyingCarpet.Width(), TextureAssets.FlyingCarpet.Height() / 6)), colorArmorLegs, drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.FlyingCarpet.Width() / 2), (float) (TextureAssets.FlyingCarpet.Height() / 8)), 1f, drawinfo.playerEffect, 0) { shader = drawinfo.cCarpet }); } public static void DrawPlayer_03_PortableStool(ref PlayerDrawSet drawinfo) { if (!drawinfo.drawPlayer.portableStoolInfo.IsInUse) return; Texture2D texture2D = TextureAssets.Extra[102].Value; Vector2 position = new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height + 28.0)); Rectangle r = texture2D.Frame(); Vector2 origin = r.Size() * new Vector2(0.5f, 1f); drawinfo.DrawDataCache.Add(new DrawData(texture2D, position, new Rectangle?(r), drawinfo.colorArmorLegs, drawinfo.drawPlayer.bodyRotation, origin, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.cPortableStool }); } public static void DrawPlayer_04_ElectrifiedDebuffBack(ref PlayerDrawSet drawinfo) { if (!drawinfo.drawPlayer.electrified || (double) drawinfo.shadow != 0.0) return; Texture2D texture = TextureAssets.GlowMask[25].Value; int num1 = drawinfo.drawPlayer.miscCounter / 5; for (int index = 0; index < 2; ++index) { int num2 = num1 % 7; if (num2 <= 1 || num2 >= 5) { DrawData drawData = new DrawData(texture, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(new Rectangle(0, num2 * texture.Height / 7, texture.Width, texture.Height / 7)), drawinfo.colorElectricity, drawinfo.drawPlayer.bodyRotation, new Vector2((float) (texture.Width / 2), (float) (texture.Height / 14)), 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } num1 = num2 + 3; } } public static void DrawPlayer_05_ForbiddenSetRing(ref PlayerDrawSet drawinfo) { if (!drawinfo.drawPlayer.setForbidden || (double) drawinfo.shadow != 0.0) return; Color color1 = Color.Lerp(drawinfo.colorArmorBody, Color.White, 0.7f); Texture2D texture2D = TextureAssets.Extra[74].Value; Texture2D texture = TextureAssets.GlowMask[217].Value; int num1 = !drawinfo.drawPlayer.setForbiddenCooldownLocked ? 1 : 0; int num2 = (int) ((double) ((float) ((double) drawinfo.drawPlayer.miscCounter / 300.0 * 6.28318548202515)).ToRotationVector2().Y * 6.0); float num3 = ((float) ((double) drawinfo.drawPlayer.miscCounter / 75.0 * 6.28318548202515)).ToRotationVector2().X * 4f; Color color2 = new Color(80, 70, 40, 0) * (float) ((double) num3 / 8.0 + 0.5) * 0.8f; if (num1 == 0) { num2 = 0; num3 = 2f; color2 = new Color(80, 70, 40, 0) * 0.3f; color1 = color1.MultiplyRGB(new Color(0.5f, 0.5f, 1f)); } Vector2 vector2 = new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)); int num4 = 10; int num5 = 20; if (drawinfo.drawPlayer.head == 238) { num4 += 4; num5 += 4; } Vector2 position = vector2 + new Vector2((float) (-drawinfo.drawPlayer.direction * num4), (float) ((double) -num5 * (double) drawinfo.drawPlayer.gravDir + (double) num2 * (double) drawinfo.drawPlayer.gravDir)); DrawData drawData = new DrawData(texture2D, position, new Rectangle?(), color1, drawinfo.drawPlayer.bodyRotation, texture2D.Size() / 2f, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cBody; drawinfo.DrawDataCache.Add(drawData); for (float num6 = 0.0f; (double) num6 < 4.0; ++num6) { drawData = new DrawData(texture, position + (num6 * 1.570796f).ToRotationVector2() * num3, new Rectangle?(), color2, drawinfo.drawPlayer.bodyRotation, texture2D.Size() / 2f, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } } public static void DrawPlayer_01_3_BackHead(ref PlayerDrawSet drawinfo) { if (drawinfo.drawPlayer.head < 0 || drawinfo.drawPlayer.head >= 266) return; int index = ArmorIDs.Head.Sets.FrontToBackID[drawinfo.drawPlayer.head]; if (index < 0) return; Vector2 helmetOffset = drawinfo.helmetOffset; drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.ArmorHead[index].Value, helmetOffset + new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.cHead }); } public static void DrawPlayer_01_2_JimsCloak(ref PlayerDrawSet drawinfo) { if (drawinfo.drawPlayer.legs != 60 || drawinfo.isSitting || drawinfo.drawPlayer.invis || PlayerDrawLayers.ShouldOverrideLegs_CheckShoes(ref drawinfo) && !drawinfo.drawPlayer.wearsRobe) return; drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Extra[153].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.legFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.legFrame.Height + 4.0)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, new Rectangle?(drawinfo.drawPlayer.legFrame), drawinfo.colorArmorLegs, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.cLegs }); } public static void DrawPlayer_05_2_SafemanSun(ref PlayerDrawSet drawinfo) { if (drawinfo.drawPlayer.head != 238 || (double) drawinfo.shadow != 0.0) return; Color color1 = Color.Lerp(drawinfo.colorArmorBody, Color.White, 0.7f); Texture2D texture2D = TextureAssets.Extra[152].Value; Texture2D texture = TextureAssets.Extra[152].Value; int num1 = (int) ((double) ((float) ((double) drawinfo.drawPlayer.miscCounter / 300.0 * 6.28318548202515)).ToRotationVector2().Y * 6.0); float num2 = ((float) ((double) drawinfo.drawPlayer.miscCounter / 75.0 * 6.28318548202515)).ToRotationVector2().X * 4f; Color color2 = new Color(80, 70, 40, 0) * (float) ((double) num2 / 8.0 + 0.5) * 0.8f; Vector2 vector2 = new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)); int num3 = 8; int num4 = 20; int num5 = num3 + 4; int num6 = num4 + 4; Vector2 position = vector2 + new Vector2((float) (-drawinfo.drawPlayer.direction * num5), (float) ((double) -num6 * (double) drawinfo.drawPlayer.gravDir + (double) num1 * (double) drawinfo.drawPlayer.gravDir)); DrawData drawData = new DrawData(texture2D, position, new Rectangle?(), color1, drawinfo.drawPlayer.bodyRotation, texture2D.Size() / 2f, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cHead; drawinfo.DrawDataCache.Add(drawData); for (float num7 = 0.0f; (double) num7 < 4.0; ++num7) { drawData = new DrawData(texture, position + (num7 * 1.570796f).ToRotationVector2() * num2, new Rectangle?(), color2, drawinfo.drawPlayer.bodyRotation, texture2D.Size() / 2f, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cHead; drawinfo.DrawDataCache.Add(drawData); } } public static void DrawPlayer_06_WebbedDebuffBack(ref PlayerDrawSet drawinfo) { if (!drawinfo.drawPlayer.webbed || (double) drawinfo.shadow != 0.0 || (double) drawinfo.drawPlayer.velocity.Y == 0.0) return; Color color = drawinfo.colorArmorBody * 0.75f; Texture2D texture2D = TextureAssets.Extra[32].Value; DrawData drawData = new DrawData(texture2D, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(), color, drawinfo.drawPlayer.bodyRotation, texture2D.Size() / 2f, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } public static void DrawPlayer_07_LeinforsHairShampoo(ref PlayerDrawSet drawinfo) { if (!drawinfo.drawPlayer.leinforsHair || !drawinfo.fullHair && !drawinfo.hatHair && drawinfo.drawPlayer.head != -1 && drawinfo.drawPlayer.head != 0 || drawinfo.drawPlayer.hair == 12 || (double) drawinfo.shadow != 0.0 || (double) Main.rgbToHsl(drawinfo.colorHead).Z <= 0.200000002980232) return; if (Main.rand.Next(20) == 0 && !drawinfo.hatHair) { Rectangle r = Utils.CenteredRectangle(drawinfo.Position + drawinfo.drawPlayer.Size / 2f + new Vector2(0.0f, drawinfo.drawPlayer.gravDir * -20f), new Vector2(20f, 14f)); int index = Dust.NewDust(r.TopLeft(), r.Width, r.Height, 204, Alpha: 150, Scale: 0.3f); Main.dust[index].fadeIn = 1f; Main.dust[index].velocity *= 0.1f; Main.dust[index].noLight = true; Main.dust[index].shader = GameShaders.Armor.GetSecondaryShader(drawinfo.drawPlayer.cLeinShampoo, drawinfo.drawPlayer); drawinfo.DustCache.Add(index); } if (Main.rand.Next(40) == 0 && drawinfo.hatHair) { Rectangle r = Utils.CenteredRectangle(drawinfo.Position + drawinfo.drawPlayer.Size / 2f + new Vector2((float) (drawinfo.drawPlayer.direction * -10), drawinfo.drawPlayer.gravDir * -10f), new Vector2(5f, 5f)); int index = Dust.NewDust(r.TopLeft(), r.Width, r.Height, 204, Alpha: 150, Scale: 0.3f); Main.dust[index].fadeIn = 1f; Main.dust[index].velocity *= 0.1f; Main.dust[index].noLight = true; Main.dust[index].shader = GameShaders.Armor.GetSecondaryShader(drawinfo.drawPlayer.cLeinShampoo, drawinfo.drawPlayer); drawinfo.DustCache.Add(index); } if ((double) drawinfo.drawPlayer.velocity.X == 0.0 || !drawinfo.backHairDraw || Main.rand.Next(15) != 0) return; Rectangle r1 = Utils.CenteredRectangle(drawinfo.Position + drawinfo.drawPlayer.Size / 2f + new Vector2((float) (drawinfo.drawPlayer.direction * -14), 0.0f), new Vector2(4f, 30f)); int index1 = Dust.NewDust(r1.TopLeft(), r1.Width, r1.Height, 204, Alpha: 150, Scale: 0.3f); Main.dust[index1].fadeIn = 1f; Main.dust[index1].velocity *= 0.1f; Main.dust[index1].noLight = true; Main.dust[index1].shader = GameShaders.Armor.GetSecondaryShader(drawinfo.drawPlayer.cLeinShampoo, drawinfo.drawPlayer); drawinfo.DustCache.Add(index1); } public static void DrawPlayer_08_Backpacks(ref PlayerDrawSet drawinfo) { drawinfo.backPack = false; if (drawinfo.drawPlayer.wings != 0 && (double) drawinfo.drawPlayer.velocity.Y != 0.0 || drawinfo.heldItem.type != 1178 && drawinfo.heldItem.type != 779 && drawinfo.heldItem.type != 1295 && drawinfo.heldItem.type != 1910 && !drawinfo.drawPlayer.turtleArmor && drawinfo.drawPlayer.body != 106 && drawinfo.drawPlayer.body != 170 && (drawinfo.heldItem.type != 4818 || drawinfo.drawPlayer.ownedProjectileCounts[902] != 0)) return; drawinfo.backPack = true; int type = drawinfo.heldItem.type; int index = 1; float num1 = -4f; float num2 = -8f; int num3 = 0; if (drawinfo.drawPlayer.turtleArmor) { index = 4; num3 = drawinfo.cBody; } else if (drawinfo.drawPlayer.body == 106) { index = 6; num3 = drawinfo.cBody; } else if (drawinfo.drawPlayer.body == 170) { index = 7; num3 = drawinfo.cBody; } else { switch (type) { case 779: index = 2; break; case 1178: index = 1; break; case 1295: index = 3; break; case 1910: index = 5; break; case 4818: index = 8; break; } } Vector2 vector2 = new Vector2(0.0f, 8f); Vector2 position1 = (drawinfo.Position - Main.screenPosition + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.width / 2), (float) (drawinfo.drawPlayer.height - drawinfo.drawPlayer.bodyFrame.Height / 2)) + new Vector2(0.0f, -4f) + vector2).Floor(); Vector2 position2 = (drawinfo.Position - Main.screenPosition + new Vector2((float) (drawinfo.drawPlayer.width / 2), (float) (drawinfo.drawPlayer.height - drawinfo.drawPlayer.bodyFrame.Height / 2)) + new Vector2((num1 - 9f) * (float) drawinfo.drawPlayer.direction, (2f + num2) * drawinfo.drawPlayer.gravDir) + vector2).Floor(); switch (index) { case 4: case 6: drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.BackPack[index].Value, position1, new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0) { shader = num3 }); break; case 7: drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.BackPack[index].Value, position1, new Rectangle?(new Rectangle(0, drawinfo.drawPlayer.bodyFrame.Y, TextureAssets.BackPack[index].Width(), drawinfo.drawPlayer.bodyFrame.Height)), drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, new Vector2((float) TextureAssets.BackPack[index].Width() * 0.5f, drawinfo.bodyVect.Y), 1f, drawinfo.playerEffect, 0) { shader = num3 }); break; case 8: drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.BackPack[index].Value, position1, new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0) { shader = num3 }); break; default: drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.BackPack[index].Value, position2, new Rectangle?(new Rectangle(0, 0, TextureAssets.BackPack[index].Width(), TextureAssets.BackPack[index].Height())), drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.BackPack[index].Width() / 2), (float) (TextureAssets.BackPack[index].Height() / 2)), 1f, drawinfo.playerEffect, 0) { shader = num3 }); break; } } public static void DrawPlayer_09_BackAc(ref PlayerDrawSet drawinfo) { if (drawinfo.backPack || drawinfo.drawPlayer.back <= (sbyte) 0 || drawinfo.drawPlayer.back >= (sbyte) 30 || drawinfo.drawPlayer.mount.Active) return; if (drawinfo.drawPlayer.front >= (sbyte) 1 && drawinfo.drawPlayer.front <= (sbyte) 4) { int num = drawinfo.drawPlayer.bodyFrame.Y / 56; if (num < 1 || num > 5) { drawinfo.armorAdjust = 10; } else { if (drawinfo.drawPlayer.front == (sbyte) 1) drawinfo.armorAdjust = 0; if (drawinfo.drawPlayer.front == (sbyte) 2) drawinfo.armorAdjust = 8; if (drawinfo.drawPlayer.front == (sbyte) 3) drawinfo.armorAdjust = 0; if (drawinfo.drawPlayer.front == (sbyte) 4) drawinfo.armorAdjust = 8; } } Vector2 zero = Vector2.Zero; Vector2 vector2 = new Vector2(0.0f, 8f); Vector2 position1 = drawinfo.Position; Vector2 position2 = (zero + position1 - Main.screenPosition + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.width / 2), (float) (drawinfo.drawPlayer.height - drawinfo.drawPlayer.bodyFrame.Height / 2)) + new Vector2(0.0f, -4f) + vector2).Floor(); drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.AccBack[(int) drawinfo.drawPlayer.back].Value, position2, new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.cBack }); } public static void DrawPlayer_10_Wings(ref PlayerDrawSet drawinfo) { Vector2 directions = drawinfo.drawPlayer.Directions; Vector2 vector2_1 = drawinfo.Position - Main.screenPosition + drawinfo.drawPlayer.Size / 2f; Vector2 vector2_2 = new Vector2(0.0f, 7f); Vector2 commonWingPosPreFloor = drawinfo.Position - Main.screenPosition + new Vector2((float) (drawinfo.drawPlayer.width / 2), (float) (drawinfo.drawPlayer.height - drawinfo.drawPlayer.bodyFrame.Height / 2)) + vector2_2; if (drawinfo.backPack || drawinfo.drawPlayer.wings <= 0) return; Main.instance.LoadWings(drawinfo.drawPlayer.wings); if (drawinfo.drawPlayer.wings == 22) { if (!drawinfo.drawPlayer.ShouldDrawWingsThatAreAlwaysAnimated()) return; Main.instance.LoadItemFlames(1866); Color colorArmorBody = drawinfo.colorArmorBody; int num1 = 26; int num2 = -9; Vector2 vec = commonWingPosPreFloor + new Vector2((float) num2, (float) num1) * directions; DrawData drawData; if ((double) drawinfo.shadow == 0.0 && drawinfo.drawPlayer.grappling[0] == -1) { for (int index = 0; index < 7; ++index) { Color color = new Color(250 - index * 10, 250 - index * 10, 250 - index * 10, 150 - index * 10); Vector2 vector2_3 = new Vector2((float) Main.rand.Next(-10, 11) * 0.2f, (float) Main.rand.Next(-10, 11) * 0.2f); drawinfo.stealth *= drawinfo.stealth; drawinfo.stealth *= 1f - drawinfo.shadow; color = new Color((int) ((double) color.R * (double) drawinfo.stealth), (int) ((double) color.G * (double) drawinfo.stealth), (int) ((double) color.B * (double) drawinfo.stealth), (int) ((double) color.A * (double) drawinfo.stealth)); vector2_3.X = drawinfo.drawPlayer.itemFlamePos[index].X; vector2_3.Y = -drawinfo.drawPlayer.itemFlamePos[index].Y; vector2_3 *= 0.5f; Vector2 position = (vec + vector2_3).Floor(); drawData = new DrawData(TextureAssets.ItemFlame[1866].Value, position, new Rectangle?(new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 7 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 7 - 2)), color, drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2), (float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 14)), 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); } } drawData = new DrawData(TextureAssets.Wings[drawinfo.drawPlayer.wings].Value, vec.Floor(), new Rectangle?(new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 7 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 7)), colorArmorBody, drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2), (float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 14)), 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); } else if (drawinfo.drawPlayer.wings == 28) { if (!drawinfo.drawPlayer.ShouldDrawWingsThatAreAlwaysAnimated()) return; Color colorArmorBody = drawinfo.colorArmorBody; Vector2 vector2_4 = new Vector2(0.0f, 0.0f); Texture2D texture2D = TextureAssets.Wings[drawinfo.drawPlayer.wings].Value; Vector2 vec = drawinfo.Position + drawinfo.drawPlayer.Size * new Vector2(0.5f, 1f) - Main.screenPosition + vector2_4 * drawinfo.drawPlayer.Directions; Rectangle r = texture2D.Frame(verticalFrames: 4, frameY: (drawinfo.drawPlayer.miscCounter / 5 % 4)); r.Width -= 2; r.Height -= 2; DrawData drawData = new DrawData(texture2D, vec.Floor(), new Rectangle?(r), Color.Lerp(colorArmorBody, Color.White, 1f), drawinfo.drawPlayer.bodyRotation, r.Size() / 2f, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); drawData = new DrawData(TextureAssets.Extra[38].Value, vec.Floor(), new Rectangle?(r), Color.Lerp(colorArmorBody, Color.White, 0.5f), drawinfo.drawPlayer.bodyRotation, r.Size() / 2f, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); } else if (drawinfo.drawPlayer.wings == 45) { if (!drawinfo.drawPlayer.ShouldDrawWingsThatAreAlwaysAnimated()) return; PlayerDrawLayers.DrawStarboardRainbowTrail(ref drawinfo, commonWingPosPreFloor, directions); Color color1 = new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue); int num3 = 22; int num4 = 0; Vector2 vec = commonWingPosPreFloor + new Vector2((float) num4, (float) num3) * directions; double num5 = 1.0 - (double) drawinfo.shadow; Color color2 = color1 * (float) num5; DrawData drawData = new DrawData(TextureAssets.Wings[drawinfo.drawPlayer.wings].Value, vec.Floor(), new Rectangle?(new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 6 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 6)), color2, drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2), (float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 12)), 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); if ((double) drawinfo.shadow != 0.0) return; float num6 = ((float) ((double) drawinfo.drawPlayer.miscCounter / 75.0 * 6.28318548202515)).ToRotationVector2().X * 4f; Color color3 = new Color(70, 70, 70, 0) * (float) ((double) num6 / 8.0 + 0.5) * 0.4f; for (float f = 0.0f; (double) f < 6.28318548202515; f += 1.570796f) { drawData = new DrawData(TextureAssets.Wings[drawinfo.drawPlayer.wings].Value, vec.Floor() + f.ToRotationVector2() * num6, new Rectangle?(new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 6 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 6)), color3, drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2), (float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 12)), 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); } } else if (drawinfo.drawPlayer.wings == 34) { if (!drawinfo.drawPlayer.ShouldDrawWingsThatAreAlwaysAnimated()) return; drawinfo.stealth *= drawinfo.stealth; drawinfo.stealth *= 1f - drawinfo.shadow; Color color = new Color((int) (250.0 * (double) drawinfo.stealth), (int) (250.0 * (double) drawinfo.stealth), (int) (250.0 * (double) drawinfo.stealth), (int) (100.0 * (double) drawinfo.stealth)); Vector2 vector2_5 = new Vector2(0.0f, 0.0f); Texture2D texture2D = TextureAssets.Wings[drawinfo.drawPlayer.wings].Value; Vector2 vec = drawinfo.Position + drawinfo.drawPlayer.Size / 2f - Main.screenPosition + vector2_5 * drawinfo.drawPlayer.Directions - Vector2.UnitX * (float) drawinfo.drawPlayer.direction * 4f; Rectangle r = texture2D.Frame(verticalFrames: 6, frameY: drawinfo.drawPlayer.wingFrame); r.Width -= 2; r.Height -= 2; drawinfo.DrawDataCache.Add(new DrawData(texture2D, vec.Floor(), new Rectangle?(r), color, drawinfo.drawPlayer.bodyRotation, r.Size() / 2f, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.cWings }); } else if (drawinfo.drawPlayer.wings == 40) { drawinfo.stealth *= drawinfo.stealth; drawinfo.stealth *= 1f - drawinfo.shadow; Color color = new Color((int) (250.0 * (double) drawinfo.stealth), (int) (250.0 * (double) drawinfo.stealth), (int) (250.0 * (double) drawinfo.stealth), (int) (100.0 * (double) drawinfo.stealth)); Vector2 vector2_6 = new Vector2(-4f, 0.0f); Texture2D texture2D = TextureAssets.Wings[drawinfo.drawPlayer.wings].Value; Vector2 vector2_7 = commonWingPosPreFloor + vector2_6 * directions; for (int index = 0; index < 1; ++index) { SpriteEffects playerEffect = drawinfo.playerEffect; Vector2 scale = new Vector2(1f); Vector2 zero = Vector2.Zero; zero.X = (float) (drawinfo.drawPlayer.direction * 3); if (index == 1) { playerEffect ^= SpriteEffects.FlipHorizontally; scale = new Vector2(0.7f, 1f); zero.X += (float) -drawinfo.drawPlayer.direction * 6f; } Vector2 vector2_8 = drawinfo.drawPlayer.velocity * -1.5f; int num7 = 0; int num8 = 8; float num9 = 4f; if ((double) drawinfo.drawPlayer.velocity.Y == 0.0) { num7 = 8; num8 = 14; num9 = 3f; } for (int frameY = num7; frameY < num8; ++frameY) { Vector2 vector2_9 = vector2_7; Rectangle r = texture2D.Frame(verticalFrames: 14, frameY: frameY); r.Width -= 2; r.Height -= 2; int num10 = (frameY - num7) % (int) num9; Vector2 vector2_10 = new Vector2(0.0f, 0.5f).RotatedBy(((double) drawinfo.drawPlayer.miscCounterNormalized * (2.0 + (double) num10) + (double) num10 * 0.5 + (double) index * 1.29999995231628) * 6.28318548202515) * (float) (num10 + 1); Vector2 vec = vector2_9 + vector2_10 + vector2_8 * ((float) num10 / num9) + zero; drawinfo.DrawDataCache.Add(new DrawData(texture2D, vec.Floor(), new Rectangle?(r), color, drawinfo.drawPlayer.bodyRotation, r.Size() / 2f, scale, playerEffect, 0) { shader = drawinfo.cWings }); } } } else if (drawinfo.drawPlayer.wings == 39) { if (!drawinfo.drawPlayer.ShouldDrawWingsThatAreAlwaysAnimated()) return; drawinfo.stealth *= drawinfo.stealth; drawinfo.stealth *= 1f - drawinfo.shadow; Color colorArmorBody = drawinfo.colorArmorBody; Vector2 vector2_11 = new Vector2(-6f, -7f); Texture2D texture2D = TextureAssets.Wings[drawinfo.drawPlayer.wings].Value; Vector2 vec = commonWingPosPreFloor + vector2_11 * directions; Rectangle r = texture2D.Frame(verticalFrames: 6, frameY: drawinfo.drawPlayer.wingFrame); r.Width -= 2; r.Height -= 2; drawinfo.DrawDataCache.Add(new DrawData(texture2D, vec.Floor(), new Rectangle?(r), colorArmorBody, drawinfo.drawPlayer.bodyRotation, r.Size() / 2f, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.cWings }); } else { int num11 = 0; int num12 = 0; int num13 = 4; if (drawinfo.drawPlayer.wings == 43) { num12 = -5; num11 = -7; num13 = 7; } else if (drawinfo.drawPlayer.wings == 44) num13 = 7; else if (drawinfo.drawPlayer.wings == 5) { num12 = 4; num11 -= 4; } else if (drawinfo.drawPlayer.wings == 27) num12 = 4; Color color4 = drawinfo.colorArmorBody; if (drawinfo.drawPlayer.wings == 9 || drawinfo.drawPlayer.wings == 29) { drawinfo.stealth *= drawinfo.stealth; drawinfo.stealth *= 1f - drawinfo.shadow; color4 = new Color((int) (250.0 * (double) drawinfo.stealth), (int) (250.0 * (double) drawinfo.stealth), (int) (250.0 * (double) drawinfo.stealth), (int) (100.0 * (double) drawinfo.stealth)); } if (drawinfo.drawPlayer.wings == 10) { drawinfo.stealth *= drawinfo.stealth; drawinfo.stealth *= 1f - drawinfo.shadow; color4 = new Color((int) (250.0 * (double) drawinfo.stealth), (int) (250.0 * (double) drawinfo.stealth), (int) (250.0 * (double) drawinfo.stealth), (int) (175.0 * (double) drawinfo.stealth)); } if (drawinfo.drawPlayer.wings == 11 && (int) color4.A > (int) Main.gFade) color4.A = Main.gFade; if (drawinfo.drawPlayer.wings == 31) color4.A = (byte) (220.0 * (double) drawinfo.stealth); if (drawinfo.drawPlayer.wings == 32) color4.A = (byte) ((double) sbyte.MaxValue * (double) drawinfo.stealth); if (drawinfo.drawPlayer.wings == 6) { color4.A = (byte) (160.0 * (double) drawinfo.stealth); color4 *= 0.9f; } Vector2 vec = commonWingPosPreFloor + new Vector2((float) (num12 - 9), (float) (num11 + 2)) * directions; DrawData drawData = new DrawData(TextureAssets.Wings[drawinfo.drawPlayer.wings].Value, vec.Floor(), new Rectangle?(new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / num13 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / num13)), color4, drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2), (float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / num13 / 2)), 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); if (drawinfo.drawPlayer.wings == 43 && (double) drawinfo.shadow == 0.0) { Vector2 vector2_12 = vec; Vector2 origin = new Vector2((float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2), (float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / num13 / 2)); Rectangle rectangle = new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / num13 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / num13); for (int index = 0; index < 2; ++index) { Vector2 vector2_13 = new Vector2((float) Main.rand.Next(-10, 10) * 0.125f, (float) Main.rand.Next(-10, 10) * 0.125f); drawData = new DrawData(TextureAssets.GlowMask[272].Value, vector2_12 + vector2_13, new Rectangle?(rectangle), new Color(230, 230, 230, 60), drawinfo.drawPlayer.bodyRotation, origin, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); } } if (drawinfo.drawPlayer.wings == 23) { drawinfo.stealth *= drawinfo.stealth; drawinfo.stealth *= 1f - drawinfo.shadow; color4 = new Color((int) (200.0 * (double) drawinfo.stealth), (int) (200.0 * (double) drawinfo.stealth), (int) (200.0 * (double) drawinfo.stealth), (int) (200.0 * (double) drawinfo.stealth)); drawData = new DrawData(TextureAssets.Flames[8].Value, vec.Floor(), new Rectangle?(new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4)), color4, drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2), (float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8)), 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); } else if (drawinfo.drawPlayer.wings == 27) { drawData = new DrawData(TextureAssets.GlowMask[92].Value, vec.Floor(), new Rectangle?(new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4)), new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue) * drawinfo.stealth * (1f - drawinfo.shadow), drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2), (float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8)), 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); } else if (drawinfo.drawPlayer.wings == 44) { PlayerRainbowWingsTextureContent playerRainbowWings = TextureAssets.RenderTargets.PlayerRainbowWings; playerRainbowWings.Request(); if (!playerRainbowWings.IsReady) return; drawData = new DrawData((Texture2D) playerRainbowWings.GetTarget(), vec.Floor(), new Rectangle?(new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 7 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 7)), new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue) * drawinfo.stealth * (1f - drawinfo.shadow), drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2), (float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 14)), 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); } else if (drawinfo.drawPlayer.wings == 30) { drawData = new DrawData(TextureAssets.GlowMask[181].Value, vec.Floor(), new Rectangle?(new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4)), new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue) * drawinfo.stealth * (1f - drawinfo.shadow), drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2), (float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8)), 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); } else if (drawinfo.drawPlayer.wings == 38) { Color color5 = drawinfo.ArkhalisColor * drawinfo.stealth * (1f - drawinfo.shadow); drawData = new DrawData(TextureAssets.GlowMask[251].Value, vec.Floor(), new Rectangle?(new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4)), color5, drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2), (float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8)), 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); for (int index = drawinfo.drawPlayer.shadowPos.Length - 2; index >= 0; --index) { Color color6 = color5; color6.A = (byte) 0; Color color7 = color6 * MathHelper.Lerp(1f, 0.0f, (float) index / 3f) * 0.1f; Vector2 vector2_14 = drawinfo.drawPlayer.shadowPos[index] - drawinfo.drawPlayer.position; for (float num14 = 0.0f; (double) num14 < 1.0; num14 += 0.01f) { Vector2 vector2_15 = new Vector2(2f, 0.0f).RotatedBy((double) num14 / 0.0399999991059303 * 6.28318548202515); drawData = new DrawData(TextureAssets.GlowMask[251].Value, vector2_15 + vector2_14 * num14 + vec, new Rectangle?(new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4)), color7 * (1f - num14), drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2), (float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8)), 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); } } } else if (drawinfo.drawPlayer.wings == 29) { drawData = new DrawData(TextureAssets.Wings[drawinfo.drawPlayer.wings].Value, vec.Floor(), new Rectangle?(new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4)), new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0) * drawinfo.stealth * (1f - drawinfo.shadow) * 0.5f, drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2), (float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8)), 1.06f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); } else if (drawinfo.drawPlayer.wings == 36) { drawData = new DrawData(TextureAssets.GlowMask[213].Value, vec.Floor(), new Rectangle?(new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4)), new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0) * drawinfo.stealth * (1f - drawinfo.shadow), drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2), (float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8)), 1.06f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); Vector2 spinningpoint = new Vector2(0.0f, (float) (2.0 - (double) drawinfo.shadow * 2.0)); for (int index = 0; index < 4; ++index) { drawData = new DrawData(TextureAssets.GlowMask[213].Value, spinningpoint.RotatedBy(1.57079637050629 * (double) index) + vec.Floor(), new Rectangle?(new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4)), new Color((int) sbyte.MaxValue, (int) sbyte.MaxValue, (int) sbyte.MaxValue, (int) sbyte.MaxValue) * drawinfo.stealth * (1f - drawinfo.shadow), drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2), (float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8)), 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); } } else if (drawinfo.drawPlayer.wings == 31) { Color color8 = new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0); Color color9 = Color.Lerp(Color.HotPink, Color.Crimson, (float) (Math.Cos(6.28318548202515 * ((double) drawinfo.drawPlayer.miscCounter / 100.0)) * 0.400000005960464 + 0.5)); color9.A = (byte) 0; for (int index = 0; index < 4; ++index) { Vector2 vector2_16 = new Vector2((float) (Math.Cos(6.28318548202515 * ((double) drawinfo.drawPlayer.miscCounter / 60.0)) * 0.5 + 0.5), 0.0f).RotatedBy((double) index * 1.57079637050629) * 1f; drawData = new DrawData(TextureAssets.Wings[drawinfo.drawPlayer.wings].Value, vec.Floor() + vector2_16, new Rectangle?(new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4)), color9 * drawinfo.stealth * (1f - drawinfo.shadow) * 0.5f, drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2), (float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8)), 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); } drawData = new DrawData(TextureAssets.Wings[drawinfo.drawPlayer.wings].Value, vec.Floor(), new Rectangle?(new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4)), color9 * drawinfo.stealth * (1f - drawinfo.shadow) * 1f, drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2), (float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8)), 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); } else { if (drawinfo.drawPlayer.wings != 32) return; drawData = new DrawData(TextureAssets.GlowMask[183].Value, vec.Floor(), new Rectangle?(new Rectangle(0, TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4 * drawinfo.drawPlayer.wingFrame, TextureAssets.Wings[drawinfo.drawPlayer.wings].Width(), TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 4)), new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0) * drawinfo.stealth * (1f - drawinfo.shadow), drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Width() / 2), (float) (TextureAssets.Wings[drawinfo.drawPlayer.wings].Height() / 8)), 1.06f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); } } } public static void DrawPlayer_11_Balloons(ref PlayerDrawSet drawinfo) { if (drawinfo.drawPlayer.balloon <= (sbyte) 0) return; int num = !Main.hasFocus || Main.ingameOptionsWindow && Main.autoPause ? 0 : DateTime.Now.Millisecond % 800 / 200; Vector2 vector2_1 = Main.OffsetsPlayerOffhand[drawinfo.drawPlayer.bodyFrame.Y / 56]; if (drawinfo.drawPlayer.direction != 1) vector2_1.X = (float) drawinfo.drawPlayer.width - vector2_1.X; if ((double) drawinfo.drawPlayer.gravDir != 1.0) vector2_1.Y -= (float) drawinfo.drawPlayer.height; Vector2 vector2_2 = new Vector2(0.0f, 8f) + new Vector2(0.0f, 6f); Vector2 vector2_3 = new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X + (double) vector2_1.X), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) vector2_1.Y * (double) drawinfo.drawPlayer.gravDir)); vector2_3 = drawinfo.Position - Main.screenPosition + vector2_1 * new Vector2(1f, drawinfo.drawPlayer.gravDir) + new Vector2(0.0f, (float) (drawinfo.drawPlayer.height - drawinfo.drawPlayer.bodyFrame.Height)) + vector2_2; vector2_3 = vector2_3.Floor(); drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.AccBalloon[(int) drawinfo.drawPlayer.balloon].Value, vector2_3, new Rectangle?(new Rectangle(0, TextureAssets.AccBalloon[(int) drawinfo.drawPlayer.balloon].Height() / 4 * num, TextureAssets.AccBalloon[(int) drawinfo.drawPlayer.balloon].Width(), TextureAssets.AccBalloon[(int) drawinfo.drawPlayer.balloon].Height() / 4)), drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, new Vector2((float) (26 + drawinfo.drawPlayer.direction * 4), (float) (28.0 + (double) drawinfo.drawPlayer.gravDir * 6.0)), 1f, drawinfo.playerEffect, 0) { shader = drawinfo.cBalloon }); } public static void DrawPlayer_12_Skin(ref PlayerDrawSet drawinfo) { if (drawinfo.usesCompositeTorso) { PlayerDrawLayers.DrawPlayer_12_Skin_Composite(ref drawinfo); } else { if (drawinfo.isSitting) drawinfo.hidesBottomSkin = true; DrawData drawData; if (!drawinfo.hidesTopSkin) { drawinfo.Position.Y += drawinfo.torsoOffset; drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 3].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorBodySkin, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.skinDyePacked }; drawinfo.DrawDataCache.Add(drawData); drawinfo.Position.Y -= drawinfo.torsoOffset; } if (drawinfo.hidesBottomSkin || PlayerDrawLayers.IsBottomOverridden(ref drawinfo)) return; if (drawinfo.isSitting) { PlayerDrawLayers.DrawSittingLegs(ref drawinfo, TextureAssets.Players[drawinfo.skinVar, 10].Value, drawinfo.colorLegs); } else { drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 10].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(drawinfo.drawPlayer.legFrame), drawinfo.colorLegs, drawinfo.drawPlayer.legRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } } } public static bool IsBottomOverridden(ref PlayerDrawSet drawinfo) => PlayerDrawLayers.ShouldOverrideLegs_CheckPants(ref drawinfo) || PlayerDrawLayers.ShouldOverrideLegs_CheckShoes(ref drawinfo); public static bool ShouldOverrideLegs_CheckPants(ref PlayerDrawSet drawinfo) { switch (drawinfo.drawPlayer.legs) { case 67: case 106: case 138: case 140: case 143: case 217: return true; default: return false; } } public static bool ShouldOverrideLegs_CheckShoes(ref PlayerDrawSet drawinfo) => drawinfo.drawPlayer.shoe == (sbyte) 15; public static void DrawPlayer_12_Skin_Composite(ref PlayerDrawSet drawinfo) { DrawData drawData1; if (!drawinfo.hidesTopSkin && !drawinfo.drawPlayer.invis) { Vector2 vector2_1 = new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)); vector2_1.Y += drawinfo.torsoOffset; Vector2 vector2_2 = Main.OffsetsPlayerHeadgear[drawinfo.drawPlayer.bodyFrame.Y / drawinfo.drawPlayer.bodyFrame.Height]; vector2_2.Y -= 2f; Vector2 position = vector2_1 + vector2_2; float bodyRotation = drawinfo.drawPlayer.bodyRotation; Vector2 vector2_3 = position; Vector2 vector2_4 = position; Vector2 bodyVect1 = drawinfo.bodyVect; Vector2 bodyVect2 = drawinfo.bodyVect; Vector2 compositeOffsetBackArm = PlayerDrawLayers.GetCompositeOffset_BackArm(ref drawinfo); Vector2 vector2_5 = vector2_3 + compositeOffsetBackArm; Vector2 vector2_6 = compositeOffsetBackArm; Vector2 vector2_7 = bodyVect1 + vector2_6; Vector2 compositeOffsetFrontArm = PlayerDrawLayers.GetCompositeOffset_FrontArm(ref drawinfo); Vector2 vector2_8 = bodyVect2 + compositeOffsetFrontArm; Vector2 vector2_9 = compositeOffsetFrontArm; Vector2 vector2_10 = vector2_4 + vector2_9; if (drawinfo.drawFloatingTube) { List drawDataCache = drawinfo.DrawDataCache; drawData1 = new DrawData(TextureAssets.Extra[105].Value, position, new Rectangle?(new Rectangle(0, 0, 40, 56)), drawinfo.floatingTubeColor, bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.cFloatingTube; DrawData drawData2 = drawData1; drawDataCache.Add(drawData2); } List drawDataCache1 = drawinfo.DrawDataCache; drawData1 = new DrawData(TextureAssets.Players[drawinfo.skinVar, 3].Value, position, new Rectangle?(drawinfo.compTorsoFrame), drawinfo.colorBodySkin, bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.skinDyePacked; DrawData drawData3 = drawData1; drawDataCache1.Add(drawData3); } if (!drawinfo.hidesBottomSkin && !drawinfo.drawPlayer.invis && !PlayerDrawLayers.IsBottomOverridden(ref drawinfo)) { if (drawinfo.isSitting) { PlayerDrawLayers.DrawSittingLegs(ref drawinfo, TextureAssets.Players[drawinfo.skinVar, 10].Value, drawinfo.colorLegs, drawinfo.skinDyePacked); } else { drawData1 = new DrawData(TextureAssets.Players[drawinfo.skinVar, 10].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(drawinfo.drawPlayer.legFrame), drawinfo.colorLegs, drawinfo.drawPlayer.legRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.skinDyePacked; DrawData drawData4 = drawData1; drawinfo.DrawDataCache.Add(drawData4); } } PlayerDrawLayers.DrawPlayer_12_SkinComposite_BackArmShirt(ref drawinfo); } public static void DrawPlayer_12_SkinComposite_BackArmShirt(ref PlayerDrawSet drawinfo) { Vector2 vector2_1 = new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)); Vector2 vector2_2 = Main.OffsetsPlayerHeadgear[drawinfo.drawPlayer.bodyFrame.Y / drawinfo.drawPlayer.bodyFrame.Height]; vector2_2.Y -= 2f; Vector2 vector2_3 = vector2_1 + vector2_2 * (float) -drawinfo.playerEffect.HasFlag((Enum) SpriteEffects.FlipVertically).ToDirectionInt(); vector2_3.Y += drawinfo.torsoOffset; float bodyRotation = drawinfo.drawPlayer.bodyRotation; Vector2 vector2_4 = vector2_3; Vector2 vector2_5 = vector2_3; Vector2 bodyVect = drawinfo.bodyVect; Vector2 compositeOffsetBackArm = PlayerDrawLayers.GetCompositeOffset_BackArm(ref drawinfo); Vector2 position1 = vector2_4 + compositeOffsetBackArm; Vector2 position2 = vector2_5 + drawinfo.backShoulderOffset; Vector2 origin1 = bodyVect + compositeOffsetBackArm; float rotation = bodyRotation + drawinfo.compositeBackArmRotation; bool flag1 = !drawinfo.drawPlayer.invis; bool flag2 = !drawinfo.drawPlayer.invis; bool flag3 = drawinfo.drawPlayer.body > 0 && drawinfo.drawPlayer.body < 235; bool flag4 = !drawinfo.hidesTopSkin; bool flag5 = false; DrawData drawData1; if (flag3) { flag1 &= drawinfo.missingHand; if (flag2 && drawinfo.missingArm) { if (flag4) { List drawDataCache = drawinfo.DrawDataCache; drawData1 = new DrawData(TextureAssets.Players[drawinfo.skinVar, 7].Value, position1, new Rectangle?(drawinfo.compBackArmFrame), drawinfo.colorBodySkin, rotation, origin1, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.skinDyePacked; DrawData drawData2 = drawData1; drawDataCache.Add(drawData2); } if (!flag5 & flag4) { List drawDataCache = drawinfo.DrawDataCache; drawData1 = new DrawData(TextureAssets.Players[drawinfo.skinVar, 5].Value, position1, new Rectangle?(drawinfo.compBackArmFrame), drawinfo.colorBodySkin, rotation, origin1, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.skinDyePacked; DrawData drawData3 = drawData1; drawDataCache.Add(drawData3); flag5 = true; } flag2 = false; } if (!drawinfo.drawPlayer.invis || PlayerDrawLayers.IsArmorDrawnWhenInvisible(drawinfo.drawPlayer.body)) { Texture2D texture = TextureAssets.ArmorBodyComposite[drawinfo.drawPlayer.body].Value; if (!drawinfo.hideCompositeShoulders) { ref PlayerDrawSet local = ref drawinfo; drawData1 = new DrawData(texture, position2, new Rectangle?(drawinfo.compBackShoulderFrame), drawinfo.colorArmorBody, bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.cBody; DrawData data = drawData1; PlayerDrawLayers.DrawCompositeArmorPiece(ref local, CompositePlayerDrawContext.BackShoulder, data); } ref PlayerDrawSet local1 = ref drawinfo; drawData1 = new DrawData(texture, position1, new Rectangle?(drawinfo.compBackArmFrame), drawinfo.colorArmorBody, rotation, origin1, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.cBody; DrawData data1 = drawData1; PlayerDrawLayers.DrawCompositeArmorPiece(ref local1, CompositePlayerDrawContext.BackArm, data1); } } if (flag1) { if (flag4) { if (flag2) { List drawDataCache = drawinfo.DrawDataCache; drawData1 = new DrawData(TextureAssets.Players[drawinfo.skinVar, 7].Value, position1, new Rectangle?(drawinfo.compBackArmFrame), drawinfo.colorBodySkin, rotation, origin1, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.skinDyePacked; DrawData drawData4 = drawData1; drawDataCache.Add(drawData4); } if (!flag5 & flag4) { List drawDataCache = drawinfo.DrawDataCache; drawData1 = new DrawData(TextureAssets.Players[drawinfo.skinVar, 5].Value, position1, new Rectangle?(drawinfo.compBackArmFrame), drawinfo.colorBodySkin, rotation, origin1, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.skinDyePacked; DrawData drawData5 = drawData1; drawDataCache.Add(drawData5); } } if (!flag3) { drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 8].Value, position1, new Rectangle?(drawinfo.compBackArmFrame), drawinfo.colorUnderShirt, rotation, origin1, 1f, drawinfo.playerEffect, 0)); drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 13].Value, position1, new Rectangle?(drawinfo.compBackArmFrame), drawinfo.colorShirt, rotation, origin1, 1f, drawinfo.playerEffect, 0)); } } if (drawinfo.drawPlayer.handoff > (sbyte) 0 && drawinfo.drawPlayer.handoff < (sbyte) 14) { Texture2D texture = TextureAssets.AccHandsOffComposite[(int) drawinfo.drawPlayer.handoff].Value; ref PlayerDrawSet local = ref drawinfo; drawData1 = new DrawData(texture, position1, new Rectangle?(drawinfo.compBackArmFrame), drawinfo.colorArmorBody, rotation, origin1, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.cHandOff; DrawData data = drawData1; PlayerDrawLayers.DrawCompositeArmorPiece(ref local, CompositePlayerDrawContext.BackArmAccessory, data); } if (!drawinfo.drawPlayer.drawingFootball) return; Main.instance.LoadProjectile(861); Texture2D texture2D = TextureAssets.Projectile[861].Value; Rectangle r = texture2D.Frame(verticalFrames: 4); Vector2 origin2 = r.Size() / 2f; Vector2 position3 = position1 + new Vector2((float) (drawinfo.drawPlayer.direction * -2), drawinfo.drawPlayer.gravDir * 4f); drawinfo.DrawDataCache.Add(new DrawData(texture2D, position3, new Rectangle?(r), drawinfo.colorArmorBody, bodyRotation + 0.7853982f * (float) drawinfo.drawPlayer.direction, origin2, 0.8f, drawinfo.playerEffect, 0)); } public static void DrawPlayer_13_Leggings(ref PlayerDrawSet drawinfo) { if (drawinfo.isSitting && drawinfo.drawPlayer.legs != 140 && drawinfo.drawPlayer.legs != 217) { if (drawinfo.drawPlayer.legs > 0 && drawinfo.drawPlayer.legs < 218 && (!PlayerDrawLayers.ShouldOverrideLegs_CheckShoes(ref drawinfo) || drawinfo.drawPlayer.wearsRobe)) { if (drawinfo.drawPlayer.invis) return; PlayerDrawLayers.DrawSittingLegs(ref drawinfo, TextureAssets.ArmorLeg[drawinfo.drawPlayer.legs].Value, drawinfo.colorArmorLegs, drawinfo.cLegs); if (drawinfo.legsGlowMask == -1) return; PlayerDrawLayers.DrawSittingLegs(ref drawinfo, TextureAssets.GlowMask[drawinfo.legsGlowMask].Value, drawinfo.legsGlowColor, drawinfo.cLegs); } else { if (drawinfo.drawPlayer.invis || PlayerDrawLayers.ShouldOverrideLegs_CheckShoes(ref drawinfo)) return; PlayerDrawLayers.DrawSittingLegs(ref drawinfo, TextureAssets.Players[drawinfo.skinVar, 11].Value, drawinfo.colorPants); PlayerDrawLayers.DrawSittingLegs(ref drawinfo, TextureAssets.Players[drawinfo.skinVar, 12].Value, drawinfo.colorShoes); } } else if (drawinfo.drawPlayer.legs == 140) { if (drawinfo.drawPlayer.invis || drawinfo.drawPlayer.mount.Active) return; Texture2D texture = TextureAssets.Extra[73].Value; bool flag = drawinfo.drawPlayer.legFrame.Y != drawinfo.drawPlayer.legFrame.Height || Main.gameMenu; int num1 = drawinfo.drawPlayer.miscCounter / 3 % 8; if (flag) num1 = drawinfo.drawPlayer.miscCounter / 4 % 8; Rectangle r = new Rectangle(18 * flag.ToInt(), num1 * 26, 16, 24); float num2 = 12f; if (drawinfo.drawPlayer.bodyFrame.Height != 0) num2 = 12f - Main.OffsetsPlayerHeadgear[drawinfo.drawPlayer.bodyFrame.Y / drawinfo.drawPlayer.bodyFrame.Height].Y; Vector2 scale = new Vector2(1f, 1f); Vector2 vector2_1 = drawinfo.Position + drawinfo.drawPlayer.Size * new Vector2(0.5f, (float) (0.5 + 0.5 * (double) drawinfo.drawPlayer.gravDir)); int direction = drawinfo.drawPlayer.direction; Vector2 vector2_2 = new Vector2(0.0f, -num2 * drawinfo.drawPlayer.gravDir); Vector2 vec = vector2_1 + vector2_2 - Main.screenPosition + drawinfo.drawPlayer.legPosition; if (drawinfo.isSitting) vec.Y += drawinfo.seatYOffset; Vector2 position = vec.Floor(); drawinfo.DrawDataCache.Add(new DrawData(texture, position, new Rectangle?(r), drawinfo.colorArmorLegs, drawinfo.drawPlayer.legRotation, r.Size() * new Vector2(0.5f, (float) (0.5 - (double) drawinfo.drawPlayer.gravDir * 0.5)), scale, drawinfo.playerEffect, 0) { shader = drawinfo.cLegs }); } else if (drawinfo.drawPlayer.legs > 0 && drawinfo.drawPlayer.legs < 218 && (!PlayerDrawLayers.ShouldOverrideLegs_CheckShoes(ref drawinfo) || drawinfo.drawPlayer.wearsRobe)) { if (drawinfo.drawPlayer.invis) return; DrawData drawData = new DrawData(TextureAssets.ArmorLeg[drawinfo.drawPlayer.legs].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.legFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.legFrame.Height + 4.0)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, new Rectangle?(drawinfo.drawPlayer.legFrame), drawinfo.colorArmorLegs, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cLegs; drawinfo.DrawDataCache.Add(drawData); if (drawinfo.legsGlowMask == -1) return; if (drawinfo.legsGlowMask == 274) { for (int index = 0; index < 2; ++index) { Vector2 vector2 = new Vector2((float) Main.rand.Next(-10, 10) * 0.125f, (float) Main.rand.Next(-10, 10) * 0.125f); drawData = new DrawData(TextureAssets.GlowMask[drawinfo.legsGlowMask].Value, vector2 + new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.legFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.legFrame.Height + 4.0)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, new Rectangle?(drawinfo.drawPlayer.legFrame), drawinfo.legsGlowColor, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cLegs; drawinfo.DrawDataCache.Add(drawData); } } else { drawData = new DrawData(TextureAssets.GlowMask[drawinfo.legsGlowMask].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.legFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.legFrame.Height + 4.0)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, new Rectangle?(drawinfo.drawPlayer.legFrame), drawinfo.legsGlowColor, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cLegs; drawinfo.DrawDataCache.Add(drawData); } } else { if (drawinfo.drawPlayer.invis || PlayerDrawLayers.ShouldOverrideLegs_CheckShoes(ref drawinfo)) return; DrawData drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 11].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.legFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.legFrame.Height + 4.0)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, new Rectangle?(drawinfo.drawPlayer.legFrame), drawinfo.colorPants, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 12].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.legFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.legFrame.Height + 4.0)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, new Rectangle?(drawinfo.drawPlayer.legFrame), drawinfo.colorShoes, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } } private static void DrawSittingLegs( ref PlayerDrawSet drawinfo, Texture2D textureToDraw, Color matchingColor, int shaderIndex = 0, bool glowmask = false) { Vector2 vector2_1 = new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.legFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.legFrame.Height + 4.0)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect; Rectangle legFrame = drawinfo.drawPlayer.legFrame; vector2_1.Y -= 2f; vector2_1.Y += drawinfo.seatYOffset; int num1 = 2; int num2 = 42; int num3 = 2; int num4 = 2; int num5 = 0; int num6 = 0; switch (drawinfo.drawPlayer.legs) { case 132: num1 = -2; num6 = 2; break; case 143: num1 = 0; num2 = 40; break; case 193: case 194: if (drawinfo.drawPlayer.body == 218) { num1 = -2; num6 = 2; vector2_1.Y += 2f; break; } break; case 210: if (glowmask) { Vector2 vector2_2 = new Vector2((float) Main.rand.Next(-10, 10) * 0.125f, (float) Main.rand.Next(-10, 10) * 0.125f); vector2_1 += vector2_2; break; } break; } for (int index = num3; index >= 0; --index) { Vector2 position = vector2_1 + new Vector2((float) num1, 2f) * new Vector2((float) drawinfo.drawPlayer.direction, 1f); Rectangle rectangle = legFrame; rectangle.Y += index * 2; rectangle.Y += num2; rectangle.Height -= num2; rectangle.Height -= index * 2; if (index != num3) rectangle.Height = 2; position.X += (float) (drawinfo.drawPlayer.direction * num4 * index + num5 * drawinfo.drawPlayer.direction); if (index != 0) position.X += (float) (num6 * drawinfo.drawPlayer.direction); position.Y += (float) num2; drawinfo.DrawDataCache.Add(new DrawData(textureToDraw, position, new Rectangle?(rectangle), matchingColor, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect, 0) { shader = shaderIndex }); } } public static void DrawPlayer_14_Shoes(ref PlayerDrawSet drawinfo) { if (drawinfo.drawPlayer.shoe <= (sbyte) 0 || drawinfo.drawPlayer.shoe >= (sbyte) 25 || PlayerDrawLayers.ShouldOverrideLegs_CheckPants(ref drawinfo)) return; if (drawinfo.isSitting) PlayerDrawLayers.DrawSittingLegs(ref drawinfo, TextureAssets.AccShoes[(int) drawinfo.drawPlayer.shoe].Value, drawinfo.colorArmorLegs, drawinfo.cShoe); else drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.AccShoes[(int) drawinfo.drawPlayer.shoe].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.legFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.legFrame.Height + 4.0)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, new Rectangle?(drawinfo.drawPlayer.legFrame), drawinfo.colorArmorLegs, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.cShoe }); } public static void DrawPlayer_15_SkinLongCoat(ref PlayerDrawSet drawinfo) { if ((drawinfo.skinVar == 3 || drawinfo.skinVar == 8 ? 1 : (drawinfo.skinVar == 7 ? 1 : 0)) == 0 || drawinfo.drawPlayer.body > 0 && drawinfo.drawPlayer.body < 235 || drawinfo.drawPlayer.invis) return; if (drawinfo.isSitting) { PlayerDrawLayers.DrawSittingLegs(ref drawinfo, TextureAssets.Players[drawinfo.skinVar, 14].Value, drawinfo.colorShirt); } else { DrawData drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 14].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.legFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.legFrame.Height + 4.0)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, new Rectangle?(drawinfo.drawPlayer.legFrame), drawinfo.colorShirt, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } } public static void DrawPlayer_16_ArmorLongCoat(ref PlayerDrawSet drawinfo) { int i = -1; switch (drawinfo.drawPlayer.body) { case 52: i = !drawinfo.drawPlayer.Male ? 172 : 171; break; case 53: i = !drawinfo.drawPlayer.Male ? 176 : 175; break; case 73: i = 170; break; case 168: i = 164; break; case 182: i = 163; break; case 187: i = 173; break; case 198: i = 162; break; case 200: i = 149; break; case 201: i = 150; break; case 202: i = 151; break; case 205: i = 174; break; case 207: i = 161; break; case 209: i = 160; break; case 210: i = !drawinfo.drawPlayer.Male ? 177 : 178; break; case 211: i = !drawinfo.drawPlayer.Male ? 181 : 182; break; case 218: i = 195; break; case 222: i = !drawinfo.drawPlayer.Male ? 200 : 201; break; case 225: i = 206; break; } if (i == -1) return; Main.instance.LoadArmorLegs(i); if (drawinfo.isSitting && i != 195) PlayerDrawLayers.DrawSittingLegs(ref drawinfo, TextureAssets.ArmorLeg[i].Value, drawinfo.colorArmorBody, drawinfo.cBody); else drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.ArmorLeg[i].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.legFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.legFrame.Height + 4.0)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, new Rectangle?(drawinfo.drawPlayer.legFrame), drawinfo.colorArmorBody, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.cBody }); } public static void DrawPlayer_17_Torso(ref PlayerDrawSet drawinfo) { if (drawinfo.usesCompositeTorso) PlayerDrawLayers.DrawPlayer_17_TorsoComposite(ref drawinfo); else if (drawinfo.drawPlayer.body > 0 && drawinfo.drawPlayer.body < 235) { Rectangle bodyFrame = drawinfo.drawPlayer.bodyFrame; int num = drawinfo.armorAdjust; bodyFrame.X += num; bodyFrame.Width -= num; if (drawinfo.drawPlayer.direction == -1) num = 0; if (!drawinfo.drawPlayer.invis || drawinfo.drawPlayer.body != 21 && drawinfo.drawPlayer.body != 22) { DrawData drawData = new DrawData(drawinfo.drawPlayer.Male ? TextureAssets.ArmorBody[drawinfo.drawPlayer.body].Value : TextureAssets.FemaleBody[drawinfo.drawPlayer.body].Value, new Vector2((float) ((int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)) + num), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(bodyFrame), drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cBody; drawinfo.DrawDataCache.Add(drawData); if (drawinfo.bodyGlowMask != -1) { drawData = new DrawData(TextureAssets.GlowMask[drawinfo.bodyGlowMask].Value, new Vector2((float) ((int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)) + num), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(bodyFrame), drawinfo.bodyGlowColor, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cBody; drawinfo.DrawDataCache.Add(drawData); } } if (!drawinfo.missingHand || drawinfo.drawPlayer.invis) return; DrawData drawData1 = new DrawData(TextureAssets.Players[drawinfo.skinVar, 5].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorBodySkin, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.skinDyePacked }; drawinfo.DrawDataCache.Add(drawData1); } else { if (drawinfo.drawPlayer.invis) return; if (!drawinfo.drawPlayer.Male) { DrawData drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 4].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorUnderShirt, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 6].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorShirt, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } else { DrawData drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 4].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorUnderShirt, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 6].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorShirt, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } DrawData drawData2 = new DrawData(TextureAssets.Players[drawinfo.skinVar, 5].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorBodySkin, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.skinDyePacked }; drawinfo.DrawDataCache.Add(drawData2); } } public static void DrawPlayer_17_TorsoComposite(ref PlayerDrawSet drawinfo) { Vector2 vector2_1 = new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)); Vector2 vector2_2 = Main.OffsetsPlayerHeadgear[drawinfo.drawPlayer.bodyFrame.Y / drawinfo.drawPlayer.bodyFrame.Height]; vector2_2.Y -= 2f; Vector2 position = vector2_1 + vector2_2 * (float) -drawinfo.playerEffect.HasFlag((Enum) SpriteEffects.FlipVertically).ToDirectionInt(); float bodyRotation = drawinfo.drawPlayer.bodyRotation; Vector2 vector2_3 = position; Vector2 bodyVect = drawinfo.bodyVect; Vector2 compositeOffsetBackArm = PlayerDrawLayers.GetCompositeOffset_BackArm(ref drawinfo); Vector2 vector2_4 = compositeOffsetBackArm; Vector2 vector2_5 = vector2_3 + vector2_4; Vector2 vector2_6 = bodyVect + compositeOffsetBackArm; DrawData drawData1; if (drawinfo.drawPlayer.body > 0 && drawinfo.drawPlayer.body < 235) { if (!drawinfo.drawPlayer.invis || PlayerDrawLayers.IsArmorDrawnWhenInvisible(drawinfo.drawPlayer.body)) { Texture2D texture = TextureAssets.ArmorBodyComposite[drawinfo.drawPlayer.body].Value; ref PlayerDrawSet local = ref drawinfo; drawData1 = new DrawData(texture, position, new Rectangle?(drawinfo.compTorsoFrame), drawinfo.colorArmorBody, bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.cBody; DrawData data = drawData1; PlayerDrawLayers.DrawCompositeArmorPiece(ref local, CompositePlayerDrawContext.Torso, data); } } else if (!drawinfo.drawPlayer.invis) { drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 4].Value, position, new Rectangle?(drawinfo.compBackShoulderFrame), drawinfo.colorUnderShirt, bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0)); drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 6].Value, position, new Rectangle?(drawinfo.compBackShoulderFrame), drawinfo.colorShirt, bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0)); drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 4].Value, position, new Rectangle?(drawinfo.compTorsoFrame), drawinfo.colorUnderShirt, bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0)); drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 6].Value, position, new Rectangle?(drawinfo.compTorsoFrame), drawinfo.colorShirt, bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0)); } if (!drawinfo.drawFloatingTube) return; List drawDataCache = drawinfo.DrawDataCache; drawData1 = new DrawData(TextureAssets.Extra[105].Value, position, new Rectangle?(new Rectangle(0, 56, 40, 56)), drawinfo.floatingTubeColor, bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.cFloatingTube; DrawData drawData2 = drawData1; drawDataCache.Add(drawData2); } public static void DrawPlayer_18_OffhandAcc(ref PlayerDrawSet drawinfo) { if (drawinfo.usesCompositeBackHandAcc || drawinfo.drawPlayer.handoff <= (sbyte) 0 || drawinfo.drawPlayer.handoff >= (sbyte) 14) return; drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.AccHandsOff[(int) drawinfo.drawPlayer.handoff].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.cHandOff }); } public static void DrawPlayer_19_WaistAcc(ref PlayerDrawSet drawinfo) { if (drawinfo.drawPlayer.waist <= (sbyte) 0 || drawinfo.drawPlayer.waist >= (sbyte) 17) return; Rectangle rectangle = drawinfo.drawPlayer.legFrame; if (ArmorIDs.Waist.Sets.UsesTorsoFraming[(int) drawinfo.drawPlayer.waist]) rectangle = drawinfo.drawPlayer.bodyFrame; drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.AccWaist[(int) drawinfo.drawPlayer.waist].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.legFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.legFrame.Height + 4.0)) + drawinfo.drawPlayer.legPosition + drawinfo.legVect, new Rectangle?(rectangle), drawinfo.colorArmorLegs, drawinfo.drawPlayer.legRotation, drawinfo.legVect, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.cWaist }); } public static void DrawPlayer_20_NeckAcc(ref PlayerDrawSet drawinfo) { if (drawinfo.drawPlayer.neck <= (sbyte) 0 || drawinfo.drawPlayer.neck >= (sbyte) 11) return; drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.AccNeck[(int) drawinfo.drawPlayer.neck].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.cNeck }); } public static void DrawPlayer_21_Head(ref PlayerDrawSet drawinfo) { Vector2 helmetOffset = drawinfo.helmetOffset; PlayerDrawLayers.DrawPlayer_21_Head_TheFace(ref drawinfo); bool flag1 = drawinfo.drawPlayer.head == 14 || drawinfo.drawPlayer.head == 56 || drawinfo.drawPlayer.head == 114 || drawinfo.drawPlayer.head == 158 || drawinfo.drawPlayer.head == 69 || drawinfo.drawPlayer.head == 180; bool flag2 = drawinfo.drawPlayer.head == 28; bool flag3 = drawinfo.drawPlayer.head == 39 || drawinfo.drawPlayer.head == 38; DrawData drawData; if (drawinfo.fullHair) { drawData = new DrawData(TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value, helmetOffset + new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cHead; drawinfo.DrawDataCache.Add(drawData); if (!drawinfo.drawPlayer.invis) { drawData = new DrawData(TextureAssets.PlayerHair[drawinfo.drawPlayer.hair].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.hairFrame), drawinfo.colorHair, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.hairDyePacked; drawinfo.DrawDataCache.Add(drawData); } } if (drawinfo.hatHair && !drawinfo.drawPlayer.invis) { drawData = new DrawData(TextureAssets.PlayerHairAlt[drawinfo.drawPlayer.hair].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.hairFrame), drawinfo.colorHair, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.hairDyePacked; drawinfo.DrawDataCache.Add(drawData); } if (drawinfo.drawPlayer.head == 23) { if (!drawinfo.drawPlayer.invis) { drawData = new DrawData(TextureAssets.PlayerHair[drawinfo.drawPlayer.hair].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.hairFrame), drawinfo.colorHair, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.hairDyePacked; drawinfo.DrawDataCache.Add(drawData); } drawData = new DrawData(TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value, helmetOffset + new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cHead; drawinfo.DrawDataCache.Add(drawData); } else if (flag1) { Rectangle bodyFrame = drawinfo.drawPlayer.bodyFrame; Vector2 headVect = drawinfo.headVect; if ((double) drawinfo.drawPlayer.gravDir == 1.0) { if (bodyFrame.Y != 0) { bodyFrame.Y -= 2; bodyFrame.Height -= 8; headVect.Y += 2f; } } else if (bodyFrame.Y != 0) { bodyFrame.Y -= 2; headVect.Y -= 10f; bodyFrame.Height -= 8; } drawData = new DrawData(TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value, helmetOffset + new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(bodyFrame), drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, headVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cHead; drawinfo.DrawDataCache.Add(drawData); } else if (drawinfo.drawPlayer.head == 259) { int verticalFrames = 27; Texture2D texture2D = TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value; Rectangle r = texture2D.Frame(verticalFrames: verticalFrames, frameY: drawinfo.drawPlayer.rabbitOrderFrame.DisplayFrame); Vector2 origin = r.Size() / 2f; int num1 = drawinfo.drawPlayer.babyBird.ToInt(); Vector2 specialHatDrawPosition = PlayerDrawLayers.DrawPlayer_21_Head_GetSpecialHatDrawPosition(ref drawinfo, ref helmetOffset, new Vector2((float) (1 + num1 * 2), (float) (drawinfo.drawPlayer.babyBird.ToInt() * -6 - 26))); int hatStacks = PlayerDrawLayers.DrawPlayer_21_head_GetHatStacks(ref drawinfo, 4955); float num2 = (float) Math.PI / 60f; float num3 = (float) ((double) num2 * (double) drawinfo.drawPlayer.position.X % 6.28318548202515); for (int index = hatStacks - 1; index >= 0; --index) { float x = (float) ((double) Vector2.UnitY.RotatedBy((double) num3 + (double) num2 * (double) index).X * ((double) index / 30.0) * 2.0) - (float) (index * 2 * drawinfo.drawPlayer.direction); drawData = new DrawData(texture2D, specialHatDrawPosition + new Vector2(x, (float) (index * -14) * drawinfo.drawPlayer.gravDir), new Rectangle?(r), drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, origin, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cHead; drawinfo.DrawDataCache.Add(drawData); } if (!drawinfo.drawPlayer.invis) { drawData = new DrawData(TextureAssets.PlayerHair[drawinfo.drawPlayer.hair].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.hairFrame), drawinfo.colorHair, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.hairDyePacked; drawinfo.DrawDataCache.Add(drawData); } } else if (drawinfo.drawPlayer.head > 0 && drawinfo.drawPlayer.head < 266 && !flag2) { if (!(drawinfo.drawPlayer.invis & flag3)) { if (drawinfo.drawPlayer.head == 13) { int num4 = 0; int index1 = 0; if (drawinfo.drawPlayer.armor[index1] != null && drawinfo.drawPlayer.armor[index1].type == 205 && drawinfo.drawPlayer.armor[index1].stack > 0) num4 += drawinfo.drawPlayer.armor[index1].stack; int index2 = 10; if (drawinfo.drawPlayer.armor[index2] != null && drawinfo.drawPlayer.armor[index2].type == 205 && drawinfo.drawPlayer.armor[index2].stack > 0) num4 += drawinfo.drawPlayer.armor[index2].stack; float num5 = (float) Math.PI / 60f; float num6 = (float) ((double) num5 * (double) drawinfo.drawPlayer.position.X % 6.28318548202515); for (int index3 = 0; index3 < num4; ++index3) { float num7 = (float) ((double) Vector2.UnitY.RotatedBy((double) num6 + (double) num5 * (double) index3).X * ((double) index3 / 30.0) * 2.0); drawData = new DrawData(TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value, helmetOffset + new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)) + num7, (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0 - (double) (4 * index3))) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cHead; drawinfo.DrawDataCache.Add(drawData); } } else if (drawinfo.drawPlayer.head == 265) { int verticalFrames = 6; Texture2D texture2D = TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value; Rectangle r = texture2D.Frame(verticalFrames: verticalFrames, frameY: drawinfo.drawPlayer.rabbitOrderFrame.DisplayFrame); Vector2 origin = r.Size() / 2f; Vector2 specialHatDrawPosition = PlayerDrawLayers.DrawPlayer_21_Head_GetSpecialHatDrawPosition(ref drawinfo, ref helmetOffset, new Vector2(0.0f, -9f)); int hatStacks = PlayerDrawLayers.DrawPlayer_21_head_GetHatStacks(ref drawinfo, 5004); float num8 = (float) Math.PI / 60f; float num9 = (float) ((double) num8 * (double) drawinfo.drawPlayer.position.X % 6.28318548202515); int num10 = hatStacks * 4 + 2; int num11 = 0; bool flag4 = ((double) Main.GlobalTimeWrappedHourly + 180.0) % 3600.0 < 60.0; for (int index = num10 - 1; index >= 0; --index) { int num12 = 0; if (index == num10 - 1) { r.Y = 0; num12 = 2; } else r.Y = index != 0 ? r.Height * (num11++ % 4 + 1) : r.Height * 5; if (!(r.Y == r.Height * 3 & flag4)) { float x = (float) ((double) Vector2.UnitY.RotatedBy((double) num9 + (double) num8 * (double) index).X * ((double) index / 10.0) * 4.0 - (double) index * 0.100000001490116 * (double) drawinfo.drawPlayer.direction); drawData = new DrawData(texture2D, specialHatDrawPosition + new Vector2(x, (float) (index * -4 + num12) * drawinfo.drawPlayer.gravDir), new Rectangle?(r), drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, origin, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cHead; drawinfo.DrawDataCache.Add(drawData); } } } else { drawData = new DrawData(TextureAssets.ArmorHead[drawinfo.drawPlayer.head].Value, helmetOffset + new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cHead; drawinfo.DrawDataCache.Add(drawData); if (drawinfo.headGlowMask != -1) { if (drawinfo.headGlowMask == 273) { for (int index = 0; index < 2; ++index) { Vector2 vector2 = new Vector2((float) Main.rand.Next(-10, 10) * 0.125f, (float) Main.rand.Next(-10, 10) * 0.125f); drawData = new DrawData(TextureAssets.GlowMask[drawinfo.headGlowMask].Value, vector2 + helmetOffset + new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.headGlowColor, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cHead; drawinfo.DrawDataCache.Add(drawData); } } else { drawData = new DrawData(TextureAssets.GlowMask[drawinfo.headGlowMask].Value, helmetOffset + new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.headGlowColor, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cHead; drawinfo.DrawDataCache.Add(drawData); } } if (drawinfo.drawPlayer.head == 211) { Color color = new Color(100, 100, 100, 0); ulong seed = (ulong) (drawinfo.drawPlayer.miscCounter / 4 + 100); int num = 4; for (int index = 0; index < num; ++index) { float x = (float) Utils.RandomInt(ref seed, -10, 11) * 0.2f; float y = (float) Utils.RandomInt(ref seed, -14, 1) * 0.15f; drawData = new DrawData(TextureAssets.GlowMask[241].Value, helmetOffset + new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect + new Vector2(x, y), new Rectangle?(drawinfo.drawPlayer.bodyFrame), color, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cHead; drawinfo.DrawDataCache.Add(drawData); } } } } } else if (!drawinfo.drawPlayer.invis && (drawinfo.drawPlayer.face < (sbyte) 0 || !ArmorIDs.Face.Sets.PreventHairDraw[(int) drawinfo.drawPlayer.face])) { if (drawinfo.drawPlayer.face == (sbyte) 5) { drawData = new DrawData(TextureAssets.AccFace[(int) drawinfo.drawPlayer.face].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cFace; drawinfo.DrawDataCache.Add(drawData); } drawData = new DrawData(TextureAssets.PlayerHair[drawinfo.drawPlayer.hair].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.hairFrame), drawinfo.colorHair, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.hairDyePacked; drawinfo.DrawDataCache.Add(drawData); } if (drawinfo.drawPlayer.head == 205) { drawData = new DrawData(TextureAssets.Extra[77].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.skinDyePacked }; drawinfo.DrawDataCache.Add(drawData); } if (drawinfo.drawPlayer.head == 214 && !drawinfo.drawPlayer.invis) { Rectangle bodyFrame = drawinfo.drawPlayer.bodyFrame; bodyFrame.Y = 0; float t = (float) drawinfo.drawPlayer.miscCounter / 300f; Color color = new Color(0, 0, 0, 0); float from = 0.8f; float to = 0.9f; if ((double) t >= (double) from) color = Color.Lerp(Color.Transparent, new Color(200, 200, 200, 0), Utils.GetLerpValue(from, to, t, true)); if ((double) t >= (double) to) color = Color.Lerp(Color.Transparent, new Color(200, 200, 200, 0), Utils.GetLerpValue(1f, to, t, true)); color *= drawinfo.stealth * (1f - drawinfo.shadow); drawData = new DrawData(TextureAssets.Extra[90].Value, helmetOffset + new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect - Main.OffsetsPlayerHeadgear[drawinfo.drawPlayer.bodyFrame.Y / drawinfo.drawPlayer.bodyFrame.Height], new Rectangle?(bodyFrame), color, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } if (drawinfo.drawPlayer.head == 137) { drawData = new DrawData(TextureAssets.JackHat.Value, helmetOffset + new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.drawPlayer.bodyFrame), new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue), drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); for (int index = 0; index < 7; ++index) { Color color = new Color(110 - index * 10, 110 - index * 10, 110 - index * 10, 110 - index * 10); Vector2 vector2 = new Vector2((float) Main.rand.Next(-10, 11) * 0.2f, (float) Main.rand.Next(-10, 11) * 0.2f); vector2.X = drawinfo.drawPlayer.itemFlamePos[index].X; vector2.Y = drawinfo.drawPlayer.itemFlamePos[index].Y; vector2 *= 0.5f; drawData = new DrawData(TextureAssets.JackHat.Value, helmetOffset + new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect + vector2, new Rectangle?(drawinfo.drawPlayer.bodyFrame), color, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } } if (!drawinfo.drawPlayer.babyBird) return; Rectangle bodyFrame1 = drawinfo.drawPlayer.bodyFrame; bodyFrame1.Y = 0; drawData = new DrawData(TextureAssets.Extra[100].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect + Main.OffsetsPlayerHeadgear[drawinfo.drawPlayer.bodyFrame.Y / drawinfo.drawPlayer.bodyFrame.Height] * drawinfo.drawPlayer.gravDir, new Rectangle?(bodyFrame1), drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } private static int DrawPlayer_21_head_GetHatStacks(ref PlayerDrawSet drawinfo, int hatItemId) { int num = 0; int index1 = 0; if (drawinfo.drawPlayer.armor[index1] != null && drawinfo.drawPlayer.armor[index1].type == hatItemId && drawinfo.drawPlayer.armor[index1].stack > 0) num += drawinfo.drawPlayer.armor[index1].stack; int index2 = 10; if (drawinfo.drawPlayer.armor[index2] != null && drawinfo.drawPlayer.armor[index2].type == hatItemId && drawinfo.drawPlayer.armor[index2].stack > 0) num += drawinfo.drawPlayer.armor[index2].stack; return num; } private static Vector2 DrawPlayer_21_Head_GetSpecialHatDrawPosition( ref PlayerDrawSet drawinfo, ref Vector2 helmetOffset, Vector2 hatOffset) { Vector2 vector2 = Main.OffsetsPlayerHeadgear[drawinfo.drawPlayer.bodyFrame.Y / drawinfo.drawPlayer.bodyFrame.Height] * drawinfo.drawPlayer.Directions; Vector2 vec = (drawinfo.Position - Main.screenPosition + helmetOffset + new Vector2((float) (-drawinfo.drawPlayer.bodyFrame.Width / 2 + drawinfo.drawPlayer.width / 2), (float) (drawinfo.drawPlayer.height - drawinfo.drawPlayer.bodyFrame.Height + 4)) + hatOffset * drawinfo.drawPlayer.Directions + vector2).Floor() + (drawinfo.drawPlayer.headPosition + drawinfo.headVect); if ((double) drawinfo.drawPlayer.gravDir == -1.0) vec.Y += 12f; vec = vec.Floor(); return vec; } private static void DrawPlayer_21_Head_TheFace(ref PlayerDrawSet drawinfo) { bool flag = drawinfo.drawPlayer.head == 38 && drawinfo.drawPlayer.head == 135; if (drawinfo.drawPlayer.invis || flag) return; DrawData drawData1 = new DrawData(TextureAssets.Players[drawinfo.skinVar, 0].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.skinDyePacked; DrawData drawData2 = drawData1; drawinfo.DrawDataCache.Add(drawData2); drawData2 = new DrawData(TextureAssets.Players[drawinfo.skinVar, 1].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorEyeWhites, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData2); drawData2 = new DrawData(TextureAssets.Players[drawinfo.skinVar, 2].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorEyes, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData2); Asset player = TextureAssets.Players[drawinfo.skinVar, 15]; if (player.IsLoaded) { Vector2 vector2 = Main.OffsetsPlayerHeadgear[drawinfo.drawPlayer.bodyFrame.Y / drawinfo.drawPlayer.bodyFrame.Height]; vector2.Y -= 2f; Rectangle rectangle = player.Frame(verticalFrames: 3, frameY: drawinfo.drawPlayer.eyeHelper.EyeFrameToShow); drawData1 = new DrawData(player.Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect + vector2, new Rectangle?(rectangle), drawinfo.colorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.skinDyePacked; DrawData drawData3 = drawData1; drawinfo.DrawDataCache.Add(drawData3); } if (!drawinfo.drawPlayer.yoraiz0rDarkness) return; drawData1 = new DrawData(TextureAssets.Extra[67].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.skinDyePacked; DrawData drawData4 = drawData1; drawinfo.DrawDataCache.Add(drawData4); } public static void DrawPlayer_22_FaceAcc(ref PlayerDrawSet drawinfo) { DrawData drawData; if (drawinfo.drawPlayer.face > (sbyte) 0 && drawinfo.drawPlayer.face < (sbyte) 16 && drawinfo.drawPlayer.face != (sbyte) 5) { if (drawinfo.drawPlayer.face == (sbyte) 7) { drawData = new DrawData(TextureAssets.AccFace[(int) drawinfo.drawPlayer.face].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.drawPlayer.bodyFrame), new Color(200, 200, 200, 150), drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cFace; drawinfo.DrawDataCache.Add(drawData); } else { drawData = new DrawData(TextureAssets.AccFace[(int) drawinfo.drawPlayer.face].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cFace; drawinfo.DrawDataCache.Add(drawData); } } if (!drawinfo.drawUnicornHorn) return; drawData = new DrawData(TextureAssets.Extra[143].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.headPosition + drawinfo.headVect, new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorArmorHead, drawinfo.drawPlayer.headRotation, drawinfo.headVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cUnicornHorn; drawinfo.DrawDataCache.Add(drawData); } public static void DrawTiedBalloons(ref PlayerDrawSet drawinfo) { if (drawinfo.drawPlayer.mount.Type != 34) return; Texture2D texture2D = TextureAssets.Extra[141].Value; Vector2 vector2 = new Vector2(0.0f, 4f); Color colorMount = drawinfo.colorMount; int frameY = (int) ((double) Main.GlobalTimeWrappedHourly * 3.0 + (double) drawinfo.drawPlayer.position.X / 50.0) % 3; Rectangle rectangle = texture2D.Frame(verticalFrames: 3, frameY: frameY); Vector2 origin = new Vector2((float) (rectangle.Width / 2), (float) rectangle.Height); float rotation = (float) (-(double) drawinfo.drawPlayer.velocity.X * 0.100000001490116) - drawinfo.drawPlayer.fullRotation; DrawData drawData = new DrawData(texture2D, drawinfo.drawPlayer.MountedCenter + vector2 - Main.screenPosition, new Rectangle?(rectangle), colorMount, rotation, origin, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } public static void DrawStarboardRainbowTrail( ref PlayerDrawSet drawinfo, Vector2 commonWingPosPreFloor, Vector2 dirsVec) { if ((double) drawinfo.shadow != 0.0) return; int num1 = Math.Min(drawinfo.drawPlayer.availableAdvancedShadowsCount - 1, 30); float num2 = 0.0f; for (int shadowIndex = num1; shadowIndex > 0; --shadowIndex) { EntityShadowInfo advancedShadow1 = drawinfo.drawPlayer.GetAdvancedShadow(shadowIndex); EntityShadowInfo advancedShadow2 = drawinfo.drawPlayer.GetAdvancedShadow(shadowIndex - 1); num2 += Vector2.Distance(advancedShadow1.Position, advancedShadow2.Position); } float num3 = MathHelper.Clamp(num2 / 160f, 0.0f, 1f); Main.instance.LoadProjectile(250); Texture2D texture = TextureAssets.Projectile[250].Value; float x = 1.7f; Vector2 origin = new Vector2((float) (texture.Width / 2), (float) (texture.Height / 2)); Vector2 vector2_1 = new Vector2((float) drawinfo.drawPlayer.width, (float) drawinfo.drawPlayer.height) / 2f; Color white = Color.White; white.A = (byte) 64; Vector2 vector2_2 = drawinfo.drawPlayer.DefaultSize * new Vector2(0.5f, 1f) + new Vector2(0.0f, -4f); for (int shadowIndex = num1; shadowIndex > 0; --shadowIndex) { EntityShadowInfo advancedShadow3 = drawinfo.drawPlayer.GetAdvancedShadow(shadowIndex); EntityShadowInfo advancedShadow4 = drawinfo.drawPlayer.GetAdvancedShadow(shadowIndex - 1); Vector2 pos1 = advancedShadow3.Position + vector2_2 + advancedShadow3.HeadgearOffset; Vector2 pos2 = advancedShadow4.Position + vector2_2 + advancedShadow4.HeadgearOffset; Vector2 vector2_3 = drawinfo.drawPlayer.RotatedRelativePoint(pos1, true, false); Vector2 vector2_4 = drawinfo.drawPlayer.RotatedRelativePoint(pos2, true, false); float num4 = (vector2_4 - vector2_3).ToRotation() - 1.570796f; float rotation = 1.570796f * (float) drawinfo.drawPlayer.direction; float t = Math.Abs(vector2_4.X - vector2_3.X); Vector2 scale = new Vector2(x, t / (float) texture.Height); float num5 = (float) (1.0 - (double) shadowIndex / (double) num1); float num6 = num5 * num5 * Utils.GetLerpValue(0.0f, 4f, t, true) * 0.5f; float num7 = num6 * num6; Color color = white * num7 * num3; if (!(color == Color.Transparent)) { DrawData drawData = new DrawData(texture, vector2_3 - Main.screenPosition, new Rectangle?(), color, rotation, origin, scale, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); for (float amount = 0.25f; (double) amount < 1.0; amount += 0.25f) { drawData = new DrawData(texture, Vector2.Lerp(vector2_3, vector2_4, amount) - Main.screenPosition, new Rectangle?(), color, rotation, origin, scale, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cWings; drawinfo.DrawDataCache.Add(drawData); } } } } public static void DrawMeowcartTrail(ref PlayerDrawSet drawinfo) { if (drawinfo.drawPlayer.mount.Type != 33) return; int num1 = Math.Min(drawinfo.drawPlayer.availableAdvancedShadowsCount - 1, 20); float num2 = 0.0f; for (int shadowIndex = num1; shadowIndex > 0; --shadowIndex) { EntityShadowInfo advancedShadow1 = drawinfo.drawPlayer.GetAdvancedShadow(shadowIndex); EntityShadowInfo advancedShadow2 = drawinfo.drawPlayer.GetAdvancedShadow(shadowIndex - 1); num2 += Vector2.Distance(advancedShadow1.Position, advancedShadow2.Position); } float num3 = MathHelper.Clamp(num2 / 160f, 0.0f, 1f); Main.instance.LoadProjectile(250); Texture2D texture = TextureAssets.Projectile[250].Value; float x = 1.5f; Vector2 origin = new Vector2((float) (texture.Width / 2), 0.0f); Vector2 vector2_1 = new Vector2((float) drawinfo.drawPlayer.width, (float) drawinfo.drawPlayer.height) / 2f; Vector2 vector2_2 = new Vector2((float) (-drawinfo.drawPlayer.direction * 10), 15f); Color white = Color.White; white.A = (byte) 127; Vector2 vector2_3 = vector2_2; Vector2 vector2_4 = vector2_1 + vector2_3; Vector2 zero = Vector2.Zero; Vector2 vector2_5 = drawinfo.drawPlayer.RotatedRelativePoint(drawinfo.drawPlayer.Center + zero + vector2_2) - drawinfo.drawPlayer.position; for (int shadowIndex = num1; shadowIndex > 0; --shadowIndex) { EntityShadowInfo advancedShadow3 = drawinfo.drawPlayer.GetAdvancedShadow(shadowIndex); EntityShadowInfo advancedShadow4 = drawinfo.drawPlayer.GetAdvancedShadow(shadowIndex - 1); Vector2 vector2_6 = advancedShadow3.Position + zero; Vector2 vector2_7 = advancedShadow4.Position + zero; Vector2 pos1 = vector2_6 + vector2_5; Vector2 pos2 = vector2_7 + vector2_5; Vector2 vector2_8 = drawinfo.drawPlayer.RotatedRelativePoint(pos1, true, false); Vector2 vector2_9 = drawinfo.drawPlayer.RotatedRelativePoint(pos2, true, false); float rotation = (vector2_9 - vector2_8).ToRotation() - 1.570796f; float num4 = Vector2.Distance(vector2_8, vector2_9); Vector2 scale = new Vector2(x, num4 / (float) texture.Height); float num5 = (float) (1.0 - (double) shadowIndex / (double) num1); float num6 = num5 * num5; Color color = white * num6 * num3; DrawData drawData = new DrawData(texture, vector2_8 - Main.screenPosition, new Rectangle?(), color, rotation, origin, scale, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } } public static void DrawPlayer_23_MountFront(ref PlayerDrawSet drawinfo) { if (!drawinfo.drawPlayer.mount.Active) return; drawinfo.drawPlayer.mount.Draw(drawinfo.DrawDataCache, 2, drawinfo.drawPlayer, drawinfo.Position, drawinfo.colorMount, drawinfo.playerEffect, drawinfo.shadow); drawinfo.drawPlayer.mount.Draw(drawinfo.DrawDataCache, 3, drawinfo.drawPlayer, drawinfo.Position, drawinfo.colorMount, drawinfo.playerEffect, drawinfo.shadow); } public static void DrawPlayer_24_Pulley(ref PlayerDrawSet drawinfo) { if (!drawinfo.drawPlayer.pulley || drawinfo.drawPlayer.itemAnimation != 0) return; if (drawinfo.drawPlayer.pulleyDir == (byte) 2) { int num1 = -25; int num2 = 0; float rotation = 0.0f; DrawData drawData = new DrawData(TextureAssets.Pulley.Value, new Vector2((float) ((int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X + (double) (drawinfo.drawPlayer.width / 2) - (double) (9 * drawinfo.drawPlayer.direction)) + num2 * drawinfo.drawPlayer.direction), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) (drawinfo.drawPlayer.height / 2) + 2.0 * (double) drawinfo.drawPlayer.gravDir + (double) num1 * (double) drawinfo.drawPlayer.gravDir)), new Rectangle?(new Rectangle(0, TextureAssets.Pulley.Height() / 2 * drawinfo.drawPlayer.pulleyFrame, TextureAssets.Pulley.Width(), TextureAssets.Pulley.Height() / 2)), drawinfo.colorArmorHead, rotation, new Vector2((float) (TextureAssets.Pulley.Width() / 2), (float) (TextureAssets.Pulley.Height() / 4)), 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } else { int num3 = -26; int num4 = 10; float rotation = 0.35f * (float) -drawinfo.drawPlayer.direction; DrawData drawData = new DrawData(TextureAssets.Pulley.Value, new Vector2((float) ((int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X + (double) (drawinfo.drawPlayer.width / 2) - (double) (9 * drawinfo.drawPlayer.direction)) + num4 * drawinfo.drawPlayer.direction), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) (drawinfo.drawPlayer.height / 2) + 2.0 * (double) drawinfo.drawPlayer.gravDir + (double) num3 * (double) drawinfo.drawPlayer.gravDir)), new Rectangle?(new Rectangle(0, TextureAssets.Pulley.Height() / 2 * drawinfo.drawPlayer.pulleyFrame, TextureAssets.Pulley.Width(), TextureAssets.Pulley.Height() / 2)), drawinfo.colorArmorHead, rotation, new Vector2((float) (TextureAssets.Pulley.Width() / 2), (float) (TextureAssets.Pulley.Height() / 4)), 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } } public static void DrawPlayer_25_Shield(ref PlayerDrawSet drawinfo) { if (drawinfo.drawPlayer.shield <= (sbyte) 0 || drawinfo.drawPlayer.shield >= (sbyte) 10) return; Vector2 zero1 = Vector2.Zero; if (drawinfo.drawPlayer.shieldRaised) zero1.Y -= 4f * drawinfo.drawPlayer.gravDir; Rectangle bodyFrame = drawinfo.drawPlayer.bodyFrame; Vector2 zero2 = Vector2.Zero; Vector2 bodyVect = drawinfo.bodyVect; if (bodyFrame.Width != TextureAssets.AccShield[(int) drawinfo.drawPlayer.shield].Value.Width) { bodyFrame.Width = TextureAssets.AccShield[(int) drawinfo.drawPlayer.shield].Value.Width; bodyVect.X += (float) (bodyFrame.Width - TextureAssets.AccShield[(int) drawinfo.drawPlayer.shield].Value.Width); if (drawinfo.playerEffect.HasFlag((Enum) SpriteEffects.FlipHorizontally)) bodyVect.X = (float) bodyFrame.Width - bodyVect.X; } DrawData drawData; if (drawinfo.drawPlayer.shieldRaised) { float num1 = (float) Math.Sin((double) Main.GlobalTimeWrappedHourly * 6.28318548202515); float x = (float) (2.5 + 1.5 * (double) num1); Color colorArmorBody = drawinfo.colorArmorBody; colorArmorBody.A = (byte) 0; colorArmorBody *= (float) (0.449999988079071 - (double) num1 * 0.150000005960464); for (float num2 = 0.0f; (double) num2 < 4.0; ++num2) { drawData = new DrawData(TextureAssets.AccShield[(int) drawinfo.drawPlayer.shield].Value, zero2 + new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)) + zero1 + new Vector2(x, 0.0f).RotatedBy((double) num2 / 4.0 * 6.28318548202515), new Rectangle?(bodyFrame), colorArmorBody, drawinfo.drawPlayer.bodyRotation, bodyVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cShield; drawinfo.DrawDataCache.Add(drawData); } } drawData = new DrawData(TextureAssets.AccShield[(int) drawinfo.drawPlayer.shield].Value, zero2 + new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)) + zero1, new Rectangle?(bodyFrame), drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, bodyVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cShield; drawinfo.DrawDataCache.Add(drawData); if (drawinfo.drawPlayer.shieldRaised) { Color colorArmorBody = drawinfo.colorArmorBody; float num = (float) Math.Sin((double) Main.GlobalTimeWrappedHourly * 3.14159274101257); colorArmorBody.A = (byte) ((double) colorArmorBody.A * (0.5 + 0.5 * (double) num)); colorArmorBody *= (float) (0.5 + 0.5 * (double) num); drawData = new DrawData(TextureAssets.AccShield[(int) drawinfo.drawPlayer.shield].Value, zero2 + new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)) + zero1, new Rectangle?(bodyFrame), colorArmorBody, drawinfo.drawPlayer.bodyRotation, bodyVect, 1f, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cShield; } if (drawinfo.drawPlayer.shieldRaised && drawinfo.drawPlayer.shieldParryTimeLeft > 0) { float num3 = (float) drawinfo.drawPlayer.shieldParryTimeLeft / 20f; float num4 = 1.5f * num3; Vector2 vector2_1 = zero2 + new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)) + zero1; Color colorArmorBody = drawinfo.colorArmorBody; float num5 = 1f; Vector2 vector2_2 = drawinfo.Position + drawinfo.drawPlayer.Size / 2f - Main.screenPosition; Vector2 vector2_3 = vector2_1 - vector2_2; Vector2 position = vector2_1 + vector2_3 * num4; float scale = num5 + num4; colorArmorBody.A = (byte) ((double) colorArmorBody.A * (1.0 - (double) num3)); Color color = colorArmorBody * (1f - num3); drawData = new DrawData(TextureAssets.AccShield[(int) drawinfo.drawPlayer.shield].Value, position, new Rectangle?(bodyFrame), color, drawinfo.drawPlayer.bodyRotation, bodyVect, scale, drawinfo.playerEffect, 0); drawData.shader = drawinfo.cShield; drawinfo.DrawDataCache.Add(drawData); } if (!drawinfo.drawPlayer.mount.Cart) return; drawinfo.DrawDataCache.Reverse(drawinfo.DrawDataCache.Count - 2, 2); } public static void DrawPlayer_26_SolarShield(ref PlayerDrawSet drawinfo) { if (drawinfo.drawPlayer.solarShields <= 0 || (double) drawinfo.shadow != 0.0 || drawinfo.drawPlayer.dead) return; Texture2D texture2D = TextureAssets.Extra[61 + drawinfo.drawPlayer.solarShields - 1].Value; Color color = new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue); float rotation1 = (drawinfo.drawPlayer.solarShieldPos[0] * new Vector2(1f, 0.5f)).ToRotation(); if (drawinfo.drawPlayer.direction == -1) rotation1 += 3.141593f; float rotation2 = rotation1 + 0.06283186f * (float) drawinfo.drawPlayer.direction; drawinfo.DrawDataCache.Add(new DrawData(texture2D, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) (drawinfo.drawPlayer.height / 2))) + drawinfo.drawPlayer.solarShieldPos[0], new Rectangle?(), color, rotation2, texture2D.Size() / 2f, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.cBody }); } public static void DrawPlayer_27_HeldItem(ref PlayerDrawSet drawinfo) { if (drawinfo.drawPlayer.JustDroppedAnItem) return; if (drawinfo.drawPlayer.heldProj >= 0 && (double) drawinfo.shadow == 0.0 && !drawinfo.heldProjOverHand) drawinfo.projectileDrawPosition = drawinfo.DrawDataCache.Count; Item heldItem = drawinfo.heldItem; int index1 = heldItem.type; if (index1 == 8 && drawinfo.drawPlayer.UsingBiomeTorches) index1 = drawinfo.drawPlayer.BiomeTorchHoldStyle(index1); float scale = heldItem.scale; Main.instance.LoadItem(index1); Texture2D texture2D1 = TextureAssets.Item[index1].Value; Vector2 position = new Vector2((float) (int) ((double) drawinfo.ItemLocation.X - (double) Main.screenPosition.X), (float) (int) ((double) drawinfo.ItemLocation.Y - (double) Main.screenPosition.Y)); Rectangle? sourceRect = new Rectangle?(new Rectangle(0, 0, texture2D1.Width, texture2D1.Height)); if (index1 == 75) sourceRect = new Rectangle?(texture2D1.Frame(verticalFrames: 8)); if (ItemID.Sets.IsFood[index1]) sourceRect = new Rectangle?(texture2D1.Frame(verticalFrames: 3, frameY: 1)); drawinfo.itemColor = Lighting.GetColor((int) ((double) drawinfo.Position.X + (double) drawinfo.drawPlayer.width * 0.5) / 16, (int) (((double) drawinfo.Position.Y + (double) drawinfo.drawPlayer.height * 0.5) / 16.0)); if (index1 == 678) drawinfo.itemColor = Color.White; if (drawinfo.drawPlayer.shroomiteStealth && heldItem.ranged) { float num1 = drawinfo.drawPlayer.stealth; if ((double) num1 < 0.03) num1 = 0.03f; float num2 = (float) ((1.0 + (double) num1 * 10.0) / 11.0); drawinfo.itemColor = new Color((int) (byte) ((double) drawinfo.itemColor.R * (double) num1), (int) (byte) ((double) drawinfo.itemColor.G * (double) num1), (int) (byte) ((double) drawinfo.itemColor.B * (double) num2), (int) (byte) ((double) drawinfo.itemColor.A * (double) num1)); } if (drawinfo.drawPlayer.setVortex && heldItem.ranged) { float num3 = drawinfo.drawPlayer.stealth; if ((double) num3 < 0.03) num3 = 0.03f; double num4 = (1.0 + (double) num3 * 10.0) / 11.0; drawinfo.itemColor = drawinfo.itemColor.MultiplyRGBA(new Color(Vector4.Lerp(Vector4.One, new Vector4(0.0f, 0.12f, 0.16f, 0.0f), 1f - num3))); } bool flag1 = drawinfo.drawPlayer.itemAnimation > 0 && (uint) heldItem.useStyle > 0U; bool flag2 = heldItem.holdStyle != 0 && !drawinfo.drawPlayer.pulley; if (!drawinfo.drawPlayer.CanVisuallyHoldItem(heldItem)) flag2 = false; if ((double) drawinfo.shadow != 0.0 || drawinfo.drawPlayer.frozen || !(flag1 | flag2) || index1 <= 0 || drawinfo.drawPlayer.dead || heldItem.noUseGraphic || drawinfo.drawPlayer.wet && heldItem.noWet || drawinfo.drawPlayer.happyFunTorchTime && drawinfo.drawPlayer.inventory[drawinfo.drawPlayer.selectedItem].createTile == 4 && drawinfo.drawPlayer.itemAnimation == 0) return; string name = drawinfo.drawPlayer.name; Color color1 = new Color(250, 250, 250, heldItem.alpha); Vector2 vector2_1 = Vector2.Zero; if (index1 == 3823) vector2_1 = new Vector2((float) (7 * drawinfo.drawPlayer.direction), -7f * drawinfo.drawPlayer.gravDir); if (index1 == 3827) { vector2_1 = new Vector2((float) (13 * drawinfo.drawPlayer.direction), -13f * drawinfo.drawPlayer.gravDir); color1 = heldItem.GetAlpha(drawinfo.itemColor); color1 = Color.Lerp(color1, Color.White, 0.6f); color1.A = (byte) 66; } Vector2 vector2_2 = new Vector2((float) ((double) sourceRect.Value.Width * 0.5 - (double) sourceRect.Value.Width * 0.5 * (double) drawinfo.drawPlayer.direction), (float) sourceRect.Value.Height); if (heldItem.useStyle == 9 && drawinfo.drawPlayer.itemAnimation > 0) { Vector2 vector2_3 = new Vector2(0.5f, 0.4f); if (heldItem.type == 5009 || heldItem.type == 5042) { vector2_3 = new Vector2(0.26f, 0.5f); if (drawinfo.drawPlayer.direction == -1) vector2_3.X = 1f - vector2_3.X; } vector2_2 = sourceRect.Value.Size() * vector2_3; } if ((double) drawinfo.drawPlayer.gravDir == -1.0) vector2_2.Y = (float) sourceRect.Value.Height - vector2_2.Y; Vector2 origin1 = vector2_2 + vector2_1; float rotation1 = drawinfo.drawPlayer.itemRotation; if (heldItem.useStyle == 8) { ref float local = ref position.X; double num = (double) local; int direction = drawinfo.drawPlayer.direction; local = (float) (num - 0.0); rotation1 -= 1.570796f * (float) drawinfo.drawPlayer.direction; origin1.Y = 2f; origin1.X += (float) (2 * drawinfo.drawPlayer.direction); } if (index1 == 425 || index1 == 507) drawinfo.itemEffect = (double) drawinfo.drawPlayer.gravDir != 1.0 ? (drawinfo.drawPlayer.direction != 1 ? SpriteEffects.FlipHorizontally : SpriteEffects.None) : (drawinfo.drawPlayer.direction != 1 ? SpriteEffects.FlipHorizontally | SpriteEffects.FlipVertically : SpriteEffects.FlipVertically); if ((index1 == 946 || index1 == 4707) && (double) rotation1 != 0.0) { position.Y -= 22f * drawinfo.drawPlayer.gravDir; rotation1 = -1.57f * (float) -drawinfo.drawPlayer.direction * drawinfo.drawPlayer.gravDir; } ItemSlot.GetItemLight(ref drawinfo.itemColor, heldItem); switch (index1) { case 3476: Texture2D texture2D2 = TextureAssets.Extra[64].Value; Rectangle r1 = texture2D2.Frame(verticalFrames: 9, frameY: (drawinfo.drawPlayer.miscCounter % 54 / 6)); Vector2 vector2_4 = new Vector2((float) (r1.Width / 2 * drawinfo.drawPlayer.direction), 0.0f); Vector2 origin2 = r1.Size() / 2f; DrawData drawData1 = new DrawData(texture2D2, (drawinfo.ItemLocation - Main.screenPosition + vector2_4).Floor(), new Rectangle?(r1), heldItem.GetAlpha(drawinfo.itemColor).MultiplyRGBA(new Color(new Vector4(0.5f, 0.5f, 0.5f, 0.8f))), drawinfo.drawPlayer.itemRotation, origin2, scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData1); drawData1 = new DrawData(TextureAssets.GlowMask[195].Value, (drawinfo.ItemLocation - Main.screenPosition + vector2_4).Floor(), new Rectangle?(r1), new Color(250, 250, 250, heldItem.alpha) * 0.5f, drawinfo.drawPlayer.itemRotation, origin2, scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData1); break; case 3779: Texture2D texture2D3 = texture2D1; Rectangle r2 = texture2D3.Frame(); Vector2 vector2_5 = new Vector2((float) (r2.Width / 2 * drawinfo.drawPlayer.direction), 0.0f); Vector2 origin3 = r2.Size() / 2f; Color color2 = new Color(120, 40, 222, 0) * (float) (((double) ((float) ((double) drawinfo.drawPlayer.miscCounter / 75.0 * 6.28318548202515)).ToRotationVector2().X * 1.0 + 0.0) / 2.0 * 0.300000011920929 + 0.850000023841858) * 0.5f; float num5 = 2f; DrawData drawData2; for (float num6 = 0.0f; (double) num6 < 4.0; ++num6) { drawData2 = new DrawData(TextureAssets.GlowMask[218].Value, (drawinfo.ItemLocation - Main.screenPosition + vector2_5).Floor() + (num6 * 1.570796f).ToRotationVector2() * num5, new Rectangle?(r2), color2, drawinfo.drawPlayer.itemRotation, origin3, scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData2); } drawData2 = new DrawData(texture2D3, (drawinfo.ItemLocation - Main.screenPosition + vector2_5).Floor(), new Rectangle?(r2), heldItem.GetAlpha(drawinfo.itemColor).MultiplyRGBA(new Color(new Vector4(0.5f, 0.5f, 0.5f, 0.8f))), drawinfo.drawPlayer.itemRotation, origin3, scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData2); break; case 4049: Texture2D texture2D4 = TextureAssets.Extra[92].Value; Rectangle r3 = texture2D4.Frame(verticalFrames: 4, frameY: (drawinfo.drawPlayer.miscCounter % 20 / 5)); Vector2 vector2_6 = new Vector2((float) (r3.Width / 2 * drawinfo.drawPlayer.direction), 0.0f) + new Vector2((float) (-10 * drawinfo.drawPlayer.direction), 8f * drawinfo.drawPlayer.gravDir); Vector2 origin4 = r3.Size() / 2f; DrawData drawData3 = new DrawData(texture2D4, (drawinfo.ItemLocation - Main.screenPosition + vector2_6).Floor(), new Rectangle?(r3), heldItem.GetAlpha(drawinfo.itemColor), drawinfo.drawPlayer.itemRotation, origin4, scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData3); break; default: if (heldItem.useStyle == 5) { if (Item.staff[index1]) { float rotation2 = drawinfo.drawPlayer.itemRotation + 0.785f * (float) drawinfo.drawPlayer.direction; int num7 = 0; int num8 = 0; Vector2 origin5 = new Vector2(0.0f, (float) texture2D1.Height); if (index1 == 3210) { num7 = 8 * -drawinfo.drawPlayer.direction; num8 = 2 * (int) drawinfo.drawPlayer.gravDir; } if (index1 == 3870) { Vector2 vector2_7 = (drawinfo.drawPlayer.itemRotation + 0.7853982f * (float) drawinfo.drawPlayer.direction).ToRotationVector2() * new Vector2((float) -drawinfo.drawPlayer.direction * 1.5f, drawinfo.drawPlayer.gravDir) * 3f; num7 = (int) vector2_7.X; num8 = (int) vector2_7.Y; } if (index1 == 3787) num8 = (int) ((double) (8 * (int) drawinfo.drawPlayer.gravDir) * Math.Cos((double) rotation2)); if ((double) drawinfo.drawPlayer.gravDir == -1.0) { if (drawinfo.drawPlayer.direction == -1) { rotation2 += 1.57f; origin5 = new Vector2((float) texture2D1.Width, 0.0f); num7 -= texture2D1.Width; } else { rotation2 -= 1.57f; origin5 = Vector2.Zero; } } else if (drawinfo.drawPlayer.direction == -1) { origin5 = new Vector2((float) texture2D1.Width, (float) texture2D1.Height); num7 -= texture2D1.Width; } DrawData drawData4 = new DrawData(texture2D1, new Vector2((float) (int) ((double) drawinfo.ItemLocation.X - (double) Main.screenPosition.X + (double) origin5.X + (double) num7), (float) (int) ((double) drawinfo.ItemLocation.Y - (double) Main.screenPosition.Y + (double) num8)), sourceRect, heldItem.GetAlpha(drawinfo.itemColor), rotation2, origin5, scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData4); if (index1 != 3870) break; drawData4 = new DrawData(TextureAssets.GlowMask[238].Value, new Vector2((float) (int) ((double) drawinfo.ItemLocation.X - (double) Main.screenPosition.X + (double) origin5.X + (double) num7), (float) (int) ((double) drawinfo.ItemLocation.Y - (double) Main.screenPosition.Y + (double) num8)), sourceRect, new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, (int) sbyte.MaxValue), rotation2, origin5, scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData4); break; } Vector2 vector2_8 = new Vector2((float) (texture2D1.Width / 2), (float) (texture2D1.Height / 2)); Vector2 vector2_9 = Main.DrawPlayerItemPos(drawinfo.drawPlayer.gravDir, index1); int x = (int) vector2_9.X; vector2_8.Y = vector2_9.Y; Vector2 origin6 = new Vector2((float) -x, (float) (texture2D1.Height / 2)); if (drawinfo.drawPlayer.direction == -1) origin6 = new Vector2((float) (texture2D1.Width + x), (float) (texture2D1.Height / 2)); DrawData drawData5 = new DrawData(texture2D1, new Vector2((float) (int) ((double) drawinfo.ItemLocation.X - (double) Main.screenPosition.X + (double) vector2_8.X), (float) (int) ((double) drawinfo.ItemLocation.Y - (double) Main.screenPosition.Y + (double) vector2_8.Y)), sourceRect, heldItem.GetAlpha(drawinfo.itemColor), drawinfo.drawPlayer.itemRotation, origin6, scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData5); if (heldItem.color != new Color()) { drawData5 = new DrawData(texture2D1, new Vector2((float) (int) ((double) drawinfo.ItemLocation.X - (double) Main.screenPosition.X + (double) vector2_8.X), (float) (int) ((double) drawinfo.ItemLocation.Y - (double) Main.screenPosition.Y + (double) vector2_8.Y)), sourceRect, heldItem.GetColor(drawinfo.itemColor), drawinfo.drawPlayer.itemRotation, origin6, scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData5); } if (heldItem.glowMask != (short) -1) { drawData5 = new DrawData(TextureAssets.GlowMask[(int) heldItem.glowMask].Value, new Vector2((float) (int) ((double) drawinfo.ItemLocation.X - (double) Main.screenPosition.X + (double) vector2_8.X), (float) (int) ((double) drawinfo.ItemLocation.Y - (double) Main.screenPosition.Y + (double) vector2_8.Y)), sourceRect, new Color(250, 250, 250, heldItem.alpha), drawinfo.drawPlayer.itemRotation, origin6, scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData5); } if (index1 != 3788) break; float num9 = (float) ((double) ((float) ((double) drawinfo.drawPlayer.miscCounter / 75.0 * 6.28318548202515)).ToRotationVector2().X * 1.0 + 0.0); Color color3 = new Color(80, 40, 252, 0) * (float) ((double) num9 / 2.0 * 0.300000011920929 + 0.850000023841858) * 0.5f; for (float num10 = 0.0f; (double) num10 < 4.0; ++num10) { drawData5 = new DrawData(TextureAssets.GlowMask[220].Value, new Vector2((float) (int) ((double) drawinfo.ItemLocation.X - (double) Main.screenPosition.X + (double) vector2_8.X), (float) (int) ((double) drawinfo.ItemLocation.Y - (double) Main.screenPosition.Y + (double) vector2_8.Y)) + (num10 * 1.570796f + drawinfo.drawPlayer.itemRotation).ToRotationVector2() * num9, new Rectangle?(), color3, drawinfo.drawPlayer.itemRotation, origin6, scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData5); } break; } if ((double) drawinfo.drawPlayer.gravDir == -1.0) { DrawData drawData6 = new DrawData(texture2D1, position, sourceRect, heldItem.GetAlpha(drawinfo.itemColor), rotation1, origin1, scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData6); if (heldItem.color != new Color()) { drawData6 = new DrawData(texture2D1, position, sourceRect, heldItem.GetColor(drawinfo.itemColor), rotation1, origin1, scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData6); } if (heldItem.glowMask == (short) -1) break; drawData6 = new DrawData(TextureAssets.GlowMask[(int) heldItem.glowMask].Value, position, sourceRect, new Color(250, 250, 250, heldItem.alpha), rotation1, origin1, scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData6); break; } DrawData drawData7 = new DrawData(texture2D1, position, sourceRect, heldItem.GetAlpha(drawinfo.itemColor), rotation1, origin1, scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData7); if (heldItem.color != new Color()) { drawData7 = new DrawData(texture2D1, position, sourceRect, heldItem.GetColor(drawinfo.itemColor), rotation1, origin1, scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData7); } if (heldItem.glowMask != (short) -1) { drawData7 = new DrawData(TextureAssets.GlowMask[(int) heldItem.glowMask].Value, position, sourceRect, color1, rotation1, origin1, scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData7); } if (!heldItem.flame) break; if ((double) drawinfo.shadow != 0.0) break; try { Main.instance.LoadItemFlames(index1); if (!TextureAssets.ItemFlame[index1].IsLoaded) break; Color color4 = new Color(100, 100, 100, 0); int num11 = 7; float num12 = 1f; switch (index1) { case 3045: color4 = new Color(Main.DiscoR, Main.DiscoG, Main.DiscoB, 0); break; case 4952: num11 = 3; num12 = 0.6f; color4 = new Color(50, 50, 50, 0); break; } for (int index2 = 0; index2 < num11; ++index2) { float num13 = drawinfo.drawPlayer.itemFlamePos[index2].X * scale * num12; float num14 = drawinfo.drawPlayer.itemFlamePos[index2].Y * scale * num12; DrawData drawData8 = new DrawData(TextureAssets.ItemFlame[index1].Value, new Vector2((float) (int) ((double) position.X + (double) num13), (float) (int) ((double) position.Y + (double) num14)), sourceRect, color4, rotation1, origin1, scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData8); } break; } catch { break; } } } public static void DrawPlayer_28_ArmOverItem(ref PlayerDrawSet drawinfo) { if (drawinfo.usesCompositeTorso) PlayerDrawLayers.DrawPlayer_28_ArmOverItemComposite(ref drawinfo); else if (drawinfo.drawPlayer.body > 0 && drawinfo.drawPlayer.body < 235) { Rectangle bodyFrame = drawinfo.drawPlayer.bodyFrame; int num1 = drawinfo.armorAdjust; bodyFrame.X += num1; bodyFrame.Width -= num1; if (drawinfo.drawPlayer.direction == -1) num1 = 0; if (drawinfo.drawPlayer.invis && (drawinfo.drawPlayer.body == 21 || drawinfo.drawPlayer.body == 22)) return; DrawData drawData1; if (drawinfo.missingHand && !drawinfo.drawPlayer.invis) { int body = drawinfo.drawPlayer.body; DrawData drawData2; if (drawinfo.missingArm) { drawData2 = new DrawData(TextureAssets.Players[drawinfo.skinVar, 7].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorBodySkin, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawData2.shader = drawinfo.skinDyePacked; DrawData drawData3 = drawData2; drawinfo.DrawDataCache.Add(drawData3); } drawData2 = new DrawData(TextureAssets.Players[drawinfo.skinVar, 9].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorBodySkin, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawData2.shader = drawinfo.skinDyePacked; drawData1 = drawData2; drawinfo.DrawDataCache.Add(drawData1); } drawData1 = new DrawData(TextureAssets.ArmorArm[drawinfo.drawPlayer.body].Value, new Vector2((float) ((int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)) + num1), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(bodyFrame), drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.cBody; drawinfo.DrawDataCache.Add(drawData1); if (drawinfo.armGlowMask != -1) { drawData1 = new DrawData(TextureAssets.GlowMask[drawinfo.armGlowMask].Value, new Vector2((float) ((int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)) + num1), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(bodyFrame), drawinfo.armGlowColor, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.cBody; drawinfo.DrawDataCache.Add(drawData1); } if (drawinfo.drawPlayer.body != 205) return; Color color = new Color(100, 100, 100, 0); ulong seed = (ulong) (drawinfo.drawPlayer.miscCounter / 4); int num2 = 4; for (int index = 0; index < num2; ++index) { float num3 = (float) Utils.RandomInt(ref seed, -10, 11) * 0.2f; float num4 = (float) Utils.RandomInt(ref seed, -10, 1) * 0.15f; drawData1 = new DrawData(TextureAssets.GlowMask[240].Value, new Vector2((float) ((int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)) + num1), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2) + num3, (float) (drawinfo.drawPlayer.bodyFrame.Height / 2) + num4), new Rectangle?(bodyFrame), color, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.cBody; drawinfo.DrawDataCache.Add(drawData1); } } else { if (drawinfo.drawPlayer.invis) return; DrawData drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 7].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorBodySkin, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.skinDyePacked }; drawinfo.DrawDataCache.Add(drawData); drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 8].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorUnderShirt, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); drawData = new DrawData(TextureAssets.Players[drawinfo.skinVar, 13].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorShirt, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } } public static void DrawPlayer_28_ArmOverItemComposite(ref PlayerDrawSet drawinfo) { Vector2 vector2_1 = new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)); Vector2 vector2_2 = Main.OffsetsPlayerHeadgear[drawinfo.drawPlayer.bodyFrame.Y / drawinfo.drawPlayer.bodyFrame.Height]; vector2_2.Y -= 2f; Vector2 vector2_3 = vector2_1 + vector2_2 * (float) -drawinfo.playerEffect.HasFlag((Enum) SpriteEffects.FlipVertically).ToDirectionInt(); float bodyRotation = drawinfo.drawPlayer.bodyRotation; float rotation = drawinfo.drawPlayer.bodyRotation + drawinfo.compositeFrontArmRotation; Vector2 bodyVect = drawinfo.bodyVect; Vector2 compositeOffsetFrontArm = PlayerDrawLayers.GetCompositeOffset_FrontArm(ref drawinfo); Vector2 origin = bodyVect + compositeOffsetFrontArm; Vector2 position1 = vector2_3 + compositeOffsetFrontArm; Vector2 position2 = position1 + drawinfo.frontShoulderOffset; if (drawinfo.compFrontArmFrame.X / drawinfo.compFrontArmFrame.Width >= 7) position1 += new Vector2(drawinfo.playerEffect.HasFlag((Enum) SpriteEffects.FlipHorizontally) ? -1f : 1f, drawinfo.playerEffect.HasFlag((Enum) SpriteEffects.FlipVertically) ? -1f : 1f); int num1 = drawinfo.drawPlayer.invis ? 1 : 0; int num2 = drawinfo.drawPlayer.body <= 0 ? 0 : (drawinfo.drawPlayer.body < 235 ? 1 : 0); int num3 = drawinfo.compShoulderOverFrontArm ? 1 : 0; int num4 = drawinfo.compShoulderOverFrontArm ? 0 : 1; int num5 = drawinfo.compShoulderOverFrontArm ? 0 : 1; bool flag = !drawinfo.hidesTopSkin; DrawData drawData1; if (num2 != 0) { if (!drawinfo.drawPlayer.invis || PlayerDrawLayers.IsArmorDrawnWhenInvisible(drawinfo.drawPlayer.body)) { Texture2D texture = TextureAssets.ArmorBodyComposite[drawinfo.drawPlayer.body].Value; for (int index = 0; index < 2; ++index) { if (((drawinfo.drawPlayer.invis ? 0 : (index == num5 ? 1 : 0)) & (flag ? 1 : 0)) != 0) { if (drawinfo.missingArm) { List drawDataCache = drawinfo.DrawDataCache; drawData1 = new DrawData(TextureAssets.Players[drawinfo.skinVar, 7].Value, position1, new Rectangle?(drawinfo.compFrontArmFrame), drawinfo.colorBodySkin, rotation, origin, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.skinDyePacked; DrawData drawData2 = drawData1; drawDataCache.Add(drawData2); } if (drawinfo.missingHand) { List drawDataCache = drawinfo.DrawDataCache; drawData1 = new DrawData(TextureAssets.Players[drawinfo.skinVar, 9].Value, position1, new Rectangle?(drawinfo.compFrontArmFrame), drawinfo.colorBodySkin, rotation, origin, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.skinDyePacked; DrawData drawData3 = drawData1; drawDataCache.Add(drawData3); } } if (index == num3 && !drawinfo.hideCompositeShoulders) { ref PlayerDrawSet local = ref drawinfo; drawData1 = new DrawData(texture, position2, new Rectangle?(drawinfo.compFrontShoulderFrame), drawinfo.colorArmorBody, bodyRotation, origin, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.cBody; DrawData data = drawData1; PlayerDrawLayers.DrawCompositeArmorPiece(ref local, CompositePlayerDrawContext.FrontShoulder, data); } if (index == num4) { ref PlayerDrawSet local = ref drawinfo; drawData1 = new DrawData(texture, position1, new Rectangle?(drawinfo.compFrontArmFrame), drawinfo.colorArmorBody, rotation, origin, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.cBody; DrawData data = drawData1; PlayerDrawLayers.DrawCompositeArmorPiece(ref local, CompositePlayerDrawContext.FrontArm, data); } } } } else if (!drawinfo.drawPlayer.invis) { for (int index = 0; index < 2; ++index) { if (index == num3) { if (flag) { List drawDataCache = drawinfo.DrawDataCache; drawData1 = new DrawData(TextureAssets.Players[drawinfo.skinVar, 7].Value, position2, new Rectangle?(drawinfo.compFrontShoulderFrame), drawinfo.colorBodySkin, bodyRotation, origin, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.skinDyePacked; DrawData drawData4 = drawData1; drawDataCache.Add(drawData4); } drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 8].Value, position2, new Rectangle?(drawinfo.compFrontShoulderFrame), drawinfo.colorUnderShirt, bodyRotation, origin, 1f, drawinfo.playerEffect, 0)); drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 13].Value, position2, new Rectangle?(drawinfo.compFrontShoulderFrame), drawinfo.colorShirt, bodyRotation, origin, 1f, drawinfo.playerEffect, 0)); drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 6].Value, position2, new Rectangle?(drawinfo.compFrontShoulderFrame), drawinfo.colorShirt, bodyRotation, origin, 1f, drawinfo.playerEffect, 0)); } if (index == num4) { if (flag) { List drawDataCache = drawinfo.DrawDataCache; drawData1 = new DrawData(TextureAssets.Players[drawinfo.skinVar, 7].Value, position1, new Rectangle?(drawinfo.compFrontArmFrame), drawinfo.colorBodySkin, rotation, origin, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.skinDyePacked; DrawData drawData5 = drawData1; drawDataCache.Add(drawData5); } drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 8].Value, position1, new Rectangle?(drawinfo.compFrontArmFrame), drawinfo.colorUnderShirt, rotation, origin, 1f, drawinfo.playerEffect, 0)); drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 13].Value, position1, new Rectangle?(drawinfo.compFrontArmFrame), drawinfo.colorShirt, rotation, origin, 1f, drawinfo.playerEffect, 0)); drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.Players[drawinfo.skinVar, 6].Value, position1, new Rectangle?(drawinfo.compFrontArmFrame), drawinfo.colorShirt, rotation, origin, 1f, drawinfo.playerEffect, 0)); } } } if (drawinfo.drawPlayer.handon <= (sbyte) 0 || drawinfo.drawPlayer.handon >= (sbyte) 22) return; Texture2D texture1 = TextureAssets.AccHandsOnComposite[(int) drawinfo.drawPlayer.handon].Value; ref PlayerDrawSet local1 = ref drawinfo; drawData1 = new DrawData(texture1, position1, new Rectangle?(drawinfo.compFrontArmFrame), drawinfo.colorArmorBody, rotation, origin, 1f, drawinfo.playerEffect, 0); drawData1.shader = drawinfo.cHandOn; DrawData data1 = drawData1; PlayerDrawLayers.DrawCompositeArmorPiece(ref local1, CompositePlayerDrawContext.FrontArmAccessory, data1); } public static void DrawPlayer_29_OnhandAcc(ref PlayerDrawSet drawinfo) { if (drawinfo.usesCompositeFrontHandAcc || drawinfo.drawPlayer.handon <= (sbyte) 0 || drawinfo.drawPlayer.handon >= (sbyte) 22) return; drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.AccHandsOn[(int) drawinfo.drawPlayer.handon].Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.cHandOn }); } public static void DrawPlayer_30_BladedGlove(ref PlayerDrawSet drawinfo) { Item heldItem = drawinfo.heldItem; if (heldItem.type <= -1 || !Item.claw[heldItem.type] || (double) drawinfo.shadow != 0.0) return; Main.instance.LoadItem(heldItem.type); Asset asset = TextureAssets.Item[heldItem.type]; if (drawinfo.drawPlayer.frozen || drawinfo.drawPlayer.itemAnimation <= 0 && (heldItem.holdStyle == 0 || drawinfo.drawPlayer.pulley) || heldItem.type <= 0 || drawinfo.drawPlayer.dead || heldItem.noUseGraphic || drawinfo.drawPlayer.wet && heldItem.noWet) return; if ((double) drawinfo.drawPlayer.gravDir == -1.0) { DrawData drawData = new DrawData(asset.Value, new Vector2((float) (int) ((double) drawinfo.ItemLocation.X - (double) Main.screenPosition.X), (float) (int) ((double) drawinfo.ItemLocation.Y - (double) Main.screenPosition.Y)), new Rectangle?(new Rectangle(0, 0, asset.Width(), asset.Height())), heldItem.GetAlpha(drawinfo.itemColor), drawinfo.drawPlayer.itemRotation, new Vector2((float) ((double) asset.Width() * 0.5 - (double) asset.Width() * 0.5 * (double) drawinfo.drawPlayer.direction), 0.0f), heldItem.scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData); } else { DrawData drawData = new DrawData(asset.Value, new Vector2((float) (int) ((double) drawinfo.ItemLocation.X - (double) Main.screenPosition.X), (float) (int) ((double) drawinfo.ItemLocation.Y - (double) Main.screenPosition.Y)), new Rectangle?(new Rectangle(0, 0, asset.Width(), asset.Height())), heldItem.GetAlpha(drawinfo.itemColor), drawinfo.drawPlayer.itemRotation, new Vector2((float) ((double) asset.Width() * 0.5 - (double) asset.Width() * 0.5 * (double) drawinfo.drawPlayer.direction), (float) asset.Height()), heldItem.scale, drawinfo.itemEffect, 0); drawinfo.DrawDataCache.Add(drawData); } } public static void DrawPlayer_31_ProjectileOverArm(ref PlayerDrawSet drawinfo) { if (drawinfo.drawPlayer.heldProj < 0 || (double) drawinfo.shadow != 0.0 || !drawinfo.heldProjOverHand) return; drawinfo.projectileDrawPosition = drawinfo.DrawDataCache.Count; } public static void DrawPlayer_32_FrontAcc(ref PlayerDrawSet drawinfo) { if (drawinfo.backPack || drawinfo.drawPlayer.front <= (sbyte) 0 || drawinfo.drawPlayer.front >= (sbyte) 9 || drawinfo.drawPlayer.mount.Active) return; Vector2 zero = Vector2.Zero; drawinfo.DrawDataCache.Add(new DrawData(TextureAssets.AccFront[(int) drawinfo.drawPlayer.front].Value, zero + new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(drawinfo.drawPlayer.bodyFrame), drawinfo.colorArmorBody, drawinfo.drawPlayer.bodyRotation, drawinfo.bodyVect, 1f, drawinfo.playerEffect, 0) { shader = drawinfo.cFront }); } public static void DrawPlayer_33_FrozenOrWebbedDebuff(ref PlayerDrawSet drawinfo) { if (drawinfo.drawPlayer.frozen && (double) drawinfo.shadow == 0.0) { Color colorArmorBody = drawinfo.colorArmorBody; colorArmorBody.R = (byte) ((double) colorArmorBody.R * 0.55); colorArmorBody.G = (byte) ((double) colorArmorBody.G * 0.55); colorArmorBody.B = (byte) ((double) colorArmorBody.B * 0.55); colorArmorBody.A = (byte) ((double) colorArmorBody.A * 0.55); DrawData drawData = new DrawData(TextureAssets.Frozen.Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(new Rectangle(0, 0, TextureAssets.Frozen.Width(), TextureAssets.Frozen.Height())), colorArmorBody, drawinfo.drawPlayer.bodyRotation, new Vector2((float) (TextureAssets.Frozen.Width() / 2), (float) (TextureAssets.Frozen.Height() / 2)), 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } else { if (!drawinfo.drawPlayer.webbed || (double) drawinfo.shadow != 0.0 || (double) drawinfo.drawPlayer.velocity.Y != 0.0) return; Color color = drawinfo.colorArmorBody * 0.75f; Texture2D texture2D = TextureAssets.Extra[31].Value; int num = drawinfo.drawPlayer.height / 2; DrawData drawData = new DrawData(texture2D, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0 + (double) num)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(), color, drawinfo.drawPlayer.bodyRotation, texture2D.Size() / 2f, 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } } public static void DrawPlayer_34_ElectrifiedDebuffFront(ref PlayerDrawSet drawinfo) { if (!drawinfo.drawPlayer.electrified || (double) drawinfo.shadow != 0.0) return; Texture2D texture = TextureAssets.GlowMask[25].Value; int num1 = drawinfo.drawPlayer.miscCounter / 5; for (int index = 0; index < 2; ++index) { int num2 = num1 % 7; if (num2 > 1 && num2 < 5) { DrawData drawData = new DrawData(texture, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(new Rectangle(0, num2 * texture.Height / 7, texture.Width, texture.Height / 7)), drawinfo.colorElectricity, drawinfo.drawPlayer.bodyRotation, new Vector2((float) (texture.Width / 2), (float) (texture.Height / 14)), 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } num1 = num2 + 3; } } public static void DrawPlayer_35_IceBarrier(ref PlayerDrawSet drawinfo) { if (!drawinfo.drawPlayer.iceBarrier || (double) drawinfo.shadow != 0.0) return; int height = TextureAssets.IceBarrier.Height() / 12; Color white = Color.White; DrawData drawData = new DrawData(TextureAssets.IceBarrier.Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X - (double) (drawinfo.drawPlayer.bodyFrame.Width / 2) + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - (double) drawinfo.drawPlayer.bodyFrame.Height + 4.0)) + drawinfo.drawPlayer.bodyPosition + new Vector2((float) (drawinfo.drawPlayer.bodyFrame.Width / 2), (float) (drawinfo.drawPlayer.bodyFrame.Height / 2)), new Rectangle?(new Rectangle(0, height * (int) drawinfo.drawPlayer.iceBarrierFrame, TextureAssets.IceBarrier.Width(), height)), white, 0.0f, new Vector2((float) (TextureAssets.Frozen.Width() / 2), (float) (TextureAssets.Frozen.Height() / 2)), 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } public static void DrawPlayer_36_CTG(ref PlayerDrawSet drawinfo) { if ((double) drawinfo.shadow != 0.0 || (byte) drawinfo.drawPlayer.ownedLargeGems <= (byte) 0) return; bool flag = false; BitsByte ownedLargeGems = drawinfo.drawPlayer.ownedLargeGems; float num1 = 0.0f; for (int key = 0; key < 7; ++key) { if (ownedLargeGems[key]) ++num1; } float num2 = (float) (1.0 - (double) num1 * 0.0599999986588955); float num3 = (float) (((double) num1 - 1.0) * 4.0); switch (num1) { case 2f: num3 += 10f; break; case 3f: num3 += 8f; break; case 4f: num3 += 6f; break; case 5f: num3 += 6f; break; case 6f: num3 += 2f; break; case 7f: num3 += 0.0f; break; } float num4 = (float) ((double) drawinfo.drawPlayer.miscCounter / 300.0 * 6.28318548202515); if ((double) num1 <= 0.0) return; float num5 = 6.283185f / num1; float num6 = 0.0f; Vector2 vector2 = new Vector2(1.3f, 0.65f); if (!flag) vector2 = Vector2.One; List drawDataList = new List(); for (int key = 0; key < 7; ++key) { if (!ownedLargeGems[key]) { ++num6; } else { Vector2 rotationVector2 = (num4 + num5 * ((float) key - num6)).ToRotationVector2(); float num7 = num2; if (flag) num7 = MathHelper.Lerp(num2 * 0.7f, 1f, (float) ((double) rotationVector2.Y / 2.0 + 0.5)); Texture2D texture2D = TextureAssets.Gem[key].Value; DrawData drawData = new DrawData(texture2D, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) drawinfo.drawPlayer.height - 80.0)) + rotationVector2 * vector2 * num3, new Rectangle?(), new Color(250, 250, 250, (int) Main.mouseTextColor / 2), 0.0f, texture2D.Size() / 2f, (float) ((double) Main.mouseTextColor / 1000.0 + 0.800000011920929) * num7, SpriteEffects.None, 0); drawDataList.Add(drawData); } } if (flag) drawDataList.Sort(new Comparison(DelegateMethods.CompareDrawSorterByYScale)); drawinfo.DrawDataCache.AddRange((IEnumerable) drawDataList); } public static void DrawPlayer_37_BeetleBuff(ref PlayerDrawSet drawinfo) { if (!drawinfo.drawPlayer.beetleOffense && !drawinfo.drawPlayer.beetleDefense || (double) drawinfo.shadow != 0.0) return; for (int index1 = 0; index1 < drawinfo.drawPlayer.beetleOrbs; ++index1) { DrawData drawData; for (int index2 = 0; index2 < 5; ++index2) { Color colorArmorBody = drawinfo.colorArmorBody; float num = 0.5f - (float) index2 * 0.1f; colorArmorBody.R = (byte) ((double) colorArmorBody.R * (double) num); colorArmorBody.G = (byte) ((double) colorArmorBody.G * (double) num); colorArmorBody.B = (byte) ((double) colorArmorBody.B * (double) num); colorArmorBody.A = (byte) ((double) colorArmorBody.A * (double) num); Vector2 vector2 = -drawinfo.drawPlayer.beetleVel[index1] * (float) index2; drawData = new DrawData(TextureAssets.Beetle.Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) (drawinfo.drawPlayer.height / 2))) + drawinfo.drawPlayer.beetlePos[index1] + vector2, new Rectangle?(new Rectangle(0, TextureAssets.Beetle.Height() / 3 * drawinfo.drawPlayer.beetleFrame + 1, TextureAssets.Beetle.Width(), TextureAssets.Beetle.Height() / 3 - 2)), colorArmorBody, 0.0f, new Vector2((float) (TextureAssets.Beetle.Width() / 2), (float) (TextureAssets.Beetle.Height() / 6)), 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } drawData = new DrawData(TextureAssets.Beetle.Value, new Vector2((float) (int) ((double) drawinfo.Position.X - (double) Main.screenPosition.X + (double) (drawinfo.drawPlayer.width / 2)), (float) (int) ((double) drawinfo.Position.Y - (double) Main.screenPosition.Y + (double) (drawinfo.drawPlayer.height / 2))) + drawinfo.drawPlayer.beetlePos[index1], new Rectangle?(new Rectangle(0, TextureAssets.Beetle.Height() / 3 * drawinfo.drawPlayer.beetleFrame + 1, TextureAssets.Beetle.Width(), TextureAssets.Beetle.Height() / 3 - 2)), drawinfo.colorArmorBody, 0.0f, new Vector2((float) (TextureAssets.Beetle.Width() / 2), (float) (TextureAssets.Beetle.Height() / 6)), 1f, drawinfo.playerEffect, 0); drawinfo.DrawDataCache.Add(drawData); } } private static Vector2 GetCompositeOffset_BackArm(ref PlayerDrawSet drawinfo) => new Vector2((float) (6 * (drawinfo.playerEffect.HasFlag((Enum) SpriteEffects.FlipHorizontally) ? -1 : 1)), (float) (2 * (drawinfo.playerEffect.HasFlag((Enum) SpriteEffects.FlipVertically) ? -1 : 1))); private static Vector2 GetCompositeOffset_FrontArm(ref PlayerDrawSet drawinfo) => new Vector2((float) (-5 * (drawinfo.playerEffect.HasFlag((Enum) SpriteEffects.FlipHorizontally) ? -1 : 1)), 0.0f); public static void DrawPlayer_TransformDrawData(ref PlayerDrawSet drawinfo) { double rotation = (double) drawinfo.rotation; Vector2 vector2_1 = drawinfo.Position - Main.screenPosition + drawinfo.rotationOrigin; Vector2 vector2_2 = drawinfo.drawPlayer.position + drawinfo.rotationOrigin; Matrix rotationZ = Matrix.CreateRotationZ(drawinfo.rotation); for (int index = 0; index < drawinfo.DustCache.Count; ++index) { Vector2 vector2_3 = Vector2.Transform(Main.dust[drawinfo.DustCache[index]].position - vector2_2, rotationZ); Main.dust[drawinfo.DustCache[index]].position = vector2_3 + vector2_2; } for (int index = 0; index < drawinfo.GoreCache.Count; ++index) { Vector2 vector2_4 = Vector2.Transform(Main.gore[drawinfo.GoreCache[index]].position - vector2_2, rotationZ); Main.gore[drawinfo.GoreCache[index]].position = vector2_4 + vector2_2; } for (int index = 0; index < drawinfo.DrawDataCache.Count; ++index) { DrawData drawData = drawinfo.DrawDataCache[index]; if (!drawData.ignorePlayerRotation) { Vector2 vector2_5 = Vector2.Transform(drawData.position - vector2_1, rotationZ); drawData.position = vector2_5 + vector2_1; drawData.rotation += drawinfo.rotation; drawinfo.DrawDataCache[index] = drawData; } } } public static void DrawPlayer_ScaleDrawData(ref PlayerDrawSet drawinfo, float scale) { if ((double) scale == 1.0) return; Vector2 vector2_1 = drawinfo.Position + drawinfo.drawPlayer.Size * new Vector2(0.5f, 1f) - Main.screenPosition; for (int index = 0; index < drawinfo.DrawDataCache.Count; ++index) { DrawData drawData = drawinfo.DrawDataCache[index]; Vector2 vector2_2 = drawData.position - vector2_1; drawData.position = vector2_1 + vector2_2 * scale; drawData.scale *= scale; drawinfo.DrawDataCache[index] = drawData; } } public static void DrawPlayer_AddSelectionGlow(ref PlayerDrawSet drawinfo) { if (drawinfo.selectionGlowColor == Color.Transparent) return; Color selectionGlowColor = drawinfo.selectionGlowColor; List drawDataList = new List(); drawDataList.AddRange((IEnumerable) PlayerDrawLayers.GetFlatColoredCloneData(ref drawinfo, new Vector2(0.0f, -2f), selectionGlowColor)); drawDataList.AddRange((IEnumerable) PlayerDrawLayers.GetFlatColoredCloneData(ref drawinfo, new Vector2(0.0f, 2f), selectionGlowColor)); drawDataList.AddRange((IEnumerable) PlayerDrawLayers.GetFlatColoredCloneData(ref drawinfo, new Vector2(2f, 0.0f), selectionGlowColor)); drawDataList.AddRange((IEnumerable) PlayerDrawLayers.GetFlatColoredCloneData(ref drawinfo, new Vector2(-2f, 0.0f), selectionGlowColor)); drawDataList.AddRange((IEnumerable) drawinfo.DrawDataCache); drawinfo.DrawDataCache = drawDataList; } public static void DrawPlayer_MakeIntoFirstFractalAfterImage(ref PlayerDrawSet drawinfo) { if (!drawinfo.drawPlayer.isFirstFractalAfterImage) { int num = drawinfo.drawPlayer.HeldItem.type != 4722 ? 0 : (drawinfo.drawPlayer.itemAnimation > 0 ? 1 : 0); } else { for (int index = 0; index < drawinfo.DrawDataCache.Count; ++index) { DrawData drawData = drawinfo.DrawDataCache[index]; drawData.color *= drawinfo.drawPlayer.firstFractalAfterImageOpacity; drawData.color.A = (byte) ((double) drawData.color.A * 0.800000011920929); drawinfo.DrawDataCache[index] = drawData; } } } public static void DrawPlayer_RenderAllLayers(ref PlayerDrawSet drawinfo) { int num = -1; List drawDataCache = drawinfo.DrawDataCache; Effect pixelShader = Main.pixelShader; Projectile[] projectile = Main.projectile; SpriteBatch spriteBatch = Main.spriteBatch; for (int index = 0; index <= drawDataCache.Count; ++index) { if (drawinfo.projectileDrawPosition == index) { projectile[drawinfo.drawPlayer.heldProj].gfxOffY = drawinfo.drawPlayer.gfxOffY; if (num != 0) { pixelShader.CurrentTechnique.Passes[0].Apply(); num = 0; } try { Main.instance.DrawProj(drawinfo.drawPlayer.heldProj); } catch { projectile[drawinfo.drawPlayer.heldProj].active = false; } } if (index != drawDataCache.Count) { DrawData cdd = drawDataCache[index]; if (!cdd.sourceRect.HasValue) cdd.sourceRect = new Rectangle?(cdd.texture.Frame()); PlayerDrawHelper.SetShaderForData(drawinfo.drawPlayer, drawinfo.cHead, ref cdd); num = cdd.shader; if (cdd.texture != null) cdd.Draw(spriteBatch); } } pixelShader.CurrentTechnique.Passes[0].Apply(); } public static void DrawPlayer_DrawSelectionRect(ref PlayerDrawSet drawinfo) { Vector2 lowest; Vector2 highest; SpriteRenderTargetHelper.GetDrawBoundary(drawinfo.DrawDataCache, out lowest, out highest); Utils.DrawRect(Main.spriteBatch, lowest + Main.screenPosition, highest + Main.screenPosition, Color.White); } private static bool IsArmorDrawnWhenInvisible(int torsoID) { switch (torsoID) { case 21: case 22: return false; default: return true; } } private static DrawData[] GetFlatColoredCloneData( ref PlayerDrawSet drawinfo, Vector2 offset, Color color) { int colorOnlyShaderIndex = ContentSamples.CommonlyUsedContentSamples.ColorOnlyShaderIndex; DrawData[] drawDataArray = new DrawData[drawinfo.DrawDataCache.Count]; for (int index = 0; index < drawinfo.DrawDataCache.Count; ++index) { DrawData drawData = drawinfo.DrawDataCache[index]; drawData.position += offset; drawData.shader = colorOnlyShaderIndex; drawData.color = color; drawDataArray[index] = drawData; } return drawDataArray; } } }