Emaggable protolathe (#18456)

This commit is contained in:
ubis1
2023-08-07 17:21:04 +03:00
committed by GitHub
parent 1c476731ed
commit e203423665
5 changed files with 101 additions and 5 deletions

View File

@@ -0,0 +1,25 @@
using Content.Shared.Research.Prototypes;
using Robust.Shared.GameStates;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List;
namespace Content.Shared.Lathe
{
[RegisterComponent, NetworkedComponent]
[AutoGenerateComponentState]
public sealed partial class EmagLatheRecipesComponent : Component
{
/// <summary>
/// All of the dynamic recipes that the lathe is capable to get using EMAG
/// </summary>
[DataField("emagDynamicRecipes", customTypeSerializer: typeof(PrototypeIdListSerializer<LatheRecipePrototype>))]
[AutoNetworkedField]
public List<string> EmagDynamicRecipes = new();
/// <summary>
/// All of the static recipes that the lathe is capable to get using EMAG
/// </summary>
[DataField("emagStaticRecipes", customTypeSerializer: typeof(PrototypeIdListSerializer<LatheRecipePrototype>))]
[AutoNetworkedField]
public List<string> EmagStaticRecipes = new();
}
}

View File

@@ -33,7 +33,6 @@ namespace Content.Shared.Lathe
/// </summary>
[DataField("producingSound")]
public SoundSpecifier? ProducingSound;
#region Visualizer info
[DataField("idleState", required: true)]
public string IdleState = default!;

View File

@@ -1,4 +1,5 @@
using Content.Shared.Materials;
using Content.Shared.Emag.Systems;
using Content.Shared.Materials;
using Content.Shared.Research.Prototypes;
using JetBrains.Annotations;
using Robust.Shared.GameStates;
@@ -22,6 +23,7 @@ public abstract class SharedLatheSystem : EntitySystem
SubscribeLocalEvent<LatheComponent, ComponentGetState>(OnGetState);
SubscribeLocalEvent<LatheComponent, ComponentHandleState>(OnHandleState);
SubscribeLocalEvent<EmagLatheRecipesComponent, GotEmaggedEvent>(OnEmagged);
}
private void OnGetState(EntityUid uid, LatheComponent component, ref ComponentGetState args)
@@ -59,6 +61,11 @@ public abstract class SharedLatheSystem : EntitySystem
return true;
}
private void OnEmagged(EntityUid uid, EmagLatheRecipesComponent component, ref GotEmaggedEvent args)
{
args.Handled = true;
}
public static int AdjustMaterial(int original, bool reduce, float multiplier)
=> reduce ? (int) MathF.Ceiling(original * multiplier) : original;