Added hair, facial hair, magic mirror (#452)

* Added hair, facial hair, magic mirror

* I forgot to commit the textures lmao

* Use shader to fix hair color blending
This commit is contained in:
DamianX
2019-11-23 21:55:46 +01:00
committed by Pieter-Jan Briers
parent b89615342e
commit 3a7a3a89ba
192 changed files with 767 additions and 3 deletions

View File

@@ -0,0 +1,96 @@
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;
}
}
}
}