using System.Numerics; using Content.Shared.Nutrition.EntitySystems; using Robust.Shared.GameStates; using Robust.Shared.Serialization; 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(); [DataField] public string Solution = "food"; [DataField] public LocId? NameGeneration; [DataField] public LocId? NamePrefix; [DataField] public LocId? ContentSeparator; [DataField] public LocId? NameSuffix; }