* 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>
73 lines
2.2 KiB
C#
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;
|
|
}
|
|
}
|