* Added hair, facial hair, magic mirror * I forgot to commit the textures lmao * Use shader to fix hair color blending
97 lines
2.8 KiB
C#
97 lines
2.8 KiB
C#
using System;
|
|
using Robust.Shared.GameObjects;
|
|
using Robust.Shared.Maths;
|
|
using Robust.Shared.Serialization;
|
|
using Robust.Shared.ViewVariables;
|
|
|
|
namespace Content.Shared.GameObjects.Components.Mobs
|
|
{
|
|
public abstract class SharedHairComponent : Component
|
|
{
|
|
private string _facialHairStyleName;
|
|
private string _hairStyleName;
|
|
private Color _hairColor;
|
|
private Color _facialHairColor;
|
|
|
|
public sealed override string Name => "Hair";
|
|
public sealed override uint? NetID => ContentNetIDs.HAIR;
|
|
public sealed override Type StateType => typeof(HairComponentState);
|
|
|
|
[ViewVariables(VVAccess.ReadWrite)]
|
|
public virtual string HairStyleName
|
|
{
|
|
get => _hairStyleName;
|
|
set
|
|
{
|
|
_hairStyleName = value;
|
|
Dirty();
|
|
}
|
|
}
|
|
|
|
[ViewVariables(VVAccess.ReadWrite)]
|
|
public virtual string FacialHairStyleName
|
|
{
|
|
get => _facialHairStyleName;
|
|
set
|
|
{
|
|
_facialHairStyleName = value;
|
|
Dirty();
|
|
}
|
|
}
|
|
|
|
[ViewVariables(VVAccess.ReadWrite)]
|
|
public virtual Color HairColor
|
|
{
|
|
get => _hairColor;
|
|
set
|
|
{
|
|
_hairColor = value;
|
|
Dirty();
|
|
}
|
|
}
|
|
|
|
[ViewVariables(VVAccess.ReadWrite)]
|
|
public virtual Color FacialHairColor
|
|
{
|
|
get => _facialHairColor;
|
|
set
|
|
{
|
|
_facialHairColor = value;
|
|
Dirty();
|
|
}
|
|
}
|
|
|
|
public override ComponentState GetComponentState()
|
|
{
|
|
return new HairComponentState(HairStyleName, FacialHairStyleName, HairColor, FacialHairColor);
|
|
}
|
|
|
|
public override void HandleComponentState(ComponentState curState, ComponentState nextState)
|
|
{
|
|
var cast = (HairComponentState) curState;
|
|
|
|
HairStyleName = cast.HairStyleName;
|
|
FacialHairStyleName = cast.FacialHairStyleName;
|
|
HairColor = cast.HairColor;
|
|
FacialHairColor = cast.FacialHairColor;
|
|
}
|
|
|
|
[Serializable, NetSerializable]
|
|
private sealed class HairComponentState : ComponentState
|
|
{
|
|
public string HairStyleName { get; }
|
|
public string FacialHairStyleName { get; }
|
|
public Color HairColor { get; }
|
|
public Color FacialHairColor { get; }
|
|
|
|
public HairComponentState(string hairStyleName, string facialHairStyleName, Color hairColor, Color facialHairColor) : base(ContentNetIDs.HAIR)
|
|
{
|
|
HairStyleName = hairStyleName;
|
|
FacialHairStyleName = facialHairStyleName;
|
|
HairColor = hairColor;
|
|
FacialHairColor = facialHairColor;
|
|
}
|
|
}
|
|
}
|
|
}
|