protected void DrawPlayerHead(Player drawPlayer, float X, float Y, float Alpha = 1f, float Scale = 1f)
{
int num = 0;
int num2 = 0;
for (int i = 0; i < 16; i++)
{
int num3 = i % 8;
if (drawPlayer.dye[num3] != null && drawPlayer.armor[i].type > 0 && drawPlayer.armor[i].stack > 0 && drawPlayer.armor[i].faceSlot > 0 && drawPlayer.armor[i].faceSlot < 9)
{
num2 = (int)drawPlayer.dye[num3].dye;
}
}
if (drawPlayer.face > 0 && drawPlayer.face < 9)
{
this.LoadAccFace((int)drawPlayer.face);
}
if (drawPlayer.dye[0] != null)
{
num = (int)drawPlayer.dye[0].dye;
}
int num4 = 0;
switch (drawPlayer.team)
{
case 1:
num4 = 1;
break;
case 2:
num4 = 5;
break;
case 3:
num4 = 9;
break;
case 4:
num4 = 3;
break;
}
if (num == 65)
{
num = num4;
}
if (num2 == 65)
{
num2 = num4;
}
this.LoadHair(drawPlayer.hair);
Color color = this.quickAlpha(Color.White, Alpha);
Color color2 = this.quickAlpha(drawPlayer.eyeColor, Alpha);
Color color3 = this.quickAlpha(drawPlayer.GetHairColor(false), Alpha);
Color color4 = this.quickAlpha(drawPlayer.skinColor, Alpha);
Color color5 = this.quickAlpha(Color.White, Alpha);
SpriteEffects effects = SpriteEffects.None;
if (drawPlayer.direction < 0)
{
effects = SpriteEffects.FlipHorizontally;
}
Vector2 vector = new Vector2((float)drawPlayer.legFrame.Width * 0.5f, (float)drawPlayer.legFrame.Height * 0.4f);
Vector2 position = drawPlayer.position;
Rectangle bodyFrame = drawPlayer.bodyFrame;
drawPlayer.bodyFrame.Y = 0;
drawPlayer.position = Main.screenPosition;
drawPlayer.position.X = drawPlayer.position.X + X;
drawPlayer.position.Y = drawPlayer.position.Y + Y;
drawPlayer.position.X = drawPlayer.position.X - 6f;
drawPlayer.position.Y = drawPlayer.position.Y - 4f;
float num5 = (float)drawPlayer.mount.PlayerHeadOffset;
drawPlayer.position.Y = drawPlayer.position.Y - num5;
if (drawPlayer.head > 0 && drawPlayer.head < 169)
{
this.LoadArmorHead(drawPlayer.head);
}
if (drawPlayer.face > 0 && drawPlayer.face < 9)
{
this.LoadAccFace((int)drawPlayer.face);
}
if (drawPlayer.head != 38 && drawPlayer.head != 135)
{
Main.spriteBatch.Draw(Main.playerHeadTexture, new Vector2(drawPlayer.position.X - Main.screenPosition.X - (float)(drawPlayer.bodyFrame.Width / 2) + (float)(drawPlayer.width / 2), drawPlayer.position.Y - Main.screenPosition.Y + (float)drawPlayer.height - (float)drawPlayer.bodyFrame.Height + 4f) + drawPlayer.headPosition + vector, new Rectangle?(drawPlayer.bodyFrame), color4, drawPlayer.headRotation, vector, Scale, effects, 0f);
Main.spriteBatch.Draw(Main.playerEyeWhitesTexture, new Vector2(drawPlayer.position.X - Main.screenPosition.X - (float)(drawPlayer.bodyFrame.Width / 2) + (float)(drawPlayer.width / 2), drawPlayer.position.Y - Main.screenPosition.Y + (float)drawPlayer.height - (float)drawPlayer.bodyFrame.Height + 4f) + drawPlayer.headPosition + vector, new Rectangle?(drawPlayer.bodyFrame), color, drawPlayer.headRotation, vector, Scale, effects, 0f);
Main.spriteBatch.Draw(Main.playerEyesTexture, new Vector2(drawPlayer.position.X - Main.screenPosition.X - (float)(drawPlayer.bodyFrame.Width / 2) + (float)(drawPlayer.width / 2), drawPlayer.position.Y - Main.screenPosition.Y + (float)drawPlayer.height - (float)drawPlayer.bodyFrame.Height + 4f) + drawPlayer.headPosition + vector, new Rectangle?(drawPlayer.bodyFrame), color2, drawPlayer.headRotation, vector, Scale, effects, 0f);
}
if (drawPlayer.head == 10 || drawPlayer.head == 12 || drawPlayer.head == 28 || drawPlayer.head == 62 || drawPlayer.head == 97 || drawPlayer.head == 106 || drawPlayer.head == 113 || drawPlayer.head == 116 || drawPlayer.head == 119 || drawPlayer.head == 133 || drawPlayer.head == 138 || drawPlayer.head == 139 || drawPlayer.head == 163)
{
Main.pixelShader.CurrentTechnique.Passes[num].Apply();
Main.spriteBatch.Draw(Main.armorHeadTexture[drawPlayer.head], new Vector2(drawPlayer.position.X - Main.screenPosition.X - (float)(drawPlayer.bodyFrame.Width / 2) + (float)(drawPlayer.width / 2), drawPlayer.position.Y - Main.screenPosition.Y + (float)drawPlayer.height - (float)drawPlayer.bodyFrame.Height + 4f) + drawPlayer.headPosition + vector, new Rectangle?(drawPlayer.bodyFrame), color5, drawPlayer.headRotation, vector, Scale, effects, 0f);
Main.pixelShader.CurrentTechnique.Passes[0].Apply();
if (!drawPlayer.invis)
{
Rectangle bodyFrame2 = drawPlayer.bodyFrame;
bodyFrame2.Y -= 336;
if (bodyFrame2.Y < 0)
{
bodyFrame2.Y = 0;
}
Main.spriteBatch.Draw(Main.playerHairTexture[drawPlayer.hair], new Vector2(drawPlayer.position.X - Main.screenPosition.X - (float)(drawPlayer.bodyFrame.Width / 2) + (float)(drawPlayer.width / 2), drawPlayer.position.Y - Main.screenPosition.Y + (float)drawPlayer.height - (float)drawPlayer.bodyFrame.Height + 4f) + drawPlayer.headPosition + vector, new Rectangle?(bodyFrame2), color3, drawPlayer.headRotation, vector, Scale, effects, 0f);
}
}
if (drawPlayer.head == 161 || drawPlayer.head == 14 || drawPlayer.head == 15 || drawPlayer.head == 16 || drawPlayer.head == 18 || drawPlayer.head == 21 || drawPlayer.head == 24 || drawPlayer.head == 25 || drawPlayer.head == 26 || drawPlayer.head == 40 || drawPlayer.head == 44 || drawPlayer.head == 51 || drawPlayer.head == 56 || drawPlayer.head == 59 || drawPlayer.head == 60 || drawPlayer.head == 67 || drawPlayer.head == 68 || drawPlayer.head == 69 || drawPlayer.head == 114 || drawPlayer.head == 121 || drawPlayer.head == 126 || drawPlayer.head == 130 || drawPlayer.head == 136 || drawPlayer.head == 140 || drawPlayer.head == 145 || drawPlayer.head == 158 || drawPlayer.head == 159)
{
Rectangle bodyFrame3 = drawPlayer.bodyFrame;
bodyFrame3.Y -= 336;
if (bodyFrame3.Y < 0)
{
bodyFrame3.Y = 0;
}
if (!drawPlayer.invis)
{
Main.spriteBatch.Draw(Main.playerHairAltTexture[drawPlayer.hair], new Vector2(drawPlayer.position.X - Main.screenPosition.X - (float)(drawPlayer.bodyFrame.Width / 2) + (float)(drawPlayer.width / 2), drawPlayer.position.Y - Main.screenPosition.Y + (float)drawPlayer.height - (float)drawPlayer.bodyFrame.Height + 4f) + drawPlayer.headPosition + vector, new Rectangle?(bodyFrame3), color3, drawPlayer.headRotation, vector, Scale, effects, 0f);
}
}
if (drawPlayer.head == 23)
{
Rectangle bodyFrame4 = drawPlayer.bodyFrame;
bodyFrame4.Y -= 336;
if (bodyFrame4.Y < 0)
{
bodyFrame4.Y = 0;
}
if (!drawPlayer.invis)
{
Main.spriteBatch.Draw(Main.playerHairTexture[drawPlayer.hair], new Vector2(drawPlayer.position.X - Main.screenPosition.X - (float)(drawPlayer.bodyFrame.Width / 2) + (float)(drawPlayer.width / 2), drawPlayer.position.Y - Main.screenPosition.Y + (float)drawPlayer.height - (float)drawPlayer.bodyFrame.Height + 4f) + drawPlayer.headPosition + vector, new Rectangle?(bodyFrame4), color3, drawPlayer.headRotation, vector, Scale, effects, 0f);
}
Main.pixelShader.CurrentTechnique.Passes[num].Apply();
Main.spriteBatch.Draw(Main.armorHeadTexture[drawPlayer.head], new Vector2(drawPlayer.position.X - Main.screenPosition.X - (float)(drawPlayer.bodyFrame.Width / 2) + (float)(drawPlayer.width / 2), drawPlayer.position.Y - Main.screenPosition.Y + (float)drawPlayer.height - (float)drawPlayer.bodyFrame.Height + 4f) + drawPlayer.headPosition + vector, new Rectangle?(drawPlayer.bodyFrame), color5, drawPlayer.headRotation, vector, Scale, effects, 0f);
Main.pixelShader.CurrentTechnique.Passes[0].Apply();
}
else
{
if (drawPlayer.head == 14 || drawPlayer.head == 56 || drawPlayer.head == 158)
{
Rectangle bodyFrame5 = drawPlayer.bodyFrame;
if (drawPlayer.head == 158)
{
bodyFrame5.Height -= 2;
}
int num6 = 0;
if (bodyFrame5.Y == bodyFrame5.Height * 6)
{
bodyFrame5.Height -= 2;
}
else
{
if (bodyFrame5.Y == bodyFrame5.Height * 7)
{
num6 = -2;
}
else
{
if (bodyFrame5.Y == bodyFrame5.Height * 8)
{
num6 = -2;
}
else
{
if (bodyFrame5.Y == bodyFrame5.Height * 9)
{
num6 = -2;
}
else
{
if (bodyFrame5.Y == bodyFrame5.Height * 10)
{
num6 = -2;
}
else
{
if (bodyFrame5.Y == bodyFrame5.Height * 13)
{
bodyFrame5.Height -= 2;
}
else
{
if (bodyFrame5.Y == bodyFrame5.Height * 14)
{
num6 = -2;
}
else
{
if (bodyFrame5.Y == bodyFrame5.Height * 15)
{
num6 = -2;
}
else
{
if (bodyFrame5.Y == bodyFrame5.Height * 16)
{
num6 = -2;
}
}
}
}
}
}
}
}
}
bodyFrame5.Y += num6;
Main.pixelShader.CurrentTechnique.Passes[num].Apply();
Main.spriteBatch.Draw(Main.armorHeadTexture[drawPlayer.head], new Vector2(drawPlayer.position.X - Main.screenPosition.X - (float)(drawPlayer.bodyFrame.Width / 2) + (float)(drawPlayer.width / 2), drawPlayer.position.Y - Main.screenPosition.Y + (float)drawPlayer.height - (float)drawPlayer.bodyFrame.Height + 4f + (float)num6) + drawPlayer.headPosition + vector, new Rectangle?(bodyFrame5), color5, drawPlayer.headRotation, vector, Scale, effects, 0f);
Main.pixelShader.CurrentTechnique.Passes[0].Apply();
}
else
{
if (drawPlayer.head > 0 && drawPlayer.head < 169 && drawPlayer.head != 28)
{
Main.pixelShader.CurrentTechnique.Passes[num].Apply();
Main.spriteBatch.Draw(Main.armorHeadTexture[drawPlayer.head], new Vector2(drawPlayer.position.X - Main.screenPosition.X - (float)(drawPlayer.bodyFrame.Width / 2) + (float)(drawPlayer.width / 2), drawPlayer.position.Y - Main.screenPosition.Y + (float)drawPlayer.height - (float)drawPlayer.bodyFrame.Height + 4f) + drawPlayer.headPosition + vector, new Rectangle?(drawPlayer.bodyFrame), color5, drawPlayer.headRotation, vector, Scale, effects, 0f);
Main.pixelShader.CurrentTechnique.Passes[0].Apply();
}
else
{
Rectangle bodyFrame6 = drawPlayer.bodyFrame;
bodyFrame6.Y -= 336;
if (bodyFrame6.Y < 0)
{
bodyFrame6.Y = 0;
}
Main.spriteBatch.Draw(Main.playerHairTexture[drawPlayer.hair], new Vector2(drawPlayer.position.X - Main.screenPosition.X - (float)(drawPlayer.bodyFrame.Width / 2) + (float)(drawPlayer.width / 2), drawPlayer.position.Y - Main.screenPosition.Y + (float)drawPlayer.height - (float)drawPlayer.bodyFrame.Height + 4f) + drawPlayer.headPosition + vector, new Rectangle?(bodyFrame6), color3, drawPlayer.headRotation, vector, Scale, effects, 0f);
}
}
}
if (drawPlayer.face > 0 && drawPlayer.face < 9)
{
Main.pixelShader.CurrentTechnique.Passes[num2].Apply();
if (drawPlayer.face == 7)
{
Main.spriteBatch.Draw(Main.accFaceTexture[(int)drawPlayer.face], new Vector2((float)((int)(drawPlayer.position.X - Main.screenPosition.X - (float)(drawPlayer.bodyFrame.Width / 2) + (float)(drawPlayer.width / 2))), (float)((int)(drawPlayer.position.Y - Main.screenPosition.Y + (float)drawPlayer.height - (float)drawPlayer.bodyFrame.Height + 4f))) + drawPlayer.headPosition + vector, new Rectangle?(drawPlayer.bodyFrame), new Color(200, 200, 200, 150), drawPlayer.headRotation, vector, Scale, effects, 0f);
}
else
{
Main.spriteBatch.Draw(Main.accFaceTexture[(int)drawPlayer.face], new Vector2((float)((int)(drawPlayer.position.X - Main.screenPosition.X - (float)(drawPlayer.bodyFrame.Width / 2) + (float)(drawPlayer.width / 2))), (float)((int)(drawPlayer.position.Y - Main.screenPosition.Y + (float)drawPlayer.height - (float)drawPlayer.bodyFrame.Height + 4f))) + drawPlayer.headPosition + vector, new Rectangle?(drawPlayer.bodyFrame), color5, drawPlayer.headRotation, vector, Scale, effects, 0f);
}
Main.pixelShader.CurrentTechnique.Passes[0].Apply();
}
drawPlayer.position = position;
drawPlayer.bodyFrame.Y = bodyFrame.Y;
}