Co-authored-by: Michael Will <will_m@outlook.de>
This commit is contained in:
@@ -1,47 +1,90 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Content.Shared.Body.Part;
|
||||
|
||||
namespace Content.Shared.CharacterAppearance
|
||||
{
|
||||
public static class HumanoidVisualLayersExtension
|
||||
{
|
||||
public static HumanoidVisualLayers? ToHumanoidLayer(this SharedBodyPartComponent part)
|
||||
public static IEnumerable<HumanoidVisualLayers> ToHumanoidLayers(this SharedBodyPartComponent part)
|
||||
{
|
||||
return part.PartType switch
|
||||
switch (part.PartType)
|
||||
{
|
||||
BodyPartType.Other => null,
|
||||
BodyPartType.Torso => HumanoidVisualLayers.Chest,
|
||||
BodyPartType.Head => HumanoidVisualLayers.Head,
|
||||
BodyPartType.Arm => part.Symmetry switch
|
||||
{
|
||||
BodyPartSymmetry.None => null,
|
||||
BodyPartSymmetry.Left => HumanoidVisualLayers.LArm,
|
||||
BodyPartSymmetry.Right => HumanoidVisualLayers.RArm,
|
||||
_ => throw new ArgumentOutOfRangeException()
|
||||
},
|
||||
BodyPartType.Hand => part.Symmetry switch
|
||||
{
|
||||
BodyPartSymmetry.None => null,
|
||||
BodyPartSymmetry.Left => HumanoidVisualLayers.LHand,
|
||||
BodyPartSymmetry.Right => HumanoidVisualLayers.RHand,
|
||||
_ => throw new ArgumentOutOfRangeException()
|
||||
},
|
||||
BodyPartType.Leg => part.Symmetry switch
|
||||
{
|
||||
BodyPartSymmetry.None => null,
|
||||
BodyPartSymmetry.Left => HumanoidVisualLayers.LLeg,
|
||||
BodyPartSymmetry.Right => HumanoidVisualLayers.RLeg,
|
||||
_ => throw new ArgumentOutOfRangeException()
|
||||
},
|
||||
BodyPartType.Foot => part.Symmetry switch
|
||||
{
|
||||
BodyPartSymmetry.None => null,
|
||||
BodyPartSymmetry.Left => HumanoidVisualLayers.LFoot,
|
||||
BodyPartSymmetry.Right => HumanoidVisualLayers.RFoot,
|
||||
_ => throw new ArgumentOutOfRangeException()
|
||||
},
|
||||
_ => throw new ArgumentOutOfRangeException()
|
||||
};
|
||||
case BodyPartType.Other:
|
||||
yield break;
|
||||
case BodyPartType.Torso:
|
||||
yield return HumanoidVisualLayers.Chest;
|
||||
break;
|
||||
case BodyPartType.Head:
|
||||
yield return HumanoidVisualLayers.Head;
|
||||
yield return HumanoidVisualLayers.Eyes;
|
||||
yield return HumanoidVisualLayers.FacialHair;
|
||||
yield return HumanoidVisualLayers.Hair;
|
||||
yield return HumanoidVisualLayers.StencilMask;
|
||||
break;
|
||||
case BodyPartType.Arm:
|
||||
switch (part.Symmetry)
|
||||
{
|
||||
case BodyPartSymmetry.None:
|
||||
yield break;
|
||||
case BodyPartSymmetry.Left:
|
||||
yield return HumanoidVisualLayers.LArm;
|
||||
break;
|
||||
case BodyPartSymmetry.Right:
|
||||
yield return HumanoidVisualLayers.RArm;
|
||||
break;
|
||||
default:
|
||||
yield break;
|
||||
}
|
||||
yield break;
|
||||
case BodyPartType.Hand:
|
||||
switch (part.Symmetry)
|
||||
{
|
||||
case BodyPartSymmetry.None:
|
||||
yield break;
|
||||
case BodyPartSymmetry.Left:
|
||||
yield return HumanoidVisualLayers.LHand;
|
||||
break;
|
||||
case BodyPartSymmetry.Right:
|
||||
yield return HumanoidVisualLayers.RHand;
|
||||
break;
|
||||
default:
|
||||
yield break;
|
||||
}
|
||||
yield break;
|
||||
case BodyPartType.Leg:
|
||||
switch (part.Symmetry)
|
||||
{
|
||||
case BodyPartSymmetry.None:
|
||||
yield break;
|
||||
case BodyPartSymmetry.Left:
|
||||
yield return HumanoidVisualLayers.LLeg;
|
||||
break;
|
||||
case BodyPartSymmetry.Right:
|
||||
yield return HumanoidVisualLayers.RLeg;
|
||||
break;
|
||||
default:
|
||||
yield break;
|
||||
}
|
||||
yield break;
|
||||
case BodyPartType.Foot:
|
||||
switch (part.Symmetry)
|
||||
{
|
||||
case BodyPartSymmetry.None:
|
||||
yield break;
|
||||
case BodyPartSymmetry.Left:
|
||||
yield return HumanoidVisualLayers.LFoot;
|
||||
break;
|
||||
case BodyPartSymmetry.Right:
|
||||
yield return HumanoidVisualLayers.RFoot;
|
||||
break;
|
||||
default:
|
||||
yield break;
|
||||
}
|
||||
yield break;
|
||||
default:
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user