Files
OldThink/Content.Client/_White/MeatyOre/MeatyOreUIController.cs
ThereDrD 1b07a035ce Upstream fixes (#664)
* fix weird name saving

* fix item status

* Fix single-user BUIs erroneously closing (#28375)

(cherry picked from commit 08952b467d9b2b2db85cb9ebb4e8b628c0145716)

* fix meatyore shop

* possible playtime fix

* fixes

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2024-08-25 01:37:24 +03:00

73 lines
2.2 KiB
C#

using Content.Client._White.Sponsors;
using Content.Client.Administration.Managers;
using Content.Client.UserInterface.Controls;
using Content.Client.UserInterface.Systems.MenuBar.Widgets;
using Content.Shared.Humanoid;
using Content.Shared._White.MeatyOre;
using Robust.Client.Player;
using Robust.Client.UserInterface.Controllers;
using Robust.Client.UserInterface.Controls;
using Robust.Shared.Timing;
namespace Content.Client._White.MeatyOre;
public sealed class MeatyOreUIController : UIController
{
[Dependency] private readonly IClientAdminManager _clientAdminManager = default!;
[Dependency] private readonly IEntityManager _entityManager = default!;
[Dependency] private readonly IPlayerManager _playerManager = default!;
[Dependency] private readonly IEntityNetworkManager _entityNetworkManager = default!;
[Dependency] private readonly SponsorsManager _sponsorsManager = default!;
private bool _buttonLoaded;
private MenuButton? MeatyOreButton => UIManager.GetActiveUIWidgetOrNull<GameTopMenuBar>()?.MeatyOreButton;
public void LoadButton()
{
MeatyOreButton!.OnPressed += MeatyOreButtonPressed;
_buttonLoaded = true;
}
public void UnloadButton()
{
MeatyOreButton!.OnPressed -= MeatyOreButtonPressed;
_buttonLoaded = false;
}
private void MeatyOreButtonPressed(BaseButton.ButtonEventArgs obj)
{
_entityNetworkManager.SendSystemNetworkMessage(new MeatyOreShopRequestEvent());
}
public override void FrameUpdate(FrameEventArgs args)
{
base.FrameUpdate(args);
if (!_buttonLoaded)
return;
var shouldBeVisible = CheckButtonVisibility();
MeatyOreButton!.Visible = shouldBeVisible;
}
private bool CheckButtonVisibility()
{
if (!_sponsorsManager.TryGetInfo(out var sponsor))
return false;
if (sponsor.Tier == null || sponsor.MeatyOreCoin == 0)
return false;
var controlledEntity = _playerManager.LocalPlayer!.ControlledEntity;
if (controlledEntity == null)
return false;
if (!_entityManager.HasComponent<HumanoidAppearanceComponent>(controlledEntity))
return false;
return true;
}
}