improvements

This commit is contained in:
Michal Vrba
2026-09-03 17:54:36 +02:00
parent 00aa94ea7c
commit 035da18584
14 changed files with 1006 additions and 52 deletions
+1
View File
@@ -126,4 +126,5 @@ public record Card(Suit Suit, Rank Rank)
public bool IsAce => Rank == Rank.Ace;
public bool IsHornik => Rank == Rank.OverKnave;
public bool IsRedSeven => Rank == Rank.Seven && Suit == Suit.Hearts;
public bool IsGreenUnderKnave => Rank == Rank.UnderKnave && Suit == Suit.Leaves;
}
+1
View File
@@ -7,6 +7,7 @@ public enum GameEventType
CardsBurned,
CardDrawn,
SevenStacked,
SevenCanceled,
AceSkipped,
AceCountered,
SuitChanged,
+3
View File
@@ -21,6 +21,9 @@ public class GameState
public RuleOptions Rules { get; set; } = new();
public bool IsGameOver { get; set; } = false;
public Player? LastFinishedPlayer { get; set; }
public int ReviveTurnsRemaining { get; set; } = 0;
public int ReviveRoundsRemaining { get; set; } = 0;
public int ReviveWindowInitialTurns { get; set; } = 0;
public int TurnCount { get; set; } = 0;
public TurnState TurnState { get; set; } = TurnState.Playing;
public Player? PendingHornikPlayer { get; set; }
+57 -4
View File
@@ -1,5 +1,19 @@
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
{
/// <summary>
@@ -18,9 +32,32 @@ public class RuleOptions
public bool CounterAceWithAce { get; set; } = true;
/// <summary>
/// Červená sedma vracia do hry hráča, ktorý sa už zbavil všetkých kariet (posledného víťaza).
/// Režim oživovania Červenou sedmou (Voľná do 1 kola, Klasická do 3 kôl, Vypnuté).
/// </summary>
public bool RedSevenRevives { get; set; } = true;
public RedSevenMode RedSevenMode { get; set; } = RedSevenMode.ColorOrSevenThreeRounds;
/// <summary>
/// Či je oživovanie Červenou sedmou povolené.
/// </summary>
public bool RedSevenRevives
{
get => RedSevenMode != RedSevenMode.Disabled;
set => RedSevenMode = value ? (RedSevenMode == RedSevenMode.Disabled ? RedSevenMode.ColorOrSevenThreeRounds : RedSevenMode) : RedSevenMode.Disabled;
}
/// <summary>
/// Režim pre Zeleného dolníka (rušenie sediem a univerzálne vykladanie).
/// </summary>
public GreenUnderKnaveMode GreenUnderKnaveMode { get; set; } = GreenUnderKnaveMode.OnlyOnSevenOrUnderKnave;
/// <summary>
/// Či Zelený dolník ruší trest zo sediem.
/// </summary>
public bool GreenUnderKnaveCancelsSevens
{
get => GreenUnderKnaveMode != GreenUnderKnaveMode.Disabled;
set => GreenUnderKnaveMode = value ? (GreenUnderKnaveMode == GreenUnderKnaveMode.Disabled ? GreenUnderKnaveMode.OnlyOnSevenOrUnderKnave : GreenUnderKnaveMode) : GreenUnderKnaveMode.Disabled;
}
/// <summary>
/// Zahranie 4 rovnakých kariet naraz ("Spálenie"). Spáli kôpku a hráč hrá znova.
@@ -33,9 +70,25 @@ public class RuleOptions
public bool PassAndPlayPrivacyScreen { get; set; } = false;
/// <summary>
/// Rýchlosť AI ťahov v milisekundách (pre plynulé sledovanie animácií).
/// Úroveň rýchlosti hry (1 = 0.5x, 2 = 0.75x, 3 = 1x Normálna, 4 = 1.5x Rýchla, 5 = 2.5x Turbo).
/// </summary>
public int AIDelayMs { get; set; } = 900;
public int SpeedLevel { get; set; } = 3;
/// <summary>
/// Rýchlosť AI ťahov v milisekundách podľa zvolenej úrovne rýchlosti.
/// </summary>
public int AIDelayMs
{
get => SpeedLevel switch
{
1 => 1600,
2 => 1200,
4 => 500,
5 => 200,
_ => 900
};
set { }
}
/// <summary>
/// Zvolený vizuálny štýl balíčka ("original" alebo "spongebob").