using System.Numerics; using Content.Shared.Nutrition.EntitySystems; using Robust.Shared.GameStates; namespace Content.Shared.Nutrition.Components; /// /// A starting point for the creation of procedural food. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true), Access(typeof(SharedFoodSequenceSystem))] public sealed partial class FoodSequenceStartPointComponent : Component { /// /// A key that determines which types of food elements can be attached to a food. /// [DataField(required: true)] public string Key = string.Empty; /// /// The maximum number of layers of food that can be placed on this item. /// [DataField] public int MaxLayers = 10; /// /// Start shift from the center of the sprite where the first layer of food will be placed. /// [DataField] public Vector2 StartPosition = Vector2.Zero; /// /// Shift from the start position applied to each subsequent layer. /// [DataField] public Vector2 Offset = Vector2.Zero; /// /// Can we put more layers? /// [DataField] public bool Finished; /// /// list of sprite states to be displayed on this object. /// [DataField, AutoNetworkedField] public List FoodLayers = new(); public HashSet RevealedLayers = new(); /// /// target layer, where new layers will be added. This allows you to control the order of generative layers and static layers. /// [DataField] public string TargetLayerMap = "foodSequenceLayers"; /// /// If true, the generative layers will be placed in reverse order. /// [DataField] public bool InverseLayers; /// /// each layer will get a random offset in the specified range /// [DataField] public Vector2 MaxLayerOffset = Vector2.Zero; /// /// each layer will get a random offset in the specified range /// [DataField] public Vector2 MinLayerOffset = Vector2.Zero; /// /// solution where reagents will be added from newly added ingredients /// [DataField] public string Solution = "food"; /// /// LocId with a name generation pattern. /// [DataField] public LocId? NameGeneration; /// /// the part of the name generation used in the pattern /// [DataField] public LocId? NamePrefix; /// /// content in the form of all added ingredients will be separated by these symbols /// [DataField] public string? ContentSeparator; /// /// the part of the name generation used in the pattern /// [DataField] public LocId? NameSuffix; }