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))] 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(); var entityManager = IoCManager.Resolve(); string? nameLocale = null; if (Tag is not null && prototypeManager.TryIndex(Tag, out var tag)) { var entities = prototypeManager.EnumeratePrototypes(); foreach (var item in entities) { if (item.TryGetComponent(out var entityTag) && entityManager.System().HasTag(entityTag, Tag)) { //Sunrise-start if(item.Name == "левая рука киборга-официанта") //костыль так как лень фиксить по другому, хд { nameLocale = "левая рука киборга"; } else if(item.Name == "голова киборга-уборщика") { nameLocale = "голова киборга"; } else { nameLocale = item.Name; } //Sunrise-End 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, }; } } }