namespace Faraon.Core.Models; public enum RedSevenMode { Disabled, AnyCardOneRound, ColorOrSevenThreeRounds } public enum GreenUnderKnaveMode { Disabled, OnlyOnSevenOrUnderKnave, // Ruší sedmy, bežné pravidlá (Zeleň / Dolník) UniversalWildcard // Ruší sedmy, ide na čokoľvek a súper naňho môže dať čokoľvek } public class RuleOptions { /// /// Počet kariet rozdaných každému hráčovi na začiatku (zvyčajne 4 alebo 5). /// public int InitialCardCount { get; set; } = 5; /// /// Ak je zapnuté, sedma na sedmu pridáva ďalšie +3 karty (kumulácia trestu). /// public bool StackSevens { get; set; } = true; /// /// Ak je zapnuté, eso možno prebiť vlastným esom a preniesť státie na ďalšieho hráča. /// public bool CounterAceWithAce { get; set; } = true; /// /// Režim oživovania Červenou sedmou (Voľná do 1 kola, Klasická do 3 kôl, Vypnuté). /// public RedSevenMode RedSevenMode { get; set; } = RedSevenMode.ColorOrSevenThreeRounds; /// /// Či je oživovanie Červenou sedmou povolené. /// public bool RedSevenRevives { get => RedSevenMode != RedSevenMode.Disabled; set => RedSevenMode = value ? (RedSevenMode == RedSevenMode.Disabled ? RedSevenMode.ColorOrSevenThreeRounds : RedSevenMode) : RedSevenMode.Disabled; } /// /// Režim pre Zeleného dolníka (rušenie sediem a univerzálne vykladanie). /// public GreenUnderKnaveMode GreenUnderKnaveMode { get; set; } = GreenUnderKnaveMode.OnlyOnSevenOrUnderKnave; /// /// Či Zelený dolník ruší trest zo sediem. /// public bool GreenUnderKnaveCancelsSevens { get => GreenUnderKnaveMode != GreenUnderKnaveMode.Disabled; set => GreenUnderKnaveMode = value ? (GreenUnderKnaveMode == GreenUnderKnaveMode.Disabled ? GreenUnderKnaveMode.OnlyOnSevenOrUnderKnave : GreenUnderKnaveMode) : GreenUnderKnaveMode.Disabled; } /// /// Zahranie 4 rovnakých kariet naraz ("Spálenie"). Spáli kôpku a hráč hrá znova. /// public bool FourOfAKindBurns { get; set; } = true; /// /// Režim Pass & Play so súkromnou clonou medzi ťahmi viacerých živých hráčov. /// public bool PassAndPlayPrivacyScreen { get; set; } = false; /// /// Úroveň rýchlosti hry (1 = 0.5x, 2 = 0.75x, 3 = 1x Normálna, 4 = 1.5x Rýchla, 5 = 2.5x Turbo). /// public int SpeedLevel { get; set; } = 3; /// /// Rýchlosť AI ťahov v milisekundách podľa zvolenej úrovne rýchlosti. /// public int AIDelayMs { get => SpeedLevel switch { 1 => 1600, 2 => 1200, 4 => 500, 5 => 200, _ => 900 }; set { } } /// /// Zvolený vizuálny štýl balíčka ("original" alebo "spongebob"). /// public string SelectedDeck { get; set; } = "original"; /// /// Olympijský režim: Vyraďovací turnaj. Kto prehrá kolo, má v ďalšom o 1 kartu menej. /// Hrá sa až kým nezostane iba jeden celkový víťaz. /// public bool OlympicMode { get; set; } = false; }