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.Components;
|
||||||
using Content.Shared.Body.Part;
|
using Content.Shared.Body.Part;
|
||||||
using Content.Shared.CharacterAppearance;
|
using Content.Shared.CharacterAppearance;
|
||||||
@@ -120,15 +120,10 @@ namespace Content.Client.CharacterAppearance
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var layer = args.Part.ToHumanoidLayer();
|
var layers = args.Part.ToHumanoidLayers();
|
||||||
|
|
||||||
if (layer == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO BODY Layer color, sprite and state
|
// 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)
|
public void BodyPartRemoved(BodyPartRemovedEventArgs args)
|
||||||
@@ -143,15 +138,10 @@ namespace Content.Client.CharacterAppearance
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var layer = args.Part.ToHumanoidLayer();
|
var layers = args.Part.ToHumanoidLayers();
|
||||||
|
|
||||||
if (layer == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO BODY Layer color, sprite and state
|
// 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;
|
using Content.Shared.Body.Part;
|
||||||
|
|
||||||
namespace Content.Shared.CharacterAppearance
|
namespace Content.Shared.CharacterAppearance
|
||||||
{
|
{
|
||||||
public static class HumanoidVisualLayersExtension
|
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,
|
case BodyPartType.Other:
|
||||||
BodyPartType.Torso => HumanoidVisualLayers.Chest,
|
yield break;
|
||||||
BodyPartType.Head => HumanoidVisualLayers.Head,
|
case BodyPartType.Torso:
|
||||||
BodyPartType.Arm => part.Symmetry switch
|
yield return HumanoidVisualLayers.Chest;
|
||||||
{
|
break;
|
||||||
BodyPartSymmetry.None => null,
|
case BodyPartType.Head:
|
||||||
BodyPartSymmetry.Left => HumanoidVisualLayers.LArm,
|
yield return HumanoidVisualLayers.Head;
|
||||||
BodyPartSymmetry.Right => HumanoidVisualLayers.RArm,
|
yield return HumanoidVisualLayers.Eyes;
|
||||||
_ => throw new ArgumentOutOfRangeException()
|
yield return HumanoidVisualLayers.FacialHair;
|
||||||
},
|
yield return HumanoidVisualLayers.Hair;
|
||||||
BodyPartType.Hand => part.Symmetry switch
|
yield return HumanoidVisualLayers.StencilMask;
|
||||||
{
|
break;
|
||||||
BodyPartSymmetry.None => null,
|
case BodyPartType.Arm:
|
||||||
BodyPartSymmetry.Left => HumanoidVisualLayers.LHand,
|
switch (part.Symmetry)
|
||||||
BodyPartSymmetry.Right => HumanoidVisualLayers.RHand,
|
{
|
||||||
_ => throw new ArgumentOutOfRangeException()
|
case BodyPartSymmetry.None:
|
||||||
},
|
yield break;
|
||||||
BodyPartType.Leg => part.Symmetry switch
|
case BodyPartSymmetry.Left:
|
||||||
{
|
yield return HumanoidVisualLayers.LArm;
|
||||||
BodyPartSymmetry.None => null,
|
break;
|
||||||
BodyPartSymmetry.Left => HumanoidVisualLayers.LLeg,
|
case BodyPartSymmetry.Right:
|
||||||
BodyPartSymmetry.Right => HumanoidVisualLayers.RLeg,
|
yield return HumanoidVisualLayers.RArm;
|
||||||
_ => throw new ArgumentOutOfRangeException()
|
break;
|
||||||
},
|
default:
|
||||||
BodyPartType.Foot => part.Symmetry switch
|
yield break;
|
||||||
{
|
}
|
||||||
BodyPartSymmetry.None => null,
|
yield break;
|
||||||
BodyPartSymmetry.Left => HumanoidVisualLayers.LFoot,
|
case BodyPartType.Hand:
|
||||||
BodyPartSymmetry.Right => HumanoidVisualLayers.RFoot,
|
switch (part.Symmetry)
|
||||||
_ => throw new ArgumentOutOfRangeException()
|
{
|
||||||
},
|
case BodyPartSymmetry.None:
|
||||||
_ => throw new ArgumentOutOfRangeException()
|
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