110 lines
3.8 KiB
C#
110 lines
3.8 KiB
C#
using Content.Shared._DV.CosmicCult.Components;
|
|
using Content.Shared._DV.CosmicCult.Prototypes;
|
|
using Robust.Client.AutoGenerated;
|
|
using Robust.Client.GameObjects;
|
|
using Robust.Client.Player;
|
|
using Robust.Client.UserInterface.Controls;
|
|
using Robust.Client.UserInterface.XAML;
|
|
|
|
namespace Content.Client._DV.CosmicCult.UI.Monument;
|
|
|
|
[GenerateTypedNameReferences]
|
|
public sealed partial class InfluenceUIBox : BoxContainer
|
|
{
|
|
[Dependency] private readonly IEntityManager _entityManager = default!;
|
|
[Dependency] private readonly IPlayerManager _playerManager = default!;
|
|
|
|
private readonly SpriteSystem _sprite;
|
|
|
|
public Action? OnGainButtonPressed;
|
|
|
|
public enum InfluenceUIBoxState
|
|
{
|
|
UnlockedAndEnoughEntropy = 0,
|
|
UnlockedAndNotEnoughEntropy = 1,
|
|
Owned = 2,
|
|
Locked = 3,
|
|
}
|
|
|
|
public readonly InfluenceUIBoxState State;
|
|
public readonly InfluencePrototype Proto;
|
|
|
|
public InfluenceUIBox(InfluencePrototype influenceProto, InfluenceUIBoxState state)
|
|
{
|
|
RobustXamlLoader.Load(this);
|
|
IoCManager.InjectDependencies(this);
|
|
_sprite = _entityManager.System<SpriteSystem>();
|
|
GainButton.StyleClasses.Add("ButtonColorPurpleAndCool");
|
|
|
|
InfluenceIcon.Texture = _sprite.Frame0(influenceProto.Icon);
|
|
Name.Text = Loc.GetString(influenceProto.Name);
|
|
|
|
State = state;
|
|
Proto = influenceProto;
|
|
|
|
var availableEntropy = 0;
|
|
if (_entityManager.TryGetComponent<CosmicCultComponent>(_playerManager.LocalEntity, out var cultComp))
|
|
{
|
|
availableEntropy = cultComp.EntropyBudget;
|
|
}
|
|
|
|
switch (state)
|
|
{
|
|
case InfluenceUIBoxState.Owned:
|
|
Status.Text = Loc.GetString("monument-interface-influences-owned");
|
|
|
|
GainButton.Disabled = true;
|
|
GainButton.Modulate = Color.Green;
|
|
GainButton.Label.Text = Loc.GetString("monument-interface-influences-purchased");
|
|
GainButton.ToolTip = Loc.GetString("monument-interface-influences-owned-tooltip");
|
|
|
|
break;
|
|
|
|
case InfluenceUIBoxState.UnlockedAndEnoughEntropy:
|
|
Status.Text = Loc.GetString("monument-interface-influences-unlocked");
|
|
|
|
GainButton.Disabled = false;
|
|
|
|
break;
|
|
|
|
case InfluenceUIBoxState.UnlockedAndNotEnoughEntropy:
|
|
Status.Text = Loc.GetString("monument-interface-influences-unlocked");
|
|
|
|
GainButton.Disabled = false;
|
|
GainButton.Modulate = Color.Gray;
|
|
GainButton.ToolTip = Loc.GetString("monument-interface-influences-unlocked-not-enough-entropy-tooltip", ("entropy", influenceProto.Cost - availableEntropy));
|
|
break;
|
|
|
|
case InfluenceUIBoxState.Locked:
|
|
Status.Text = Loc.GetString("monument-interface-influences-locked");
|
|
Status.FontColorOverride = Color.White;
|
|
|
|
GainButton.Disabled = true;
|
|
GainButton.Modulate = Color.Gray;
|
|
GainButton.Label.Text = Loc.GetString("monument-interface-influences-locked");
|
|
GainButton.ToolTip = Loc.GetString("monument-interface-influences-locked-tooltip");
|
|
|
|
Name.FontColorOverride = Color.White;
|
|
|
|
InfluenceBox.Modulate = Color.Gray;
|
|
InfluenceIcon.Modulate = Color.Gray;
|
|
|
|
Description.Modulate = Color.Gray;
|
|
|
|
Type.Modulate = Color.Gray;
|
|
|
|
CostText.Modulate = Color.Gray;
|
|
|
|
Cost.FontColorOverride = Color.Gray;
|
|
|
|
break;
|
|
}
|
|
|
|
Type.Text = Loc.GetString(influenceProto.InfluenceType);
|
|
Cost.Text = influenceProto.Cost.ToString();
|
|
Description.SetMessage(Loc.GetString(influenceProto.Description));
|
|
|
|
GainButton.OnPressed += _ => OnGainButtonPressed?.Invoke();
|
|
}
|
|
}
|