using HyperBooru.Pages.Component; namespace HyperBooru.Services; public interface IDialogService { public void Register(Dialog dialog); public void Unregister(Dialog dialog); public void BumpZIndex(Dialog dialog); } public class DialogService : IDialogService { private const int MinZLevel = 900; private List dialogs = new(); public void Register(Dialog dialog) { if(!dialogs.Contains(dialog)) dialogs.Add(dialog); dialog.ZIndex = dialogs.Count() - 1 + MinZLevel; } public void Unregister(Dialog dialog) { dialogs.Remove(dialog); for(int i = 0; i < dialogs.Count(); i++) dialogs[i].ZIndex = i + MinZLevel; } public void BumpZIndex(Dialog dialog) { if(!dialogs.Contains(dialog)) return; dialogs.Remove(dialog); dialogs.Add(dialog); for(int i = 0; i < dialogs.Count(); i++) dialogs[i].ZIndex = i + MinZLevel; } }