Files
tbd-station-14/Content.Shared/Construction/MachinePartSystem.cs
Nemanja fd9e1f3738 machine upgrade guidebook (#13511)
* machine upgrade guidebook

* oops

* guidehelpcomponent

* build, damn you
2023-01-16 10:53:23 -06:00

61 lines
2.7 KiB
C#

using Content.Shared.Construction.Components;
using Content.Shared.Examine;
namespace Content.Shared.Construction
{
/// <summary>
/// Deals with machine parts and machine boards.
/// </summary>
public sealed class MachinePartSystem : EntitySystem
{
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<MachineBoardComponent, ExaminedEvent>(OnMachineBoardExamined);
SubscribeLocalEvent<MachinePartComponent, ExaminedEvent>(OnMachinePartExamined);
}
private void OnMachineBoardExamined(EntityUid uid, MachineBoardComponent component, ExaminedEvent args)
{
if (!args.IsInDetailsRange)
return;
args.PushMarkup(Loc.GetString("machine-board-component-on-examine-label"));
foreach (var (part, amount) in component.Requirements)
{
args.PushMarkup(Loc.GetString("machine-board-component-required-element-entry-text",
("amount", amount),
("requiredElement", Loc.GetString(part))));
}
foreach (var (material, amount) in component.MaterialRequirements)
{
args.PushMarkup(Loc.GetString("machine-board-component-required-element-entry-text",
("amount", amount),
("requiredElement", Loc.GetString(material.Name))));
}
foreach (var (_, info) in component.ComponentRequirements)
{
args.PushMarkup(Loc.GetString("machine-board-component-required-element-entry-text",
("amount", info.Amount),
("requiredElement", Loc.GetString(info.ExamineName))));
}
foreach (var (_, info) in component.TagRequirements)
{
args.PushMarkup(Loc.GetString("machine-board-component-required-element-entry-text",
("amount", info.Amount),
("requiredElement", Loc.GetString(info.ExamineName))));
}
}
private void OnMachinePartExamined(EntityUid uid, MachinePartComponent component, ExaminedEvent args)
{
if (!args.IsInDetailsRange)
return;
args.PushMarkup(Loc.GetString("machine-part-component-on-examine-rating-text", ("rating", component.Rating)));
args.PushMarkup(Loc.GetString("machine-part-component-on-examine-type-text", ("type", component.PartType)));
}
}
}