* 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>
58 lines
No EOL
2.1 KiB
C#
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,
|
|
};
|
|
}
|
|
}
|
|
} |