[Dependency] private readonly StationSystem _stations = default!;
[Dependency] private readonly StationSpawningSystem _spawning = default!;
- private readonly Dictionary<ICommonSession, EditSolutionsEui> _openSolutionUis = new();
+ private readonly Dictionary<ICommonSession, List<EditSolutionsEui>> _openSolutionUis = new();
public override void Initialize()
{
#region SolutionsEui
private void OnSolutionChanged(Entity<SolutionContainerManagerComponent> entity, ref SolutionContainerChangedEvent args)
{
- foreach (var eui in _openSolutionUis.Values)
+ foreach (var list in _openSolutionUis.Values)
{
- if (eui.Target == entity.Owner)
- eui.StateDirty();
+ foreach (var eui in list)
+ {
+ if (eui.Target == entity.Owner)
+ eui.StateDirty();
+ }
}
}
if (session.AttachedEntity == null)
return;
- if (_openSolutionUis.ContainsKey(session))
- _openSolutionUis[session].Close();
-
- var eui = _openSolutionUis[session] = new EditSolutionsEui(uid);
+ var eui = new EditSolutionsEui(uid);
_euiManager.OpenEui(eui, session);
eui.StateDirty();
+
+ if (!_openSolutionUis.ContainsKey(session)) {
+ _openSolutionUis[session] = new List<EditSolutionsEui>();
+ }
+
+ _openSolutionUis[session].Add(eui);
}
- public void OnEditSolutionsEuiClosed(ICommonSession session)
+ public void OnEditSolutionsEuiClosed(ICommonSession session, EditSolutionsEui eui)
{
- _openSolutionUis.Remove(session, out var eui);
+ _openSolutionUis[session].Remove(eui);
+ if (_openSolutionUis[session].Count == 0)
+ _openSolutionUis.Remove(session);
}
private void Reset(RoundRestartCleanupEvent ev)
{
+ foreach (var euis in _openSolutionUis.Values)
+ {
+ foreach (var eui in euis.ToList())
+ {
+ eui.Close();
+ }
+ }
_openSolutionUis.Clear();
}
#endregion