Fix unlabeled jugs in ChemVend (#29178)
* Spawn dummy entities on client for vending machine UI * Asked sloth, and we kinda need this pr --------- Co-authored-by: Vasilis <vasilis@pikachu.systems>
This commit is contained in:
@@ -4,10 +4,11 @@ using Robust.Client.AutoGenerated;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Client.Graphics;
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
using Content.Client.Stylesheets;
|
||||
using Robust.Client.UserInterface.XAML;
|
||||
using Robust.Shared.Prototypes;
|
||||
using FancyWindow = Content.Client.UserInterface.Controls.FancyWindow;
|
||||
using Content.Shared.IdentityManagement;
|
||||
using Robust.Shared.Timing;
|
||||
|
||||
namespace Content.Client.VendingMachines.UI
|
||||
{
|
||||
@@ -15,6 +16,10 @@ namespace Content.Client.VendingMachines.UI
|
||||
public sealed partial class VendingMachineMenu : FancyWindow
|
||||
{
|
||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||
[Dependency] private readonly IEntityManager _entityManager = default!;
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
|
||||
private readonly Dictionary<EntProtoId, EntityUid> _dummies = [];
|
||||
|
||||
public event Action<ItemList.ItemListSelectedEventArgs>? OnItemSelected;
|
||||
public event Action<string>? OnSearchChanged;
|
||||
@@ -36,6 +41,22 @@ namespace Content.Client.VendingMachines.UI
|
||||
};
|
||||
}
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
base.Dispose(disposing);
|
||||
|
||||
// Don't clean up dummies during disposal or we'll just have to spawn them again
|
||||
if (!disposing)
|
||||
return;
|
||||
|
||||
// Delete any dummy items we spawned
|
||||
foreach (var entity in _dummies.Values)
|
||||
{
|
||||
_entityManager.QueueDeleteEntity(entity);
|
||||
}
|
||||
_dummies.Clear();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Populates the list of available items on the vending machine interface
|
||||
/// and sets icons based on their prototypes
|
||||
@@ -72,11 +93,16 @@ namespace Content.Client.VendingMachines.UI
|
||||
vendingItem.Text = string.Empty;
|
||||
vendingItem.Icon = null;
|
||||
|
||||
var itemName = entry.ID;
|
||||
if (!_dummies.TryGetValue(entry.ID, out var dummy))
|
||||
{
|
||||
dummy = _entityManager.Spawn(entry.ID);
|
||||
_dummies.Add(entry.ID, dummy);
|
||||
}
|
||||
|
||||
var itemName = Identity.Name(dummy, _entityManager);
|
||||
Texture? icon = null;
|
||||
if (_prototypeManager.TryIndex<EntityPrototype>(entry.ID, out var prototype))
|
||||
{
|
||||
itemName = prototype.Name;
|
||||
icon = spriteSystem.GetPrototypeIcon(prototype).Default;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user