mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-15 03:30:53 +01:00
80 lines
2.0 KiB
C#
80 lines
2.0 KiB
C#
using Robust.Client.Interfaces;
|
|
using Robust.Client.Interfaces.Graphics.Overlays;
|
|
using Robust.Shared.GameObjects;
|
|
using Robust.Shared.IoC;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using Robust.Shared.Timing;
|
|
using Robust.Shared.Utility;
|
|
|
|
namespace Robust.Client.Graphics.Overlays
|
|
{
|
|
internal class OverlayManager : IOverlayManagerInternal
|
|
{
|
|
private readonly Dictionary<string, Overlay> _overlays = new Dictionary<string, Overlay>();
|
|
|
|
public void FrameUpdate(FrameEventArgs args)
|
|
{
|
|
foreach (var overlay in _overlays.Values)
|
|
{
|
|
overlay.FrameUpdate(args);
|
|
}
|
|
}
|
|
|
|
public void AddOverlay(Overlay overlay)
|
|
{
|
|
if (_overlays.ContainsKey(overlay.ID))
|
|
{
|
|
throw new InvalidOperationException($"We already have an overlay with ID '{overlay.ID}'");
|
|
}
|
|
|
|
_overlays.Add(overlay.ID, overlay);
|
|
}
|
|
|
|
public Overlay GetOverlay(string id)
|
|
{
|
|
return _overlays[id];
|
|
}
|
|
|
|
public T GetOverlay<T>(string id) where T : Overlay
|
|
{
|
|
return (T) GetOverlay(id);
|
|
}
|
|
|
|
public bool HasOverlay(string id)
|
|
{
|
|
return _overlays.ContainsKey(id);
|
|
}
|
|
|
|
public void RemoveOverlay(string id)
|
|
{
|
|
if (!_overlays.TryGetValue(id, out var overlay))
|
|
{
|
|
return;
|
|
}
|
|
|
|
overlay.Dispose();
|
|
_overlays.Remove(id);
|
|
}
|
|
|
|
public bool TryGetOverlay(string id, out Overlay overlay)
|
|
{
|
|
return _overlays.TryGetValue(id, out overlay);
|
|
}
|
|
|
|
public bool TryGetOverlay<T>(string id, out T overlay) where T : Overlay
|
|
{
|
|
if (_overlays.TryGetValue(id, out var value))
|
|
{
|
|
overlay = (T) value;
|
|
return true;
|
|
}
|
|
|
|
overlay = default;
|
|
return false;
|
|
}
|
|
|
|
public IEnumerable<Overlay> AllOverlays => _overlays.Values;
|
|
}
|
|
}
|