diff --git a/Faraon.Client/Components/GameOverModal.razor b/Faraon.Client/Components/GameOverModal.razor
index 3ae1e3a..8a527a4 100644
--- a/Faraon.Client/Components/GameOverModal.razor
+++ b/Faraon.Client/Components/GameOverModal.razor
@@ -2,14 +2,36 @@
-
Výsledky Hry 👑
+
+ @if (IsOlympicMode)
+ {
+ 🏆 OLYMPIJSKÝ ŠAMPIÓN 👑
+ }
+ else
+ {
+ Výsledky Hry 👑
+ }
+
+
+ @if (IsOlympicMode && MatchWinner != null)
+ {
+
+
🥇👑
+
+ @MatchWinner.Avatar @MatchWinner.Name
+
+
+ Prežil všetky kolá ako jediný hráč a zvíťazil v Olympijskom turnaji!
+
+
+ }
- @foreach (var player in Players.OrderBy(p => p.FinishedPosition ?? 99))
+ @foreach (var player in Players.OrderBy(p => p.IsEliminated ? 1 : 0).ThenBy(p => p.FinishedPosition ?? 99))
{
-
+
@@ -103,11 +105,23 @@
-
Tradičný Mariáš (Original)
+
Tradičný Mariáš 🎴
Autentický dvojhlavý Tell vzor (Piatnik)
+
Rules.SelectedDeck = "janosik"'>
+
+

+

+
+
+
Zbojníci & Legendy 🪓
+
Jánošík, Uhorčík, výšivky a tatranský folklór
+
+
+
Rules.SelectedDeck = "spongebob"'>
@@ -116,7 +130,67 @@
SpongeBob Cartoon 🧽
-
Bikini Bottom edícia (Krabby Patty & postavičky)
+
Bikini Bottom edícia (postavičky a veľké symboly)
+
+
+
+
Rules.SelectedDeck = "cyberpunk"'>
+
+

+

+
+
+
Cyberpunk 2077 ⚡
+
Neónový holografický štýl a kybernetickí hrdinovia
+
+
+
+
Rules.SelectedDeck = "fantasy"'>
+
+

+

+
+
+
Fantasy RPG 🐉
+
Dračí lordi, mágovia, runy a rytieri
+
+
+
+
Rules.SelectedDeck = "egypt"'>
+
+

+

+
+
+
Staroveký Egypt ⚔️
+
Zlatý papyrus, Tutanchamón, Anubis a pyramídy
+
+
+
+
Rules.SelectedDeck = "pets"'>
+
+

+

+
+
+
Kráľovské Zvieratká 🐱
+
Mačičky a psíkovia v kráľovských korunkách
+
+
+
+
Rules.SelectedDeck = "pixel"'>
+
+

+

+
+
+
Retro 8-Bit Pixel 🕹️
+
Nostalgický arkádový štýl klasických hier
diff --git a/Faraon.Client/Components/PlayerHandView.razor b/Faraon.Client/Components/PlayerHandView.razor
index 41a1c30..f38c077 100644
--- a/Faraon.Client/Components/PlayerHandView.razor
+++ b/Faraon.Client/Components/PlayerHandView.razor
@@ -88,9 +88,9 @@
int total = Player.Hand.Count;
double mid = (total - 1) / 2.0;
double offset = i - mid;
- double angle = total > 1 ? offset * (Math.Min(35.0 / total, 5.5)) : 0;
- double yOffset = Math.Abs(offset) * 4.0;
- double xOffset = offset * (total > 8 ? 26 : 38);
+ double angle = total > 1 ? offset * (Math.Min(35.0 / total, 5.2)) : 0;
+ double yOffset = Math.Abs(offset) * 3.5;
+ double stepFactor = total > 8 ? 0.75 : (total > 5 ? 0.88 : 1.0);
// Ak patrí do aktívnej skupiny rovnakej hodnoty, vysunieme ju
string slotClasses = "hand-card-slot";
@@ -99,7 +99,7 @@
slotClasses += " rank-group-lifted";
}
- string fanSlotStyle = $"transform: translateX({xOffset}px) translateY({yOffset}px) rotate({angle}deg); z-index: {(isSelected ? 140 + i : (isSameRankAsSelected ? 110 + i : i + 1))};";
+ string fanSlotStyle = $"transform: translateX(calc({offset.ToString(System.Globalization.CultureInfo.InvariantCulture)} * var(--fan-card-step) * {stepFactor.ToString(System.Globalization.CultureInfo.InvariantCulture)})) translateY({yOffset.ToString(System.Globalization.CultureInfo.InvariantCulture)}px) rotate({angle.ToString(System.Globalization.CultureInfo.InvariantCulture)}deg); z-index: {(isSelected ? 140 + i : (isSameRankAsSelected ? 110 + i : i + 1))};";
string selectedClass = isSelected ? "card-selected-combo" : (isSameRankAsSelected ? "card-group-active" : "");
diff --git a/Faraon.Client/Components/PlayerSlot.razor b/Faraon.Client/Components/PlayerSlot.razor
index 96602dd..b723886 100644
--- a/Faraon.Client/Components/PlayerSlot.razor
+++ b/Faraon.Client/Components/PlayerSlot.razor
@@ -18,7 +18,11 @@
}
- @if (Player.HasFinished)
+ @if (Player.IsEliminated)
+ {
+
☠️ Vyradený
+ }
+ else if (Player.HasFinished)
{
Skončil 🏆
}
@@ -26,11 +30,17 @@
{
@Player.Hand.Count @(Player.Hand.Count == 1 ? "karta" : (Player.Hand.Count < 5 ? "karty" : "kariet"))
}
+ @if (IsOlympicMode)
+ {
+
+ 🏅 @Player.OlympicCardsCount @(Player.OlympicCardsCount == 1 ? "karta" : (Player.OlympicCardsCount < 5 ? "karty" : "kariet"))
+
+ }
- @if (!Player.HasFinished)
+ @if (!Player.HasFinished && !Player.IsEliminated)
{
@for (int i = 0; i < Math.Min(Player.Hand.Count, 8); i++)
@@ -44,5 +54,6 @@
@code {
[Parameter, EditorRequired] public Player Player { get; set; } = default!;
[Parameter] public bool IsCurrentTurn { get; set; } = false;
+ [Parameter] public bool IsOlympicMode { get; set; } = false;
[Parameter] public string PositionClass { get; set; } = "slot-top";
}
diff --git a/Faraon.Client/Components/RoundOverModal.razor b/Faraon.Client/Components/RoundOverModal.razor
new file mode 100644
index 0000000..145aa10
--- /dev/null
+++ b/Faraon.Client/Components/RoundOverModal.razor
@@ -0,0 +1,93 @@
+@namespace Faraon.Client.Components
+
+
+
+
+ 🏅 Kolo #@RoundNumber Skončené!
+
+
+ @if (RoundLoser != null)
+ {
+
+
+ Porazený kola: @RoundLoser.Avatar @RoundLoser.Name
+
+
+ @if (RoundLoser.IsEliminated)
+ {
+ ☠️ Stratil všetky karty a VYPADÁVA z Olympijského turnaja!
+ }
+ else
+ {
+ V ďalšom kole začína s @RoundLoser.OlympicCardsCount @(RoundLoser.OlympicCardsCount == 1 ? "kartou" : (RoundLoser.OlympicCardsCount < 5 ? "kartami" : "kartami")) (-1 karta)
+ }
+
+
+ }
+
+
+ Stav Olympijského turnaja:
+
+
+
+ @foreach (var player in Players.OrderBy(p => p.IsEliminated ? 1 : 0).ThenBy(p => p.FinishedPosition ?? 99))
+ {
+
+
+ @if (player.IsEliminated)
+ {
+ ☠️
+ }
+ else if (player.FinishedPosition == 1)
+ {
+ 🥇
+ }
+ else if (player.FinishedPosition == 2)
+ {
+ 🥈
+ }
+ else
+ {
+ #@(player.FinishedPosition ?? 3)
+ }
+
+
+ @player.Avatar
+ @player.Name
+ @if (player.Type == PlayerType.AI)
+ {
+ (AI)
+ }
+
+
+ @if (player.IsEliminated)
+ {
+ Vyradený
+ }
+ else
+ {
+ 🎴 @player.OlympicCardsCount @(player.OlympicCardsCount == 1 ? "karta" : (player.OlympicCardsCount < 5 ? "karty" : "kariet"))
+ }
+
+
+ }
+
+
+
+
+
+
+
+
+
+@code {
+ [Parameter] public int RoundNumber { get; set; } = 1;
+ [Parameter] public Player? RoundLoser { get; set; }
+ [Parameter] public List
Players { get; set; } = new();
+ [Parameter] public EventCallback OnNextRound { get; set; }
+ [Parameter] public EventCallback OnBackToLobby { get; set; }
+}
diff --git a/Faraon.Client/Pages/Home.razor b/Faraon.Client/Pages/Home.razor
index 6a6ef12..2dc533e 100644
--- a/Faraon.Client/Pages/Home.razor
+++ b/Faraon.Client/Pages/Home.razor
@@ -15,7 +15,15 @@ else
-
+ @if (!ViewingPlayer.IsEliminated)
+ {
+
+ }
+ else
+ {
+
+ ☠️ Bol si vyradený z Olympijského turnaja. Sleduj zápas až do konca!
+
+ }
- @if (IsViewingPlayerTurn && Engine.State.TurnState == TurnState.Playing)
+ @if (IsViewingPlayerTurn && Engine.State.TurnState == TurnState.Playing && !ViewingPlayer.IsEliminated)
{
@if (CheckFourOfAKindRank(ViewingPlayer) is Rank burnRank)
@@ -158,9 +182,20 @@ else
}
+ @if (Engine.State.TurnState == TurnState.RoundOver)
+ {
+
+ }
+
@if (Engine.State.IsGameOver)
{
}
@@ -285,13 +320,29 @@ else
return "top";
}
+ private static readonly string[] AvailableDecks = new[] { "original", "janosik", "spongebob", "cyberpunk", "fantasy", "egypt", "pets", "pixel" };
+
private void ToggleDeck()
{
if (Engine == null) return;
- Engine.State.Rules.SelectedDeck = Engine.State.Rules.SelectedDeck == "spongebob" ? "original" : "spongebob";
+ int currentIdx = Array.IndexOf(AvailableDecks, Engine.State.Rules.SelectedDeck);
+ int nextIdx = (currentIdx + 1) % AvailableDecks.Length;
+ Engine.State.Rules.SelectedDeck = AvailableDecks[nextIdx];
StateHasChanged();
}
+ private string GetDeckIcon(string deck) => deck switch
+ {
+ "janosik" => "🪓",
+ "spongebob" => "🧽",
+ "cyberpunk" => "⚡",
+ "fantasy" => "🐉",
+ "egypt" => "⚔️",
+ "pets" => "🐱",
+ "pixel" => "🕹️",
+ _ => "🎴"
+ };
+
private async Task HandlePlayCards(List
cards)
{
if (Engine == null || cards.Count == 0) return;
@@ -349,6 +400,14 @@ else
CheckTriggerAI();
}
+ private void HandleStartNextRound()
+ {
+ if (Engine == null) return;
+ Engine.StartNextRound();
+ StateHasChanged();
+ CheckTriggerAI();
+ }
+
private async Task HandleBurn(Rank rank)
{
if (Engine == null) return;
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_Ace.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_Ace.webp
new file mode 100644
index 0000000..9f0c29e
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_Eight.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_Eight.webp
new file mode 100644
index 0000000..c8e3f80
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_King.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_King.webp
new file mode 100644
index 0000000..b8916b4
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_Nine.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_Nine.webp
new file mode 100644
index 0000000..61df629
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_OverKnave.webp
new file mode 100644
index 0000000..0fd79bb
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_Seven.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_Seven.webp
new file mode 100644
index 0000000..3a26f10
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_Ten.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_Ten.webp
new file mode 100644
index 0000000..01a2158
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_UnderKnave.webp
new file mode 100644
index 0000000..9165015
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Acorns_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_Ace.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_Ace.webp
new file mode 100644
index 0000000..8a5e565
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_Eight.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_Eight.webp
new file mode 100644
index 0000000..ac5e75f
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_King.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_King.webp
new file mode 100644
index 0000000..0e4f432
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_Nine.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_Nine.webp
new file mode 100644
index 0000000..e592e39
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_OverKnave.webp
new file mode 100644
index 0000000..ab52eff
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_Seven.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_Seven.webp
new file mode 100644
index 0000000..d8cda2a
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_Ten.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_Ten.webp
new file mode 100644
index 0000000..8ec611c
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_UnderKnave.webp
new file mode 100644
index 0000000..a0019b9
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Bells_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Card_Back.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Card_Back.webp
new file mode 100644
index 0000000..c103c91
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Card_Back.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_Ace.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_Ace.webp
new file mode 100644
index 0000000..c4dc725
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_Eight.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_Eight.webp
new file mode 100644
index 0000000..d783ee3
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_King.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_King.webp
new file mode 100644
index 0000000..99f94fc
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_Nine.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_Nine.webp
new file mode 100644
index 0000000..9feb4b8
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_OverKnave.webp
new file mode 100644
index 0000000..954e576
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_Seven.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_Seven.webp
new file mode 100644
index 0000000..965c857
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_Ten.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_Ten.webp
new file mode 100644
index 0000000..99303a3
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_UnderKnave.webp
new file mode 100644
index 0000000..26d261c
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Hearts_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_Ace.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_Ace.webp
new file mode 100644
index 0000000..405b206
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_Eight.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_Eight.webp
new file mode 100644
index 0000000..e4c0f56
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_King.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_King.webp
new file mode 100644
index 0000000..18dc04d
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_Nine.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_Nine.webp
new file mode 100644
index 0000000..cbfb3fb
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_OverKnave.webp
new file mode 100644
index 0000000..518b14b
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_Seven.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_Seven.webp
new file mode 100644
index 0000000..714ae80
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_Ten.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_Ten.webp
new file mode 100644
index 0000000..efc8385
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_UnderKnave.webp
new file mode 100644
index 0000000..acaaf4c
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/cyberpunk/Leaves_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_Ace.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_Ace.webp
new file mode 100644
index 0000000..afd8370
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_Eight.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_Eight.webp
new file mode 100644
index 0000000..45118e2
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_King.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_King.webp
new file mode 100644
index 0000000..d6ea207
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_Nine.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_Nine.webp
new file mode 100644
index 0000000..a0e9c3b
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_OverKnave.webp
new file mode 100644
index 0000000..37a3b8b
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_Seven.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_Seven.webp
new file mode 100644
index 0000000..68f9fbe
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_Ten.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_Ten.webp
new file mode 100644
index 0000000..feed297
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_UnderKnave.webp
new file mode 100644
index 0000000..45e3247
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Acorns_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Bells_Ace.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Bells_Ace.webp
new file mode 100644
index 0000000..a2b5f42
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Bells_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Bells_Eight.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Bells_Eight.webp
new file mode 100644
index 0000000..b64a709
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Bells_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Bells_King.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Bells_King.webp
new file mode 100644
index 0000000..b5ee6bf
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Bells_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Bells_Nine.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Bells_Nine.webp
new file mode 100644
index 0000000..b3f7ae2
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Bells_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Bells_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Bells_OverKnave.webp
new file mode 100644
index 0000000..cfe9247
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Bells_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Bells_Seven.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Bells_Seven.webp
new file mode 100644
index 0000000..ec09ba9
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Bells_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Bells_Ten.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Bells_Ten.webp
new file mode 100644
index 0000000..7f670d3
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Bells_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Bells_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Bells_UnderKnave.webp
new file mode 100644
index 0000000..35a87ce
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Bells_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Card_Back.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Card_Back.webp
new file mode 100644
index 0000000..84455b7
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Card_Back.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_Ace.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_Ace.webp
new file mode 100644
index 0000000..12f107e
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_Eight.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_Eight.webp
new file mode 100644
index 0000000..d552d54
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_King.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_King.webp
new file mode 100644
index 0000000..1d2c431
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_Nine.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_Nine.webp
new file mode 100644
index 0000000..ba8fe8d
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_OverKnave.webp
new file mode 100644
index 0000000..904e2dc
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_Seven.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_Seven.webp
new file mode 100644
index 0000000..2440f4e
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_Ten.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_Ten.webp
new file mode 100644
index 0000000..db4dfe5
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_UnderKnave.webp
new file mode 100644
index 0000000..336bc77
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Hearts_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_Ace.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_Ace.webp
new file mode 100644
index 0000000..27d494b
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_Eight.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_Eight.webp
new file mode 100644
index 0000000..6f8275b
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_King.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_King.webp
new file mode 100644
index 0000000..f900991
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_Nine.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_Nine.webp
new file mode 100644
index 0000000..528851e
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_OverKnave.webp
new file mode 100644
index 0000000..8163625
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_Seven.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_Seven.webp
new file mode 100644
index 0000000..2db8ba1
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_Ten.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_Ten.webp
new file mode 100644
index 0000000..1cc9e6e
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_UnderKnave.webp
new file mode 100644
index 0000000..4313dde
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/egypt/Leaves_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_Ace.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_Ace.webp
new file mode 100644
index 0000000..4f7aa56
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_Eight.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_Eight.webp
new file mode 100644
index 0000000..cb6d843
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_King.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_King.webp
new file mode 100644
index 0000000..ba654ed
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_Nine.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_Nine.webp
new file mode 100644
index 0000000..17ef9cc
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_OverKnave.webp
new file mode 100644
index 0000000..1501cfe
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_Seven.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_Seven.webp
new file mode 100644
index 0000000..e30bbdd
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_Ten.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_Ten.webp
new file mode 100644
index 0000000..ebdf838
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_UnderKnave.webp
new file mode 100644
index 0000000..cd047cc
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Acorns_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_Ace.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_Ace.webp
new file mode 100644
index 0000000..ce03279
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_Eight.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_Eight.webp
new file mode 100644
index 0000000..f2a9b82
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_King.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_King.webp
new file mode 100644
index 0000000..5624b57
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_Nine.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_Nine.webp
new file mode 100644
index 0000000..fc32dba
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_OverKnave.webp
new file mode 100644
index 0000000..5e783c1
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_Seven.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_Seven.webp
new file mode 100644
index 0000000..50870e9
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_Ten.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_Ten.webp
new file mode 100644
index 0000000..ddccfa4
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_UnderKnave.webp
new file mode 100644
index 0000000..49b2299
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Bells_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Card_Back.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Card_Back.webp
new file mode 100644
index 0000000..c8e4fe4
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Card_Back.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_Ace.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_Ace.webp
new file mode 100644
index 0000000..1065f69
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_Eight.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_Eight.webp
new file mode 100644
index 0000000..70a3259
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_King.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_King.webp
new file mode 100644
index 0000000..cbd050c
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_Nine.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_Nine.webp
new file mode 100644
index 0000000..2d9be81
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_OverKnave.webp
new file mode 100644
index 0000000..2f6ed3b
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_Seven.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_Seven.webp
new file mode 100644
index 0000000..af2889e
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_Ten.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_Ten.webp
new file mode 100644
index 0000000..23072c6
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_UnderKnave.webp
new file mode 100644
index 0000000..547e259
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Hearts_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_Ace.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_Ace.webp
new file mode 100644
index 0000000..cc5903e
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_Eight.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_Eight.webp
new file mode 100644
index 0000000..912345c
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_King.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_King.webp
new file mode 100644
index 0000000..cd2ce66
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_Nine.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_Nine.webp
new file mode 100644
index 0000000..fdf8335
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_OverKnave.webp
new file mode 100644
index 0000000..fa2a194
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_Seven.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_Seven.webp
new file mode 100644
index 0000000..1461aa4
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_Ten.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_Ten.webp
new file mode 100644
index 0000000..fd86fa6
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_UnderKnave.webp
new file mode 100644
index 0000000..9ad2860
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/fantasy/Leaves_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_Ace.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_Ace.webp
new file mode 100644
index 0000000..225febf
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_Eight.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_Eight.webp
new file mode 100644
index 0000000..fa9d80b
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_King.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_King.webp
new file mode 100644
index 0000000..25c9227
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_Nine.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_Nine.webp
new file mode 100644
index 0000000..ec1141b
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_OverKnave.webp
new file mode 100644
index 0000000..fd3346a
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_Seven.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_Seven.webp
new file mode 100644
index 0000000..9768b4b
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_Ten.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_Ten.webp
new file mode 100644
index 0000000..475343c
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_UnderKnave.webp
new file mode 100644
index 0000000..8ab78c1
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Acorns_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Bells_Ace.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Bells_Ace.webp
new file mode 100644
index 0000000..b26940c
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Bells_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Bells_Eight.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Bells_Eight.webp
new file mode 100644
index 0000000..b386a20
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Bells_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Bells_King.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Bells_King.webp
new file mode 100644
index 0000000..9f4195c
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Bells_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Bells_Nine.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Bells_Nine.webp
new file mode 100644
index 0000000..db3fbe5
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Bells_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Bells_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Bells_OverKnave.webp
new file mode 100644
index 0000000..d12afd0
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Bells_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Bells_Seven.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Bells_Seven.webp
new file mode 100644
index 0000000..8dbe855
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Bells_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Bells_Ten.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Bells_Ten.webp
new file mode 100644
index 0000000..352ea29
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Bells_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Bells_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Bells_UnderKnave.webp
new file mode 100644
index 0000000..7219129
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Bells_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Card_Back.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Card_Back.webp
new file mode 100644
index 0000000..9b83810
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Card_Back.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_Ace.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_Ace.webp
new file mode 100644
index 0000000..885d9ab
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_Eight.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_Eight.webp
new file mode 100644
index 0000000..86dfa4d
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_King.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_King.webp
new file mode 100644
index 0000000..b02f338
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_Nine.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_Nine.webp
new file mode 100644
index 0000000..edcc63a
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_OverKnave.webp
new file mode 100644
index 0000000..60f5831
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_Seven.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_Seven.webp
new file mode 100644
index 0000000..01253c8
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_Ten.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_Ten.webp
new file mode 100644
index 0000000..fc8733d
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_UnderKnave.webp
new file mode 100644
index 0000000..e097724
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Hearts_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_Ace.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_Ace.webp
new file mode 100644
index 0000000..42e2031
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_Eight.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_Eight.webp
new file mode 100644
index 0000000..73cf351
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_King.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_King.webp
new file mode 100644
index 0000000..83bc839
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_Nine.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_Nine.webp
new file mode 100644
index 0000000..128fe6f
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_OverKnave.webp
new file mode 100644
index 0000000..e64ebc6
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_Seven.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_Seven.webp
new file mode 100644
index 0000000..9e96c46
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_Ten.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_Ten.webp
new file mode 100644
index 0000000..8b73c93
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_UnderKnave.webp
new file mode 100644
index 0000000..53c2783
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/janosik/Leaves_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Acorns_Ace.webp b/Faraon.Client/wwwroot/assets/cards/pets/Acorns_Ace.webp
new file mode 100644
index 0000000..81b54ff
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Acorns_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Acorns_Eight.webp b/Faraon.Client/wwwroot/assets/cards/pets/Acorns_Eight.webp
new file mode 100644
index 0000000..587eeda
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Acorns_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Acorns_King.webp b/Faraon.Client/wwwroot/assets/cards/pets/Acorns_King.webp
new file mode 100644
index 0000000..948d8c3
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Acorns_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Acorns_Nine.webp b/Faraon.Client/wwwroot/assets/cards/pets/Acorns_Nine.webp
new file mode 100644
index 0000000..675515e
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Acorns_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Acorns_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/pets/Acorns_OverKnave.webp
new file mode 100644
index 0000000..b168329
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Acorns_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Acorns_Seven.webp b/Faraon.Client/wwwroot/assets/cards/pets/Acorns_Seven.webp
new file mode 100644
index 0000000..2b44816
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Acorns_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Acorns_Ten.webp b/Faraon.Client/wwwroot/assets/cards/pets/Acorns_Ten.webp
new file mode 100644
index 0000000..1614788
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Acorns_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Acorns_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/pets/Acorns_UnderKnave.webp
new file mode 100644
index 0000000..2e05044
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Acorns_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Bells_Ace.webp b/Faraon.Client/wwwroot/assets/cards/pets/Bells_Ace.webp
new file mode 100644
index 0000000..2f10606
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Bells_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Bells_Eight.webp b/Faraon.Client/wwwroot/assets/cards/pets/Bells_Eight.webp
new file mode 100644
index 0000000..d09a70a
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Bells_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Bells_King.webp b/Faraon.Client/wwwroot/assets/cards/pets/Bells_King.webp
new file mode 100644
index 0000000..d1ae5c3
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Bells_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Bells_Nine.webp b/Faraon.Client/wwwroot/assets/cards/pets/Bells_Nine.webp
new file mode 100644
index 0000000..2d86564
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Bells_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Bells_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/pets/Bells_OverKnave.webp
new file mode 100644
index 0000000..c92cba3
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Bells_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Bells_Seven.webp b/Faraon.Client/wwwroot/assets/cards/pets/Bells_Seven.webp
new file mode 100644
index 0000000..10666b2
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Bells_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Bells_Ten.webp b/Faraon.Client/wwwroot/assets/cards/pets/Bells_Ten.webp
new file mode 100644
index 0000000..2900785
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Bells_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Bells_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/pets/Bells_UnderKnave.webp
new file mode 100644
index 0000000..d09c98b
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Bells_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Card_Back.webp b/Faraon.Client/wwwroot/assets/cards/pets/Card_Back.webp
new file mode 100644
index 0000000..70816dc
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Card_Back.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Hearts_Ace.webp b/Faraon.Client/wwwroot/assets/cards/pets/Hearts_Ace.webp
new file mode 100644
index 0000000..e81d7c2
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Hearts_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Hearts_Eight.webp b/Faraon.Client/wwwroot/assets/cards/pets/Hearts_Eight.webp
new file mode 100644
index 0000000..7a0e96e
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Hearts_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Hearts_King.webp b/Faraon.Client/wwwroot/assets/cards/pets/Hearts_King.webp
new file mode 100644
index 0000000..beca224
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Hearts_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Hearts_Nine.webp b/Faraon.Client/wwwroot/assets/cards/pets/Hearts_Nine.webp
new file mode 100644
index 0000000..b452b5d
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Hearts_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Hearts_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/pets/Hearts_OverKnave.webp
new file mode 100644
index 0000000..65d9c55
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Hearts_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Hearts_Seven.webp b/Faraon.Client/wwwroot/assets/cards/pets/Hearts_Seven.webp
new file mode 100644
index 0000000..0ac421c
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Hearts_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Hearts_Ten.webp b/Faraon.Client/wwwroot/assets/cards/pets/Hearts_Ten.webp
new file mode 100644
index 0000000..92936e2
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Hearts_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Hearts_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/pets/Hearts_UnderKnave.webp
new file mode 100644
index 0000000..6713c15
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Hearts_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Leaves_Ace.webp b/Faraon.Client/wwwroot/assets/cards/pets/Leaves_Ace.webp
new file mode 100644
index 0000000..f76e9e3
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Leaves_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Leaves_Eight.webp b/Faraon.Client/wwwroot/assets/cards/pets/Leaves_Eight.webp
new file mode 100644
index 0000000..430f920
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Leaves_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Leaves_King.webp b/Faraon.Client/wwwroot/assets/cards/pets/Leaves_King.webp
new file mode 100644
index 0000000..582792c
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Leaves_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Leaves_Nine.webp b/Faraon.Client/wwwroot/assets/cards/pets/Leaves_Nine.webp
new file mode 100644
index 0000000..2065a5f
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Leaves_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Leaves_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/pets/Leaves_OverKnave.webp
new file mode 100644
index 0000000..370a00b
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Leaves_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Leaves_Seven.webp b/Faraon.Client/wwwroot/assets/cards/pets/Leaves_Seven.webp
new file mode 100644
index 0000000..fa9ecb1
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Leaves_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Leaves_Ten.webp b/Faraon.Client/wwwroot/assets/cards/pets/Leaves_Ten.webp
new file mode 100644
index 0000000..cc13c75
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Leaves_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pets/Leaves_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/pets/Leaves_UnderKnave.webp
new file mode 100644
index 0000000..8df1451
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pets/Leaves_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_Ace.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_Ace.webp
new file mode 100644
index 0000000..3a6b4ed
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_Eight.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_Eight.webp
new file mode 100644
index 0000000..269b3c2
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_King.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_King.webp
new file mode 100644
index 0000000..3ec10a9
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_Nine.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_Nine.webp
new file mode 100644
index 0000000..11abae8
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_OverKnave.webp
new file mode 100644
index 0000000..b9d3e3f
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_Seven.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_Seven.webp
new file mode 100644
index 0000000..35a86a5
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_Ten.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_Ten.webp
new file mode 100644
index 0000000..d3595ce
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_UnderKnave.webp
new file mode 100644
index 0000000..2d48bd9
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Acorns_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Bells_Ace.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Bells_Ace.webp
new file mode 100644
index 0000000..a0bf523
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Bells_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Bells_Eight.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Bells_Eight.webp
new file mode 100644
index 0000000..b0ebd68
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Bells_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Bells_King.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Bells_King.webp
new file mode 100644
index 0000000..1fe1502
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Bells_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Bells_Nine.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Bells_Nine.webp
new file mode 100644
index 0000000..b880634
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Bells_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Bells_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Bells_OverKnave.webp
new file mode 100644
index 0000000..349b0a8
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Bells_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Bells_Seven.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Bells_Seven.webp
new file mode 100644
index 0000000..8808778
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Bells_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Bells_Ten.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Bells_Ten.webp
new file mode 100644
index 0000000..84c6221
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Bells_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Bells_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Bells_UnderKnave.webp
new file mode 100644
index 0000000..61908a4
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Bells_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Card_Back.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Card_Back.webp
new file mode 100644
index 0000000..5d58dea
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Card_Back.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_Ace.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_Ace.webp
new file mode 100644
index 0000000..9fc786a
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_Eight.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_Eight.webp
new file mode 100644
index 0000000..0f8569a
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_King.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_King.webp
new file mode 100644
index 0000000..709bd09
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_Nine.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_Nine.webp
new file mode 100644
index 0000000..d6824cd
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_OverKnave.webp
new file mode 100644
index 0000000..687e0a6
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_Seven.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_Seven.webp
new file mode 100644
index 0000000..98bfc18
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_Ten.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_Ten.webp
new file mode 100644
index 0000000..eb84f13
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_UnderKnave.webp
new file mode 100644
index 0000000..78abcd9
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Hearts_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_Ace.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_Ace.webp
new file mode 100644
index 0000000..0799b9f
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_Ace.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_Eight.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_Eight.webp
new file mode 100644
index 0000000..7e6b8b5
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_Eight.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_King.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_King.webp
new file mode 100644
index 0000000..f5be8c3
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_King.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_Nine.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_Nine.webp
new file mode 100644
index 0000000..8295400
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_Nine.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_OverKnave.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_OverKnave.webp
new file mode 100644
index 0000000..4b3f3cd
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_OverKnave.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_Seven.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_Seven.webp
new file mode 100644
index 0000000..caa1395
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_Seven.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_Ten.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_Ten.webp
new file mode 100644
index 0000000..d32619e
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_Ten.webp differ
diff --git a/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_UnderKnave.webp b/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_UnderKnave.webp
new file mode 100644
index 0000000..c91aa91
Binary files /dev/null and b/Faraon.Client/wwwroot/assets/cards/pixel/Leaves_UnderKnave.webp differ
diff --git a/Faraon.Client/wwwroot/css/app.css b/Faraon.Client/wwwroot/css/app.css
index 3ac0fc3..f4ec8e8 100644
--- a/Faraon.Client/wwwroot/css/app.css
+++ b/Faraon.Client/wwwroot/css/app.css
@@ -6,24 +6,37 @@
--gold-glow: #ffd700;
--flame-red: #ff4500;
--ice-blue: #00e5ff;
- --card-width: 90px;
- --card-height: 135px;
- --card-radius: 8px;
+
+ /* Dynamické škálovanie kariet podľa veľkosti a výšky obrazovky */
+ --card-width: clamp(82px, 8.5vw, 115px);
+ --card-height: calc(var(--card-width) * 1.5);
+ --card-radius: clamp(8px, 0.8vw, 14px);
+ --fan-card-step: clamp(26px, 2.8vw, 44px);
}
-@media (min-width: 768px) {
+@media (min-width: 768px) and (min-height: 600px) {
:root {
- --card-width: 110px;
- --card-height: 165px;
- --card-radius: 10px;
+ --card-width: clamp(105px, 9vw, 135px);
+ --card-height: calc(var(--card-width) * 1.5);
+ --fan-card-step: clamp(34px, 3.2vw, 50px);
}
}
-@media (min-width: 1200px) {
+/* Fullscreen a štandardné monitory 1080p */
+@media (min-width: 1200px) and (min-height: 700px) {
:root {
- --card-width: 125px;
- --card-height: 188px;
- --card-radius: 12px;
+ --card-width: clamp(130px, 9.5vw, 165px);
+ --card-height: calc(var(--card-width) * 1.5);
+ --fan-card-step: clamp(44px, 3.8vw, 64px);
+ }
+}
+
+/* Veľké Fullscreen displeje (1440p / 2K / 4K / Ultrawide) */
+@media (min-width: 1600px) and (min-height: 850px) {
+ :root {
+ --card-width: clamp(160px, 10.5vw, 215px);
+ --card-height: calc(var(--card-width) * 1.5);
+ --fan-card-step: clamp(54px, 4.2vw, 80px);
}
}
@@ -148,21 +161,21 @@ body, html {
flex: 1;
position: relative;
display: grid;
- grid-template-rows: 140px 1fr 180px;
- grid-template-columns: 140px 1fr 140px;
- margin: 10px 16px 16px;
- border-radius: 40px;
- border: 10px solid #5a3818;
+ grid-template-rows: clamp(90px, 14vh, 160px) 1fr calc(var(--card-height) + 55px);
+ grid-template-columns: clamp(100px, 13vw, 220px) 1fr clamp(100px, 13vw, 220px);
+ margin: 8px 14px 14px;
+ border-radius: clamp(24px, 3vw, 44px);
+ border: clamp(6px, 0.8vw, 12px) solid #5a3818;
box-shadow: inset 0 0 60px rgba(0, 0, 0, 0.8), 0 0 30px rgba(0, 0, 0, 0.9);
background: radial-gradient(ellipse at center, #1b5e3f 0%, #0d3824 70%, #061c12 100%);
}
@media (max-width: 768px) {
.poker-table-surface {
- grid-template-rows: 100px 1fr 160px;
- grid-template-columns: 90px 1fr 90px;
- margin: 6px;
- border-width: 6px;
+ grid-template-rows: 90px 1fr calc(var(--card-height) + 45px);
+ grid-template-columns: 85px 1fr 85px;
+ margin: 4px;
+ border-width: 5px;
}
}
@@ -593,7 +606,7 @@ body, html {
position: relative;
height: var(--card-height);
width: 100%;
- max-width: 600px;
+ max-width: clamp(650px, 75vw, 1350px);
}
.hand-card-slot {
@@ -1152,12 +1165,12 @@ body, html {
}
.lobby-container {
- background: rgba(10, 25, 18, 0.9);
+ background: rgba(10, 25, 18, 0.92);
border: 2px solid rgba(245, 176, 65, 0.4);
- border-radius: 28px;
- padding: 30px 36px;
- box-shadow: 0 0 50px rgba(0, 0, 0, 0.8), 0 0 30px rgba(245, 176, 65, 0.2);
- max-width: 850px;
+ border-radius: 24px;
+ padding: 22px 28px;
+ box-shadow: 0 0 50px rgba(0, 0, 0, 0.85), 0 0 30px rgba(245, 176, 65, 0.2);
+ max-width: 1160px;
width: 100%;
}
@@ -1277,11 +1290,23 @@ body, html {
/* DECK SELECTOR */
.deck-selector-grid {
display: grid;
- grid-template-columns: 1fr 1fr;
- gap: 14px;
+ grid-template-columns: repeat(4, 1fr);
+ gap: 12px;
}
-@media (max-width: 600px) {
+@media (max-width: 1100px) {
+ .deck-selector-grid {
+ grid-template-columns: repeat(3, 1fr);
+ }
+}
+
+@media (max-width: 768px) {
+ .deck-selector-grid {
+ grid-template-columns: repeat(2, 1fr);
+ }
+}
+
+@media (max-width: 480px) {
.deck-selector-grid {
grid-template-columns: 1fr;
}
@@ -1290,31 +1315,31 @@ body, html {
.deck-option-card {
display: flex;
align-items: center;
- gap: 14px;
- background: rgba(0, 0, 0, 0.35);
+ gap: 10px;
+ background: rgba(0, 0, 0, 0.4);
border: 2px solid rgba(255, 255, 255, 0.15);
- border-radius: 16px;
- padding: 12px;
+ border-radius: 14px;
+ padding: 8px 10px;
cursor: pointer;
- transition: all 0.25s cubic-bezier(0.175, 0.885, 0.32, 1.275);
+ transition: all 0.22s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
.deck-option-card:hover {
- background: rgba(245, 176, 65, 0.12);
- border-color: rgba(245, 176, 65, 0.5);
+ background: rgba(245, 176, 65, 0.14);
+ border-color: rgba(245, 176, 65, 0.6);
transform: translateY(-2px);
}
.deck-option-card.selected-deck {
- background: rgba(245, 176, 65, 0.2);
+ background: rgba(245, 176, 65, 0.22);
border-color: var(--gold);
- box-shadow: 0 0 20px rgba(245, 176, 65, 0.4), inset 0 0 15px rgba(245, 176, 65, 0.15);
+ box-shadow: 0 0 16px rgba(245, 176, 65, 0.45), inset 0 0 12px rgba(245, 176, 65, 0.15);
}
.deck-preview-img-box {
position: relative;
- width: 64px;
- height: 90px;
+ width: 48px;
+ height: 68px;
flex-shrink: 0;
}
@@ -1322,11 +1347,11 @@ body, html {
position: absolute;
top: 0;
left: 0;
- width: 52px;
- height: 78px;
- border-radius: 6px;
+ width: 38px;
+ height: 58px;
+ border-radius: 5px;
border: 1px solid rgba(255, 255, 255, 0.4);
- box-shadow: 0 4px 10px rgba(0, 0, 0, 0.6);
+ box-shadow: 0 3px 8px rgba(0, 0, 0, 0.6);
object-fit: cover;
z-index: 2;
transition: transform 0.2s ease;
@@ -1336,31 +1361,35 @@ body, html {
position: absolute;
bottom: 0;
right: 0;
- width: 52px;
- height: 78px;
- border-radius: 6px;
+ width: 38px;
+ height: 58px;
+ border-radius: 5px;
border: 1px solid rgba(255, 255, 255, 0.2);
- box-shadow: 0 2px 6px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);
object-fit: cover;
z-index: 1;
opacity: 0.85;
}
.deck-option-card:hover .deck-preview-thumb {
- transform: translateY(-4px) rotate(-3deg);
+ transform: translateY(-3px) rotate(-3deg);
}
.deck-info {
display: flex;
flex-direction: column;
- gap: 3px;
+ gap: 2px;
text-align: left;
+ overflow: hidden;
}
.deck-name {
- font-size: 1rem;
+ font-size: 0.88rem;
font-weight: 800;
color: #fff;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
}
.deck-option-card.selected-deck .deck-name {
@@ -1368,9 +1397,13 @@ body, html {
}
.deck-desc {
- font-size: 0.8rem;
+ font-size: 0.72rem;
color: #94a3b8;
- line-height: 1.25;
+ line-height: 1.2;
+ display: -webkit-box;
+ -webkit-line-clamp: 2;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
}
/* Canvas Particle Layer */
diff --git a/Faraon.Client/wwwroot/js/gameFx.js b/Faraon.Client/wwwroot/js/gameFx.js
index 6eaf614..88c8701 100644
--- a/Faraon.Client/wwwroot/js/gameFx.js
+++ b/Faraon.Client/wwwroot/js/gameFx.js
@@ -351,8 +351,9 @@ window.FaraonFx = (function () {
const flyingCard = document.createElement('div');
flyingCard.className = 'game-card marias-card flying-card-anim';
flyingCard.style.position = 'fixed';
- flyingCard.style.left = `${startPos.x - 55}px`;
- flyingCard.style.top = `${startPos.y - 80}px`;
+ flyingCard.style.left = `${startPos.x}px`;
+ flyingCard.style.top = `${startPos.y}px`;
+ flyingCard.style.transform = 'translate(-50%, -50%)';
flyingCard.style.zIndex = '999';
flyingCard.style.pointerEvents = 'none';
flyingCard.style.boxShadow = '0 20px 40px rgba(0,0,0,0.8), 0 0 30px rgba(245, 176, 65, 0.9)';
@@ -372,16 +373,16 @@ window.FaraonFx = (function () {
const animation = flyingCard.animate([
{
- transform: 'translate3d(0, 0, 0) scale(0.85) rotate(0deg)',
+ transform: 'translate(-50%, -50%) translate3d(0, 0, 0) scale(0.85) rotate(0deg)',
opacity: 0.9
},
{
- transform: `translate3d(${dx * 0.45}px, ${dy * 0.45 - 60}px, 0) scale(1.35) rotate(${randomRotation * 0.5}deg)`,
+ transform: `translate(-50%, -50%) translate3d(${dx * 0.45}px, ${dy * 0.45 - 60}px, 0) scale(1.35) rotate(${randomRotation * 0.5}deg)`,
opacity: 1,
offset: 0.5
},
{
- transform: `translate3d(${dx}px, ${dy}px, 0) scale(1) rotate(${randomRotation}deg)`,
+ transform: `translate(-50%, -50%) translate3d(${dx}px, ${dy}px, 0) scale(1) rotate(${randomRotation}deg)`,
opacity: 1
}
], {
@@ -408,8 +409,9 @@ window.FaraonFx = (function () {
const flyingBack = document.createElement('div');
flyingBack.className = 'game-card marias-card flying-card-anim';
flyingBack.style.position = 'fixed';
- flyingBack.style.left = `${startPos.x - 55}px`;
- flyingBack.style.top = `${startPos.y - 80}px`;
+ flyingBack.style.left = `${startPos.x}px`;
+ flyingBack.style.top = `${startPos.y}px`;
+ flyingBack.style.transform = 'translate(-50%, -50%)';
flyingBack.style.zIndex = '999';
flyingBack.style.pointerEvents = 'none';
flyingBack.style.boxShadow = '0 10px 25px rgba(0,0,0,0.7)';
@@ -423,9 +425,9 @@ window.FaraonFx = (function () {
const dy = targetPos.y - startPos.y;
const animation = flyingBack.animate([
- { transform: 'translate3d(0, 0, 0) scale(1) rotate(0deg)', opacity: 1 },
- { transform: `translate3d(${dx * 0.5}px, ${dy * 0.5 - 30}px, 0) scale(1.15) rotate(10deg)`, opacity: 1, offset: 0.5 },
- { transform: `translate3d(${dx}px, ${dy}px, 0) scale(0.6) rotate(0deg)`, opacity: 0.2 }
+ { transform: 'translate(-50%, -50%) translate3d(0, 0, 0) scale(1) rotate(0deg)', opacity: 1 },
+ { transform: `translate(-50%, -50%) translate3d(${dx * 0.5}px, ${dy * 0.5 - 30}px, 0) scale(1.15) rotate(10deg)`, opacity: 1, offset: 0.5 },
+ { transform: `translate(-50%, -50%) translate3d(${dx}px, ${dy}px, 0) scale(0.6) rotate(0deg)`, opacity: 0.2 }
], {
duration: 380,
easing: 'cubic-bezier(0.25, 1, 0.5, 1)'
diff --git a/Faraon.Core/Engine/GameEngine.cs b/Faraon.Core/Engine/GameEngine.cs
index d066a86..0b4ddcf 100644
--- a/Faraon.Core/Engine/GameEngine.cs
+++ b/Faraon.Core/Engine/GameEngine.cs
@@ -25,6 +25,11 @@ public class GameEngine
State.Players = players;
State.Rules = rules;
State.IsGameOver = false;
+ State.IsMatchOver = false;
+ State.IsRoundOver = false;
+ State.MatchWinner = null;
+ State.RoundLoser = null;
+ State.RoundNumber = 1;
State.LastFinishedPlayer = null;
State.TurnCount = 1;
State.PendingDrawCount = 0;
@@ -35,6 +40,7 @@ public class GameEngine
foreach (var player in State.Players)
{
+ player.OlympicCardsCount = State.Rules.InitialCardCount;
player.Reset();
}
@@ -42,10 +48,10 @@ public class GameEngine
State.DrawDeck = _deckManager.CreateShuffledDeck();
State.DiscardPile.Clear();
- // Rozdanie kariet každému hráčovi
- for (int i = 0; i < State.Rules.InitialCardCount; i++)
+ // Rozdanie kariet každému aktívnemu hráčovi podľa jeho OlympicCardsCount
+ foreach (var player in State.ActiveTournamentPlayers)
{
- foreach (var player in State.Players)
+ for (int i = 0; i < player.OlympicCardsCount; i++)
{
if (State.DrawDeck.Count > 0)
{
@@ -57,7 +63,6 @@ public class GameEngine
}
// Otočenie prvej karty na odhadzovaciu kôpku
- // Ak je prvá karta sedma, eso alebo horník, v základnej hre ju berieme ako štartovaciu bez okamžitého trestu
var startCard = State.DrawDeck[0];
State.DrawDeck.RemoveAt(0);
State.DiscardPile.Add(startCard);
@@ -551,27 +556,131 @@ public class GameEngine
int remaining = State.ActivePlayersCount;
if (remaining <= 1)
{
- State.IsGameOver = true;
- State.TurnState = TurnState.GameOver;
-
- // Zostávajúcemu hráčovi priradíme posledné miesto
- var lastPlayer = State.Players.FirstOrDefault(p => !p.HasFinished);
+ // Zostávajúci hráč, ktorému ostali karty (porazený tohto kola)
+ var lastPlayer = State.ActiveTournamentPlayers.FirstOrDefault(p => !p.HasFinished);
if (lastPlayer != null)
{
- lastPlayer.FinishedPosition = State.Players.Count;
+ lastPlayer.FinishedPosition = State.ActiveTournamentPlayers.Count;
+ State.RoundLoser = lastPlayer;
}
- EmitEvent(new GameEvent(
- GameEventType.GameOver,
- null,
- Message: "Koniec hry! Všetky pozície sú určené."
- ));
+ if (State.Rules.OlympicMode)
+ {
+ if (lastPlayer != null)
+ {
+ lastPlayer.OlympicCardsCount--;
+ if (lastPlayer.IsEliminated)
+ {
+ EmitEvent(new GameEvent(
+ GameEventType.PlayerEliminated,
+ lastPlayer,
+ Message: $"☠️ {lastPlayer.Name} stratil všetky karty a vypadáva z Olympijského turnaja!"
+ ));
+ }
+ }
+
+ var remainingTournamentPlayers = State.ActiveTournamentPlayers;
+ if (remainingTournamentPlayers.Count <= 1)
+ {
+ // Koniec turnaja! Zostal iba 1 víťaz
+ State.IsGameOver = true;
+ State.IsMatchOver = true;
+ State.MatchWinner = remainingTournamentPlayers.FirstOrDefault() ?? lastPlayer;
+ State.TurnState = TurnState.GameOver;
+
+ EmitEvent(new GameEvent(
+ GameEventType.MatchWon,
+ State.MatchWinner,
+ Message: $"🥇 {State.MatchWinner?.Name} sa stal celkovým OLYMPIJSKÝM ŠAMPIÓNOM!"
+ ));
+ }
+ else
+ {
+ // Koniec jedného kola, nasleduje ďalšie
+ State.IsRoundOver = true;
+ State.TurnState = TurnState.RoundOver;
+
+ EmitEvent(new GameEvent(
+ GameEventType.RoundOver,
+ lastPlayer,
+ ExtraData: State.RoundNumber,
+ Message: $"🏅 Kolo #{State.RoundNumber} sa skončilo! {lastPlayer?.Name} bude mať v ďalšom kole {lastPlayer?.OlympicCardsCount} kariet."
+ ));
+ }
+ }
+ else
+ {
+ // Bežná jednoduchá hra
+ State.IsGameOver = true;
+ State.TurnState = TurnState.GameOver;
+
+ EmitEvent(new GameEvent(
+ GameEventType.GameOver,
+ null,
+ Message: "Koniec hry! Všetky pozície sú určené."
+ ));
+ }
}
}
+ public void StartNextRound()
+ {
+ if (!State.Rules.OlympicMode || State.IsMatchOver) return;
+
+ State.RoundNumber++;
+ State.IsRoundOver = false;
+ State.IsGameOver = false;
+ State.RoundLoser = null;
+ State.TurnState = TurnState.Playing;
+ State.TurnCount = 1;
+ State.PendingDrawCount = 0;
+ State.PendingSkip = false;
+ State.ActiveSuit = null;
+ State.PendingHornikPlayer = null;
+
+ foreach (var p in State.Players)
+ {
+ p.Reset();
+ }
+
+ // Vytvorenie a zamiešanie nového balíčka
+ State.DrawDeck = _deckManager.CreateShuffledDeck();
+ State.DiscardPile.Clear();
+
+ // Rozdanie kariet len aktívnym (nevyradeným) hráčom podľa ich OlympicCardsCount
+ foreach (var player in State.ActiveTournamentPlayers)
+ {
+ for (int i = 0; i < player.OlympicCardsCount; i++)
+ {
+ if (State.DrawDeck.Count > 0)
+ {
+ var card = State.DrawDeck[0];
+ State.DrawDeck.RemoveAt(0);
+ player.Hand.Add(card);
+ }
+ }
+ }
+
+ // Otočenie prvej karty na odhadzovaciu kôpku
+ var startCard = State.DrawDeck[0];
+ State.DrawDeck.RemoveAt(0);
+ State.DiscardPile.Add(startCard);
+
+ // Nastavíme prvého hráča na prvého aktívneho
+ var firstActiveIndex = State.Players.FindIndex(p => !p.IsEliminated);
+ State.CurrentPlayerIndex = firstActiveIndex >= 0 ? firstActiveIndex : 0;
+
+ EmitEvent(new GameEvent(
+ GameEventType.GameStarted,
+ State.CurrentPlayer,
+ Card: startCard,
+ Message: $"🏅 Začalo sa Kolo #{State.RoundNumber} Olympijského Faraóna!"
+ ));
+ }
+
private void AdvanceTurn()
{
- if (State.IsGameOver) return;
+ if (State.IsGameOver || State.IsRoundOver) return;
int attempts = 0;
do
@@ -579,12 +688,12 @@ public class GameEngine
State.CurrentPlayerIndex = (State.CurrentPlayerIndex + 1) % State.Players.Count;
attempts++;
}
- while (State.CurrentPlayer.HasFinished && attempts <= State.Players.Count);
+ while ((State.CurrentPlayer.HasFinished || State.CurrentPlayer.IsEliminated) && attempts <= State.Players.Count * 2);
State.TurnCount++;
// Ak hráme Pass & Play a nasledujúci hráč je človek a je zapnutá súkromná clona
- if (State.Rules.PassAndPlayPrivacyScreen && State.CurrentPlayer.Type == PlayerType.Human && State.Players.Count(p => p.Type == PlayerType.Human) > 1)
+ if (State.Rules.PassAndPlayPrivacyScreen && State.CurrentPlayer.Type == PlayerType.Human && State.ActiveTournamentPlayers.Count(p => p.Type == PlayerType.Human) > 1)
{
State.TurnState = TurnState.PassScreen;
}
diff --git a/Faraon.Core/Models/GameEvents.cs b/Faraon.Core/Models/GameEvents.cs
index 4814098..98223e0 100644
--- a/Faraon.Core/Models/GameEvents.cs
+++ b/Faraon.Core/Models/GameEvents.cs
@@ -13,7 +13,10 @@ public enum GameEventType
PlayerRevived,
PlayerFinished,
GameOver,
- DeckReshuffled
+ DeckReshuffled,
+ RoundOver,
+ PlayerEliminated,
+ MatchWon
}
public record GameEvent(
diff --git a/Faraon.Core/Models/GameState.cs b/Faraon.Core/Models/GameState.cs
index 7d04ddc..0443269 100644
--- a/Faraon.Core/Models/GameState.cs
+++ b/Faraon.Core/Models/GameState.cs
@@ -5,6 +5,7 @@ public enum TurnState
Playing,
SelectingSuit,
PassScreen,
+ RoundOver,
GameOver
}
@@ -25,7 +26,15 @@ public class GameState
public Player? PendingHornikPlayer { get; set; }
public Card? TopCard => DiscardPile.Count > 0 ? DiscardPile[^1] : null;
+ // Olympijský režim (Turnaj)
+ public int RoundNumber { get; set; } = 1;
+ public bool IsRoundOver { get; set; } = false;
+ public Player? RoundLoser { get; set; }
+ public Player? MatchWinner { get; set; }
+ public bool IsMatchOver { get; set; } = false;
+
public Player CurrentPlayer => Players.Count > 0 ? Players[CurrentPlayerIndex % Players.Count] : new Player();
- public int ActivePlayersCount => Players.Count(p => !p.HasFinished);
+ public int ActivePlayersCount => Players.Where(p => !p.IsEliminated).Count(p => !p.HasFinished);
+ public List ActiveTournamentPlayers => Players.Where(p => !p.IsEliminated).ToList();
}
diff --git a/Faraon.Core/Models/Player.cs b/Faraon.Core/Models/Player.cs
index 7593e8c..002b83c 100644
--- a/Faraon.Core/Models/Player.cs
+++ b/Faraon.Core/Models/Player.cs
@@ -27,6 +27,16 @@ public class Player
public bool IsSkipped { get; set; }
+ ///
+ /// Počet kariet do ruky v Olympijskom režime (kto prehrá kolo, klesá o 1).
+ ///
+ public int OlympicCardsCount { get; set; } = 5;
+
+ ///
+ /// Či je hráč vyradený z Olympijského turnaja.
+ ///
+ public bool IsEliminated => OlympicCardsCount <= 0;
+
public Player() { }
public Player(string name, PlayerType type, string avatar = "👤", AIDifficulty difficulty = AIDifficulty.Medium)
diff --git a/Faraon.Core/Models/RuleOptions.cs b/Faraon.Core/Models/RuleOptions.cs
index c45feba..5627020 100644
--- a/Faraon.Core/Models/RuleOptions.cs
+++ b/Faraon.Core/Models/RuleOptions.cs
@@ -41,4 +41,10 @@ public class RuleOptions
/// 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;
}
diff --git a/Faraon.Tests/GameEngineTests.cs b/Faraon.Tests/GameEngineTests.cs
index ba2acf0..b02928a 100644
--- a/Faraon.Tests/GameEngineTests.cs
+++ b/Faraon.Tests/GameEngineTests.cs
@@ -255,4 +255,63 @@ public class GameEngineTests
Assert.True(engine.CanPlayCard(p1, decision.Card));
}
}
+
+ [Fact]
+ public void OlympicMode_LoserLosesOneCard_AndStartsNextRound()
+ {
+ var engine = new GameEngine(seed: 42);
+ var p1 = new Player("Hráč 1", PlayerType.Human);
+ var p2 = new Player("Hráč 2", PlayerType.Human);
+ var p3 = new Player("Hráč 3", PlayerType.Human);
+ var rules = new RuleOptions { OlympicMode = true, InitialCardCount = 4 };
+ engine.StartGame(new List { p1, p2, p3 }, rules);
+
+ // Hráč 1 vyhrá (prvý skončí)
+ p1.Hand.Clear();
+ p1.Hand.Add(new Card(Suit.Hearts, Rank.Eight));
+ engine.State.DiscardPile.Clear();
+ engine.State.DiscardPile.Add(new Card(Suit.Hearts, Rank.Seven));
+ engine.PlayCard(p1, p1.Hand[0]); // p1 finished 1st
+
+ // Hráč 2 skončí druhý
+ p2.Hand.Clear();
+ p2.Hand.Add(new Card(Suit.Hearts, Rank.Nine));
+ engine.PlayCard(p2, p2.Hand[0]); // p2 finished 2nd
+
+ // Hráč 3 ostal posledný (porazený kola)
+ Assert.True(engine.State.IsRoundOver);
+ Assert.Equal(TurnState.RoundOver, engine.State.TurnState);
+ Assert.Equal(p3, engine.State.RoundLoser);
+ Assert.Equal(3, p3.OlympicCardsCount); // 4 - 1 = 3 karty
+
+ // Spustenie ďalšieho kola
+ engine.StartNextRound();
+ Assert.Equal(2, engine.State.RoundNumber);
+ Assert.Equal(4, p1.Hand.Count);
+ Assert.Equal(4, p2.Hand.Count);
+ Assert.Equal(3, p3.Hand.Count); // Hráč 3 má o 1 kartu menej
+ }
+
+ [Fact]
+ public void OlympicMode_EliminatesPlayer_AndDeclaresWinner()
+ {
+ var engine = new GameEngine(seed: 42);
+ var p1 = new Player("Hráč 1", PlayerType.Human);
+ var p2 = new Player("Hráč 2", PlayerType.Human);
+ var rules = new RuleOptions { OlympicMode = true, InitialCardCount = 1 };
+ engine.StartGame(new List { p1, p2 }, rules);
+
+ // Hráč 1 vyhrá kolo
+ p1.Hand.Clear();
+ p1.Hand.Add(new Card(Suit.Hearts, Rank.Eight));
+ engine.State.DiscardPile.Clear();
+ engine.State.DiscardPile.Add(new Card(Suit.Hearts, Rank.Seven));
+ engine.PlayCard(p1, p1.Hand[0]);
+
+ // Hráč 2 prehrá kolo -> klesne z 1 na 0 kariet -> eliminovaný!
+ Assert.True(p2.IsEliminated);
+ Assert.True(engine.State.IsMatchOver);
+ Assert.Equal(p1, engine.State.MatchWinner);
+ Assert.Equal(TurnState.GameOver, engine.State.TurnState);
+ }
}