Skip to content

Commit

Permalink
Merge branch 'master' into explorer
Browse files Browse the repository at this point in the history
  • Loading branch information
EstKemran authored Mar 9, 2025
2 parents 17ad6a3 + 6c20023 commit c2d41e6
Show file tree
Hide file tree
Showing 188 changed files with 2,006 additions and 1,060 deletions.
3 changes: 1 addition & 2 deletions Content.Client/PDA/PdaBoundUserInterface.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@ protected override void Open()

private void CreateMenu()
{
_menu = this.CreateWindow<PdaMenu>();
_menu.OpenCenteredLeft();
_menu = this.CreateWindowCenteredLeft<PdaMenu>();

_menu.FlashLightToggleButton.OnToggled += _ =>
{
Expand Down
25 changes: 0 additions & 25 deletions Content.Client/SS220/PdaIdPainter/PdaIdPainterSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,12 @@ namespace Content.Client.SS220.PdaIdPainter;

public sealed class PdaIdPainterSystem : SharedPdaIdPainterSystem
{
[Dependency] private readonly IPrototypeManager _proto = default!;
[Dependency] private readonly IComponentFactory _factory = default!;

public override void Initialize()
{
base.Initialize();

GetAllVariants();

SubscribeLocalEvent<PrototypesReloadedEventArgs>(OnProtoReloaded);
SubscribeLocalEvent<PdaIdPainterTargetComponent, AfterAutoHandleStateEvent>(HandleState);
}

Expand All @@ -25,27 +21,6 @@ private void HandleState(Entity<PdaIdPainterTargetComponent> ent, ref AfterAutoH
UpdateVisuals(ent.Comp.NewProto, ent.Owner);
}

private void OnProtoReloaded(PrototypesReloadedEventArgs args)
{
if (args.WasModified<EntityPrototype>())
GetAllVariants();
}

private void GetAllVariants()
{
PdaAndIdProtos.Clear();

var prototypes = _proto.EnumeratePrototypes<EntityPrototype>();

foreach (var proto in prototypes)
{
if (!IsValidTarget(proto))
continue;

PdaAndIdProtos.Add(proto);
}
}

protected override void UpdateSprite(EntityUid uid, EntityPrototype proto)
{
base.UpdateSprite(uid, proto);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,9 @@ private void InitPowerConsumptionSpinBox()
if (child.GetType() == typeof(LineEdit))
child.MinSize = new Vector2(60, 0);
}
PowerConsumptionSpinBox.AddLeftButton(-100, "-100");

PowerConsumptionSpinBox.AddLeftButton(-500, "-500");
PowerConsumptionSpinBox.AddLeftButton(-100, "-100");
PowerConsumptionSpinBox.AddRightButton(100, "+100");
PowerConsumptionSpinBox.AddRightButton(500, "+500");
PowerConsumptionSpinBox.IsValid = PowerConsumptionValidate;
Expand Down
27 changes: 25 additions & 2 deletions Content.Client/Storage/StorageBoundUserInterface.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
using System.Numerics;
using Content.Client.UserInterface.Systems.Storage;
using Content.Client.UserInterface.Systems.Storage.Controls;
using Content.Shared.Storage;
using JetBrains.Annotations;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;

namespace Content.Client.Storage;

Expand All @@ -11,6 +13,8 @@ public sealed class StorageBoundUserInterface : BoundUserInterface
{
private StorageWindow? _window;

public Vector2? Position => _window?.Position;

public StorageBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
{
}
Expand All @@ -21,7 +25,7 @@ protected override void Open()

_window = IoCManager.Resolve<IUserInterfaceManager>()
.GetUIController<StorageUIController>()
.CreateStorageWindow(Owner);
.CreateStorageWindow(this);

if (EntMan.TryGetComponent(Owner, out StorageComponent? storage))
{
Expand Down Expand Up @@ -50,10 +54,20 @@ public void Reclaim()
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);

Reclaim();
}

public void CloseWindow(Vector2 position)
{
if (_window == null)
return;

// Update its position before potentially saving.
// Listen it makes sense okay.
LayoutContainer.SetPosition(_window, position);
_window?.Close();
}

public void Hide()
{
if (_window == null)
Expand All @@ -70,6 +84,15 @@ public void Show()
_window.Visible = true;
}

public void Show(Vector2 position)
{
if (_window == null)
return;

Show();
LayoutContainer.SetPosition(_window, position);
}

public void ReOpen()
{
_window?.Orphan();
Expand Down
34 changes: 31 additions & 3 deletions Content.Client/Storage/Systems/StorageSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ public sealed class StorageSystem : SharedStorageSystem

private Dictionary<EntityUid, ItemStorageLocation> _oldStoredItems = new();

private List<(StorageBoundUserInterface Bui, bool Value)> _queuedBuis = new();

public override void Initialize()
{
base.Initialize();
Expand Down Expand Up @@ -72,7 +74,7 @@ private void OnStorageHandleState(EntityUid uid, StorageComponent component, ref
if (NestedStorage && player != null && ContainerSystem.TryGetContainingContainer((uid, null, null), out var container) &&
UI.TryGetOpenUi<StorageBoundUserInterface>(container.Owner, StorageComponent.StorageUiKey.Key, out var containerBui))
{
containerBui.Hide();
_queuedBuis.Add((containerBui, false));
}
}
}
Expand All @@ -89,15 +91,15 @@ protected override void HideStorageWindow(EntityUid uid, EntityUid actor)
{
if (UI.TryGetOpenUi<StorageBoundUserInterface>(uid, StorageComponent.StorageUiKey.Key, out var storageBui))
{
storageBui.Hide();
_queuedBuis.Add((storageBui, false));
}
}

protected override void ShowStorageWindow(EntityUid uid, EntityUid actor)
{
if (UI.TryGetOpenUi<StorageBoundUserInterface>(uid, StorageComponent.StorageUiKey.Key, out var storageBui))
{
storageBui.Show();
_queuedBuis.Add((storageBui, true));
}
}

Expand Down Expand Up @@ -152,4 +154,30 @@ public void HandleAnimatingInsertingEntities(AnimateInsertingEntitiesEvent msg)
}
}
}

public override void Update(float frameTime)
{
base.Update(frameTime);

if (!_timing.IsFirstTimePredicted)
{
return;
}

// This update loop exists just to synchronize with UISystem and avoid 1-tick delays.
// If deferred opens / closes ever get removed you can dump this.
foreach (var (bui, open) in _queuedBuis)
{
if (open)
{
bui.Show();
}
else
{
bui.Hide();
}
}

_queuedBuis.Clear();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
using Content.Shared.Input;
using Content.Shared.Item;
using Content.Shared.Storage;
using Robust.Client.GameObjects;
using Robust.Client.Graphics;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
Expand Down Expand Up @@ -190,6 +191,26 @@ public void UpdateContainer(Entity<StorageComponent>? entity)
BuildGridRepresentation();
}

private void CloseParent()
{
if (StorageEntity == null)
return;

var containerSystem = _entity.System<SharedContainerSystem>();
var uiSystem = _entity.System<UserInterfaceSystem>();

if (containerSystem.TryGetContainingContainer(StorageEntity.Value, out var container) &&
_entity.TryGetComponent(container.Owner, out StorageComponent? storage) &&
storage.Container.Contains(StorageEntity.Value) &&
uiSystem
.TryGetOpenUi<StorageBoundUserInterface>(container.Owner,
StorageComponent.StorageUiKey.Key,
out var parentBui))
{
parentBui.CloseWindow(Position);
}
}

private void BuildGridRepresentation()
{
if (!_entity.TryGetComponent<StorageComponent>(StorageEntity, out var comp) || comp.Grid.Count == 0)
Expand All @@ -212,14 +233,17 @@ private void BuildGridRepresentation()
};
exitButton.OnPressed += _ =>
{
// Close ourselves and all parent BUIs.
Close();
CloseParent();
};
exitButton.OnKeyBindDown += args =>
{
// it just makes sense...
if (!args.Handled && args.Function == ContentKeyFunctions.ActivateItemInWorld)
{
Close();
CloseParent();
args.Handle();
}
};
Expand Down Expand Up @@ -258,7 +282,8 @@ private void BuildGridRepresentation()
var containerSystem = _entity.System<SharedContainerSystem>();

if (containerSystem.TryGetContainingContainer(StorageEntity.Value, out var container) &&
_entity.TryGetComponent(container.Owner, out StorageComponent? storage))
_entity.TryGetComponent(container.Owner, out StorageComponent? storage) &&
storage.Container.Contains(StorageEntity.Value))
{
Close();

Expand All @@ -267,7 +292,7 @@ private void BuildGridRepresentation()
StorageComponent.StorageUiKey.Key,
out var parentBui))
{
parentBui.Show();
parentBui.Show(Position);
}
}
};
Expand Down Expand Up @@ -412,6 +437,8 @@ public void BuildItemPieces()
{
if (storageComp.StoredItems.TryGetValue(ent, out var updated))
{
data.Control.Marked = IsMarked(ent);

if (data.Loc.Equals(updated))
{
DebugTools.Assert(data.Control.Location == updated);
Expand Down Expand Up @@ -450,12 +477,7 @@ public void BuildItemPieces()
var gridPiece = new ItemGridPiece((ent, itemEntComponent), loc, _entity)
{
MinSize = size,
Marked = _contained.IndexOf(ent) switch
{
0 => ItemGridPieceMarks.First,
1 => ItemGridPieceMarks.Second,
_ => null,
}
Marked = IsMarked(ent),
};
gridPiece.OnPiecePressed += OnPiecePressed;
gridPiece.OnPieceUnpressed += OnPieceUnpressed;
Expand All @@ -467,6 +489,16 @@ public void BuildItemPieces()
}
}

private ItemGridPieceMarks? IsMarked(EntityUid uid)
{
return _contained.IndexOf(uid) switch
{
0 => ItemGridPieceMarks.First,
1 => ItemGridPieceMarks.Second,
_ => null,
};
}

protected override void FrameUpdate(FrameEventArgs args)
{
base.FrameUpdate(args);
Expand All @@ -486,8 +518,9 @@ protected override void FrameUpdate(FrameEventArgs args)
{
if (StorageEntity != null && _entity.System<StorageSystem>().NestedStorage)
{
// If parent container nests us then show back button
if (containerSystem.TryGetContainingContainer(StorageEntity.Value, out var container) &&
_entity.HasComponent<StorageComponent>(container.Owner))
_entity.TryGetComponent(container.Owner, out StorageComponent? storageComp) && storageComp.Container.Contains(StorageEntity.Value))
{
_backButton.Visible = true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
using Content.Shared.Input;
using Content.Shared.Interaction;
using Content.Shared.Storage;
using Robust.Client.GameObjects;
using Robust.Client.Input;
using Robust.Client.Player;
using Robust.Client.UserInterface;
Expand All @@ -37,6 +38,7 @@ public sealed class StorageUIController : UIController, IOnSystemChanged<Storage
[Dependency] private readonly IInputManager _input = default!;
[Dependency] private readonly IPlayerManager _player = default!;
[UISystemDependency] private readonly StorageSystem _storage = default!;
[UISystemDependency] private readonly UserInterfaceSystem _ui = default!;

private readonly DragDropHelper<ItemGridPiece> _menuDragHelper;

Expand Down Expand Up @@ -107,7 +109,7 @@ private void OnStaticStorageChanged(bool obj)
StaticStorageUIEnabled = obj;
}

public StorageWindow CreateStorageWindow(EntityUid uid)
public StorageWindow CreateStorageWindow(StorageBoundUserInterface sBui)
{
var window = new StorageWindow();
window.MouseFilter = Control.MouseFilterMode.Pass;
Expand All @@ -127,9 +129,25 @@ public StorageWindow CreateStorageWindow(EntityUid uid)
}
else
{
window.OpenCenteredLeft();
// Open at parent position if it's open.
if (_ui.TryGetOpenUi<StorageBoundUserInterface>(EntityManager.GetComponent<TransformComponent>(sBui.Owner).ParentUid,
StorageComponent.StorageUiKey.Key, out var bui) && bui.Position != null)
{
window.Open(bui.Position.Value);
}
// Open at the saved position if it exists.
else if (_ui.TryGetPosition(sBui.Owner, StorageComponent.StorageUiKey.Key, out var pos))
{
window.Open(pos);
}
// Open at the default position.
else
{
window.OpenCenteredLeft();
}
}

_ui.RegisterControl(sBui, window);
return window;
}

Expand Down
Loading

0 comments on commit c2d41e6

Please sign in to comment.