Co-authored-by: Michael Will <will_m@outlook.de>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
using Content.Client.Cuffs.Components;
|
||||
using Content.Client.Cuffs.Components;
|
||||
using Content.Shared.Body.Components;
|
||||
using Content.Shared.Body.Part;
|
||||
using Content.Shared.CharacterAppearance;
|
||||
@@ -120,15 +120,10 @@ namespace Content.Client.CharacterAppearance
|
||||
return;
|
||||
}
|
||||
|
||||
var layer = args.Part.ToHumanoidLayer();
|
||||
|
||||
if (layer == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var layers = args.Part.ToHumanoidLayers();
|
||||
// TODO BODY Layer color, sprite and state
|
||||
sprite.LayerSetVisible(layer, true);
|
||||
foreach (var layer in layers)
|
||||
sprite.LayerSetVisible(layer, true);
|
||||
}
|
||||
|
||||
public void BodyPartRemoved(BodyPartRemovedEventArgs args)
|
||||
@@ -143,15 +138,10 @@ namespace Content.Client.CharacterAppearance
|
||||
return;
|
||||
}
|
||||
|
||||
var layer = args.Part.ToHumanoidLayer();
|
||||
|
||||
if (layer == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var layers = args.Part.ToHumanoidLayers();
|
||||
// TODO BODY Layer color, sprite and state
|
||||
sprite.LayerSetVisible(layer, false);
|
||||
foreach (var layer in layers)
|
||||
sprite.LayerSetVisible(layer, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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