* feat: Теперь можно менять внешний вид канистр газов * fix: русский язык (я его не знаю)
57 lines
1.8 KiB
C#
57 lines
1.8 KiB
C#
using System.Numerics;
|
|
using Content.Client.UserInterface.Controls;
|
|
using Content.Shared._White.PolymorphableCanister;
|
|
using Robust.Client.AutoGenerated;
|
|
using Robust.Client.GameObjects;
|
|
using Robust.Client.UserInterface.XAML;
|
|
using Robust.Shared.Prototypes;
|
|
|
|
namespace Content.Client._White.PolymorphableCanister.UI;
|
|
|
|
[GenerateTypedNameReferences]
|
|
public sealed partial class PolymorphableCanisterMenu : RadialMenu
|
|
{
|
|
[Dependency] private readonly EntityManager _entManager = default!;
|
|
[Dependency] private readonly IPrototypeManager _protoManager = default!;
|
|
|
|
public PolymorphableCanisterMenu(EntityUid owner, PolymorphableCanisterBUI bui)
|
|
{
|
|
IoCManager.InjectDependencies(this);
|
|
RobustXamlLoader.Load(this);
|
|
|
|
if (!_entManager.TryGetComponent<PolymorphableCanisterComponent>(owner, out var canister))
|
|
return;
|
|
|
|
var spriteSystem = _entManager.System<SpriteSystem>();
|
|
|
|
var main = FindControl<RadialContainer>("Main");
|
|
// ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract
|
|
if (main is null)
|
|
return;
|
|
|
|
foreach (var protoId in canister.Prototypes)
|
|
{
|
|
if (canister.CurrentPrototype == protoId)
|
|
continue;
|
|
|
|
if (!_protoManager.TryIndex(protoId, out var proto))
|
|
continue;
|
|
|
|
var button = new RadialMenuTextureButton
|
|
{
|
|
ToolTip = Loc.GetString(proto.Name),
|
|
TextureNormal = spriteSystem.GetPrototypeIcon(protoId).Default,
|
|
StyleClasses = { "RadialMenuButton" },
|
|
SetSize = new Vector2(64f, 64f)
|
|
};
|
|
|
|
button.OnButtonUp += _ =>
|
|
{
|
|
bui.SendMessage(protoId);
|
|
Close();
|
|
};
|
|
|
|
main.AddChild(button);
|
|
}
|
|
}
|
|
} |