namespace SameBeat.Domain.Enumy;
///
/// Jedyne zrodlo prawdy o tym, ile slotow ma kazdy uklad sceny. Host nie moze przypisac slotu
/// o numerze wiekszym niz dopuszcza aktualny uklad -- ta walidacja (oraz korekta "sierocych"
/// przypisan po zmianie ukladu) zawsze przechodzi przez ten rejestr, zeby liczby nie rozjechaly
/// sie miedzy warstwami.
///
public static class RejestrSlotowSceny
{
private static readonly Dictionary LiczbaSlotow = new()
{
[UkladSceny.Grid4] = 4,
[UkladSceny.Grid6] = 6,
[UkladSceny.Grid9] = 9,
[UkladSceny.BigSide] = 4,
[UkladSceny.MainPlus4] = 5,
[UkladSceny.Fullscreen] = 1
};
/// Liczba dostepnych slotow dla danego ukladu (numery slotow to 1..LiczbaSlotow).
public static int PobierzLiczbeSlotow(UkladSceny uklad) => LiczbaSlotow[uklad];
/// Czy dany numer slotu miesci sie w zakresie dopuszczalnym przez uklad.
public static bool CzyNumerSlotuJestPoprawny(UkladSceny uklad, int numerSlotu) =>
numerSlotu >= 1 && numerSlotu <= PobierzLiczbeSlotow(uklad);
}