add mining points (#2419)
* add mining points * add claim points button to oreproc * funny * its over * :trollface: * xml fail Signed-off-by: deltanedas <39013340+deltanedas@users.noreply.github.com> --------- Signed-off-by: deltanedas <39013340+deltanedas@users.noreply.github.com> Co-authored-by: deltanedas <@deltanedas:kde.org>
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
using Content.Shared.DeltaV.Salvage; // DeltaV
|
||||
using Content.Shared.Lathe;
|
||||
using Content.Shared.Research.Components;
|
||||
using JetBrains.Annotations;
|
||||
@@ -34,6 +35,8 @@ namespace Content.Client.Lathe.UI
|
||||
_menu.QueueMoveUpAction += index => SendMessage(new LatheMoveRequestMessage(index, -1));
|
||||
_menu.QueueMoveDownAction += index => SendMessage(new LatheMoveRequestMessage(index, 1));
|
||||
_menu.DeleteFabricatingAction += () => SendMessage(new LatheAbortFabricationMessage());
|
||||
|
||||
_menu.OnClaimMiningPoints += () => SendMessage(new LatheClaimMiningPointsMessage()); // DeltaV
|
||||
}
|
||||
|
||||
protected override void UpdateState(BoundUserInterfaceState state)
|
||||
|
||||
@@ -151,6 +151,12 @@
|
||||
<ui:MaterialStorageControl Name="MaterialsList" SizeFlagsStretchRatio="8"/>
|
||||
</BoxContainer>
|
||||
</PanelContainer>
|
||||
<!-- Begin DeltaV Additions: Mining points -->
|
||||
<BoxContainer Orientation="Horizontal" Name="MiningPointsContainer" Visible="False">
|
||||
<Label Name="MiningPointsLabel" HorizontalExpand="True"/>
|
||||
<Button Name="MiningPointsClaimButton" Text="{Loc 'lathe-menu-mining-points-claim-button'}"/>
|
||||
</BoxContainer>
|
||||
<!-- End DeltaV Additions: Mining points -->
|
||||
</BoxContainer>
|
||||
</BoxContainer>
|
||||
|
||||
|
||||
@@ -1,17 +1,21 @@
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Content.Client.Materials;
|
||||
using Content.Shared.DeltaV.Salvage.Components; // DeltaV
|
||||
using Content.Shared.DeltaV.Salvage.Systems; // DeltaV
|
||||
using Content.Shared.Lathe;
|
||||
using Content.Shared.Lathe.Prototypes;
|
||||
using Content.Shared.Research.Prototypes;
|
||||
using Robust.Client.AutoGenerated;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Client.Player; // DeltaV
|
||||
using Robust.Client.UserInterface;
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
using Robust.Client.UserInterface.CustomControls;
|
||||
using Robust.Client.UserInterface.XAML;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Utility;
|
||||
using Robust.Shared.Timing; // DeltaV
|
||||
|
||||
namespace Content.Client.Lathe.UI;
|
||||
|
||||
@@ -19,11 +23,13 @@ namespace Content.Client.Lathe.UI;
|
||||
public sealed partial class LatheMenu : DefaultWindow
|
||||
{
|
||||
[Dependency] private readonly IEntityManager _entityManager = default!;
|
||||
[Dependency] private readonly IPlayerManager _player = default!; // DeltaV
|
||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||
|
||||
private readonly SpriteSystem _spriteSystem;
|
||||
private readonly LatheSystem _lathe;
|
||||
private readonly MaterialStorageSystem _materialStorage;
|
||||
private readonly MiningPointsSystem _miningPoints; // DeltaV
|
||||
|
||||
public event Action<BaseButton.ButtonEventArgs>? OnServerListButtonPressed;
|
||||
public event Action<string, int>? RecipeQueueAction;
|
||||
@@ -31,15 +37,16 @@ public sealed partial class LatheMenu : DefaultWindow
|
||||
public event Action<int>? QueueMoveUpAction;
|
||||
public event Action<int>? QueueMoveDownAction;
|
||||
public event Action? DeleteFabricatingAction;
|
||||
|
||||
public event Action? OnClaimMiningPoints; // DeltaV
|
||||
public List<ProtoId<LatheRecipePrototype>> Recipes = new();
|
||||
|
||||
public List<ProtoId<LatheCategoryPrototype>>? Categories;
|
||||
|
||||
public ProtoId<LatheCategoryPrototype>? CurrentCategory;
|
||||
|
||||
public EntityUid Entity;
|
||||
|
||||
private uint? _lastMiningPoints; // DeltaV: used to avoid Loc.GetString every frame
|
||||
|
||||
public LatheMenu()
|
||||
{
|
||||
RobustXamlLoader.Load(this);
|
||||
@@ -48,6 +55,7 @@ public sealed partial class LatheMenu : DefaultWindow
|
||||
_spriteSystem = _entityManager.System<SpriteSystem>();
|
||||
_lathe = _entityManager.System<LatheSystem>();
|
||||
_materialStorage = _entityManager.System<MaterialStorageSystem>();
|
||||
_miningPoints = _entityManager.System<MiningPointsSystem>(); // DeltaV
|
||||
|
||||
SearchBar.OnTextChanged += _ =>
|
||||
{
|
||||
@@ -86,9 +94,52 @@ public sealed partial class LatheMenu : DefaultWindow
|
||||
AmountLineEdit.SetText(latheComponent.DefaultProductionAmount.ToString());
|
||||
}
|
||||
|
||||
// Begin DeltaV Additions: Mining points UI
|
||||
MiningPointsContainer.Visible = _entityManager.TryGetComponent<MiningPointsComponent>(Entity, out var points);
|
||||
MiningPointsClaimButton.OnPressed += _ => OnClaimMiningPoints?.Invoke();
|
||||
if (points != null)
|
||||
UpdateMiningPoints(points.Points);
|
||||
// End DeltaV Additions
|
||||
|
||||
MaterialsList.SetOwner(Entity);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DeltaV: Updates the UI elements for mining points.
|
||||
/// </summary>
|
||||
private void UpdateMiningPoints(uint points)
|
||||
{
|
||||
MiningPointsClaimButton.Disabled = points == 0 ||
|
||||
_player.LocalSession?.AttachedEntity is not {} player ||
|
||||
_miningPoints.TryFindIdCard(player) == null;
|
||||
if (points == _lastMiningPoints)
|
||||
return;
|
||||
|
||||
_lastMiningPoints = points;
|
||||
MiningPointsLabel.Text = Loc.GetString("lathe-menu-mining-points", ("points", points));
|
||||
}
|
||||
|
||||
protected override void Opened()
|
||||
{
|
||||
base.Opened();
|
||||
|
||||
if (_entityManager.TryGetComponent<LatheComponent>(Entity, out var latheComp))
|
||||
{
|
||||
AmountLineEdit.SetText(latheComp.DefaultProductionAmount.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DeltaV: Update mining points UI whenever it changes.
|
||||
/// </summary>
|
||||
protected override void FrameUpdate(FrameEventArgs args)
|
||||
{
|
||||
base.FrameUpdate(args);
|
||||
|
||||
if (_entityManager.TryGetComponent<MiningPointsComponent>(Entity, out var points))
|
||||
UpdateMiningPoints(points.Points);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Populates the list of all the recipes
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user