fish-station/Content.Shared/Construction/Steps/ArbitraryInsertConstructionGraphStep.cs
Rinary 0bd0a4537c
Перевод меню строительства (#179)
* init

* upd.

* more furniture entries

* furniture fully added entries

* lightning.ftl

* machines.ftl

* Merge branch 'ConstructionLocalization' of https://github.com/Rinary1/space-sunrise into pr/179

* materials.ftl

* modular.ftl

* Create utilities.ftl

* Create tools.ftl

* Create structures.ftl

* storage.ftl

* upd storage.ftl

* translate storage.ftl

* translate modular.ftl

* translate materials.ftl

* translate machines.ftl

* translate lighting.ftl

* furniture.ftl translate

* add tiles.ftl

* bots, tools translate

* misc add, translate

* Translate some missing weapons

* some translations

* clothing description

* fun.ftl description

* Steps Translation

* Revert something

* New Steps translatings, Web items translate

* and some new Web translatings

* door staps translate

* NameLocalization

* ooops

* Всё по новой, перевод шагов был дерьмо, теперь materials.ftl

* some new reverts

* фикс?

* apc icon

* some clears

* steps fully translate

* translate

* Locale Search fix

* пу-пу-пу

* ой

* Revert "apc icon"

This reverts commit 65a3eab80453ab758b6a1e1c155d34938f481644.

---------

Co-authored-by: Babaev <babaevyt210@gmail.com>
2024-07-12 04:26:24 +03:00

58 lines
No EOL
2.1 KiB
C#

using Content.Shared.Examine;
using Content.Shared.Tag;
using JetBrains.Annotations;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Shared.Construction.Steps
{
public abstract partial class ArbitraryInsertConstructionGraphStep : EntityInsertConstructionGraphStep
{
[DataField("name")] public string Name { get; private set; } = string.Empty;
[DataField("icon")] public SpriteSpecifier? Icon { get; private set; }
[DataField("tag", customTypeSerializer: typeof(PrototypeIdSerializer<TagPrototype>))]
public string? Tag { get; private set; }
public override void DoExamine(ExaminedEvent examinedEvent)
{
if (string.IsNullOrEmpty(Name))
return;
examinedEvent.PushMarkup(Loc.GetString("construction-insert-arbitrary-entity", ("stepName", Name)));
}
public override ConstructionGuideEntry GenerateGuideEntry()
{
var prototypeManager = IoCManager.Resolve<IPrototypeManager>();
var entityManager = IoCManager.Resolve<IEntityManager>();
string? nameLocale = null;
if (Tag is not null && prototypeManager.TryIndex<TagPrototype>(Tag, out var tag))
{
var entities = prototypeManager.EnumeratePrototypes<EntityPrototype>();
foreach (var item in entities)
{
if (item.TryGetComponent<TagComponent>(out var entityTag) && entityManager.System<TagSystem>().HasTag(entityTag, Tag))
{
nameLocale = item.Name;
break;
}
}
}
var formattedName = Name.Replace(" ", "-").ToLower();
return new ConstructionGuideEntry
{
Localization = "construction-presenter-arbitrary-step",
Arguments = new (string, object)[] { ("name", nameLocale ?? Loc.GetString($"material-{formattedName}-name")) },
Icon = Icon,
};
}
}
}