CatStation/Content.Shared/Body/VisualOrganMarkingsComponent.cs
pathetic meowmeow 8cf744ec55
Visual nubody (humanoid appearance refactor) (#42476)
* initial visual nubody

* oops overlay

* im so pheeming rn

* conversion...

* tests

* comeback of the underwear

* oops eyes

* blabbl

* zeds

* yaml linted

* search and visible count constraints

* reordering

* preserve previously selected markings colors

* fix test

* some ui niceties

* ordering

* make DB changes backwards-compatible/downgrade-friendly

* fix things again

* fix migration

* vulpkanin markings limit increase

* wrapping

* code cleanup and more code cleanup and more code cleanup and more code cleanup and

* fix slop ports

* better sampling API

* make filter work + use the method i made for its intended purpose

* fix test fails real quick

* magic mirror cleanup, remove TODO

* don't 0-init the organ profile data

* remove deltastates

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2026-01-20 07:07:53 +00:00

47 lines
1.4 KiB
C#

using Content.Shared.Humanoid;
using Content.Shared.Humanoid.Markings;
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
namespace Content.Shared.Body;
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(raiseAfterAutoHandleState: true, fieldDeltas: true)]
[Access(typeof(SharedVisualBodySystem))]
public sealed partial class VisualOrganMarkingsComponent : Component
{
/// <summary>
/// What markings this organ can take
/// </summary>
[DataField(required: true), AlwaysPushInheritance]
public OrganMarkingData MarkingData = default!;
/// <summary>
/// The list of markings to apply to the entity
/// </summary>
[DataField, AutoNetworkedField]
public Dictionary<HumanoidVisualLayers, List<Marking>> Markings = new();
/// <summary>
/// Client only - the last markings applied by this component
/// </summary>
[ViewVariables]
public List<Marking> AppliedMarkings = new();
}
/// <summary>
/// Defines the layers and group an organ takes markings for
/// </summary>
[DataDefinition]
[Serializable, NetSerializable]
public partial record struct OrganMarkingData
{
[DataField(required: true)]
public HashSet<HumanoidVisualLayers> Layers = default!;
/// <summary>
/// The type of organ this is for markings
/// </summary>
[DataField(required: true)]
public ProtoId<MarkingsGroupPrototype> Group = default!;
}