| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- using Content.Shared.Construction.Prototypes;
- using Content.Shared.Lathe.Prototypes;
- using Content.Shared.Research.Prototypes;
- using Robust.Shared.Audio;
- using Robust.Shared.GameStates;
- using Robust.Shared.Prototypes;
- namespace Content.Shared.Lathe
- {
- [RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
- public sealed partial class LatheComponent : Component
- {
- /// <summary>
- /// All of the recipe packs that the lathe has by default
- /// </summary>
- [DataField]
- public List<ProtoId<LatheRecipePackPrototype>> StaticPacks = new();
- /// <summary>
- /// All of the recipe packs that the lathe is capable of researching
- /// </summary>
- [DataField]
- public List<ProtoId<LatheRecipePackPrototype>> DynamicPacks = new();
- /// <summary>
- /// The lathe's construction queue
- /// </summary>
- [DataField]
- public List<LatheRecipePrototype> Queue = new();
- /// <summary>
- /// The sound that plays when the lathe is producing an item, if any
- /// </summary>
- [DataField]
- public SoundSpecifier? ProducingSound;
- [DataField]
- public string? ReagentOutputSlotId;
- /// <summary>
- /// The default amount that's displayed in the UI for selecting the print amount.
- /// </summary>
- [DataField, AutoNetworkedField]
- public int DefaultProductionAmount = 1;
- #region Visualizer info
- [DataField]
- public string? IdleState;
- [DataField]
- public string? RunningState;
- [DataField]
- public string? UnlitIdleState;
- [DataField]
- public string? UnlitRunningState;
- #endregion
- /// <summary>
- /// The recipe the lathe is currently producing
- /// </summary>
- [ViewVariables]
- public LatheRecipePrototype? CurrentRecipe;
- #region MachineUpgrading
- /// <summary>
- /// A modifier that changes how long it takes to print a recipe
- /// </summary>
- [DataField, ViewVariables(VVAccess.ReadWrite)]
- public float TimeMultiplier = 1;
- /// <summary>
- /// A modifier that changes how much of a material is needed to print a recipe
- /// </summary>
- [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
- public float MaterialUseMultiplier = 1;
- #endregion
- }
- public sealed class LatheGetRecipesEvent : EntityEventArgs
- {
- public readonly EntityUid Lathe;
- public bool getUnavailable;
- public HashSet<ProtoId<LatheRecipePrototype>> Recipes = new();
- public LatheGetRecipesEvent(EntityUid lathe, bool forced)
- {
- Lathe = lathe;
- getUnavailable = forced;
- }
- }
- /// <summary>
- /// Event raised on a lathe when it starts producing a recipe.
- /// </summary>
- [ByRefEvent]
- public readonly record struct LatheStartPrintingEvent(LatheRecipePrototype Recipe);
- }
|