Files
tbd-station-14/Content.Client/GameObjects/Components/Mobs/HairComponent.cs
Pieter-Jan Briers e0a4735fe2 Switch to TG hair sprites.
This removes the need for a separate shader because they're multiply-based instead of additive like /vg/ or Bay.
2020-01-12 02:04:13 +01:00

73 lines
1.9 KiB
C#

using Content.Shared.GameObjects.Components.Mobs;
using Content.Shared.Preferences.Appearance;
using Robust.Client.GameObjects;
using Robust.Shared.GameObjects;
using Robust.Shared.Maths;
namespace Content.Client.GameObjects.Components.Mobs
{
[RegisterComponent]
public sealed class HairComponent : SharedHairComponent
{
protected override void Startup()
{
base.Startup();
UpdateHairStyle();
}
public override string FacialHairStyleName
{
get => base.FacialHairStyleName;
set
{
base.FacialHairStyleName = value;
UpdateHairStyle();
}
}
public override string HairStyleName
{
get => base.HairStyleName;
set
{
base.HairStyleName = value;
UpdateHairStyle();
}
}
public override Color HairColor
{
get => base.HairColor;
set
{
base.HairColor = value;
UpdateHairStyle();
}
}
public override Color FacialHairColor
{
get => base.FacialHairColor;
set
{
base.FacialHairColor = value;
UpdateHairStyle();
}
}
private void UpdateHairStyle()
{
var sprite = Owner.GetComponent<SpriteComponent>();
sprite.LayerSetColor(HumanoidVisualLayers.Hair, HairColor);
sprite.LayerSetColor(HumanoidVisualLayers.FacialHair, FacialHairColor);
sprite.LayerSetState(HumanoidVisualLayers.Hair,
HairStyles.HairStylesMap[HairStyleName ?? HairStyles.DefaultHairStyle]);
sprite.LayerSetState(HumanoidVisualLayers.FacialHair,
HairStyles.FacialHairStylesMap[FacialHairStyleName ?? HairStyles.DefaultFacialHairStyle]);
}
}
}