mirror of
https://github.com/Phantop/LADXHD.git
synced 2024-10-31 20:04:18 +00:00
77 lines
2.3 KiB
C#
77 lines
2.3 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Microsoft.Xna.Framework.Graphics;
|
|
|
|
namespace ProjectZ.Base.UI
|
|
{
|
|
public class UiManager
|
|
{
|
|
public string CurrentScreen
|
|
{
|
|
get => _currentScreen;
|
|
set => _currentScreen = value.ToUpper();
|
|
}
|
|
|
|
private readonly List<UiElement> _elementList = new List<UiElement>();
|
|
|
|
private string _currentScreen;
|
|
|
|
public void Update()
|
|
{
|
|
//remove elements
|
|
_elementList.RemoveAll(element => element.Remove);
|
|
|
|
foreach (var element in _elementList)
|
|
if (element.Screens.Contains(_currentScreen))
|
|
element.Update();
|
|
}
|
|
|
|
public void Draw(SpriteBatch spriteBatch)
|
|
{
|
|
for (var i = 0; i < _elementList.Count; i++)
|
|
if (_elementList[i].Screens.Contains(_currentScreen))
|
|
if (_elementList[i].IsVisible)
|
|
_elementList[i].Draw(spriteBatch);
|
|
}
|
|
|
|
public void DrawBlur(SpriteBatch spriteBatch)
|
|
{
|
|
for (var i = 0; i < _elementList.Count; i++)
|
|
if (_elementList[i].Screens.Contains(_currentScreen))
|
|
if (_elementList[i].IsVisible)
|
|
_elementList[i].DrawBlur(spriteBatch);
|
|
}
|
|
|
|
public void SizeChanged()
|
|
{
|
|
foreach (var uiElement in _elementList)
|
|
uiElement.SizeUpdate?.Invoke(uiElement);
|
|
}
|
|
|
|
public UiElement AddElement(UiElement element)
|
|
{
|
|
if (element != null)
|
|
_elementList.Add(element);
|
|
|
|
return element;
|
|
}
|
|
|
|
public UiElement GetElement(string elementId)
|
|
{
|
|
//search for the elementId
|
|
for (var i = 0; i < _elementList.Count; i++)
|
|
if (_elementList[i].ElementId == elementId)
|
|
return _elementList[i];
|
|
|
|
return null;
|
|
}
|
|
|
|
public void RemoveElement(string elementId, string screenId)
|
|
{
|
|
for (var i = 0; i < _elementList.Count; i++)
|
|
if (_elementList[i].ElementId.Contains(elementId) && _elementList[i].Screens.Contains(screenId))
|
|
_elementList[i].Remove = true;
|
|
}
|
|
}
|
|
}
|