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;
}