Terraria.Player.GetHairColor C# (CSharp) Method

GetHairColor() public method

public GetHairColor ( bool useLighting = true ) : Color
useLighting bool
return Color
        public Color GetHairColor(bool useLighting = true)
        {
            Color color = Lighting.GetColor((int)((double)this.position.X + (double)this.width * 0.5) / 16, (int)(((double)this.position.Y + (double)this.height * 0.25) / 16.0));
            return GameShaders.Hair.GetColor((short)this.hairDye, this, useLighting ? color : Color.White);
        }

Usage Example

Example #1
0
		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;
		}
All Usage Examples Of Terraria.Player::GetHairColor
Player