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
+39 -5
View File
@@ -63,16 +63,40 @@
<div class="rules-toggle-grid">
<label class="rule-check-item">
<input type="checkbox" @bind="Rules.StackSevens" />
<span>Kumulácia sediem (+2, +4, +6...)</span>
<span>Kumulácia sediem (+3, +6, +9...)</span>
</label>
<label class="rule-check-item">
<input type="checkbox" @bind="Rules.CounterAceWithAce" />
<span>Prebíjanie esa esom</span>
</label>
<label class="rule-check-item">
<input type="checkbox" @bind="Rules.RedSevenRevives" />
<span>Červená sedma oživuje víťaza</span>
</label>
<div style="grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; background: rgba(255, 23, 68, 0.08); padding: 8px 12px; border-radius: 10px; border: 1px solid rgba(255, 23, 68, 0.25); gap: 12px;">
<div style="display: flex; align-items: center; gap: 8px;">
<span style="font-size: 1.1rem;">❤️</span>
<div>
<div style="font-weight: 700; color: #ff5252;">Červená sedma (Oživenie / Resurrect)</div>
<div style="font-size: 0.76rem; color: #94a3b8;">Spôsob vrátenia skončeného hráča späť do hry</div>
</div>
</div>
<select class="player-setup-select" style="width: auto; min-width: 240px; padding: 4px 10px; font-weight: 600;" @bind="Rules.RedSevenMode">
<option value="@RedSevenMode.AnyCardOneRound">⚡ Voľná na čokoľvek (do 1 kola)</option>
<option value="@RedSevenMode.ColorOrSevenThreeRounds">🎴 Klasická na Srdce/7 (do 3 kôl)</option>
<option value="@RedSevenMode.Disabled">❌ Vypnuté (Bez oživenia)</option>
</select>
</div>
<div style="grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; background: rgba(45, 106, 79, 0.12); padding: 8px 12px; border-radius: 10px; border: 1px solid rgba(45, 106, 79, 0.35); gap: 12px;">
<div style="display: flex; align-items: center; gap: 8px;">
<span style="font-size: 1.1rem;">🍃</span>
<div>
<div style="font-weight: 700; color: #52b788;">Zelený dolník (Rušenie sediem)</div>
<div style="font-size: 0.76rem; color: #94a3b8;">Zelený dolník zruší trest zo sedmy & pravidlá vykladania</div>
</div>
</div>
<select class="player-setup-select" style="width: auto; min-width: 240px; padding: 4px 10px; font-weight: 600;" @bind="Rules.GreenUnderKnaveMode">
<option value="@GreenUnderKnaveMode.OnlyOnSevenOrUnderKnave">🌿 Ruší sedmy (Zeleň / Dolník)</option>
<option value="@GreenUnderKnaveMode.UniversalWildcard">✨ Voľný na čokoľvek + čokoľvek naňho</option>
<option value="@GreenUnderKnaveMode.Disabled">❌ Vypnuté (Bez rušenia sediem)</option>
</select>
</div>
<label class="rule-check-item">
<input type="checkbox" @bind="Rules.FourOfAKindBurns" />
<span>Spálenie (4 rovnaké karty)</span>
@@ -90,6 +114,16 @@
<option value="6">6 kariet</option>
</select>
</div>
<div style="display: flex; align-items: center; gap: 8px; font-size: 0.9rem;">
<span>Rýchlosť hry:</span>
<select class="player-setup-select" style="width: auto; padding: 2px 8px;" @bind="Rules.SpeedLevel">
<option value="1">🐢 0.5x (Pomalá)</option>
<option value="2">🚶 0.75x (Pokojná)</option>
<option value="3">⚡ 1x (Normálna - štandard)</option>
<option value="4">🔥 1.5x (Rýchla)</option>
<option value="5">🚀 2.5x (Turbo / Blesková)</option>
</select>
</div>
</div>
<!-- Výber balíčka kariet (Deck Theme) -->
+37 -3
View File
@@ -1,8 +1,15 @@
@namespace Faraon.Client.Components
<div class="player-slot @PositionClass @(IsCurrentTurn ? "active-turn-slot" : "")">
<div class="avatar-badge @(IsCurrentTurn ? "active-turn" : "") @(Player.IsSkipped ? "is-skipped" : "") @(Player.HasFinished ? "is-finished" : "")">
@if (IsCurrentTurn && !Player.HasFinished && !Player.IsEliminated)
<div class="player-slot @PositionClass @(IsFrozen ? "frozen-slot" : (IsCurrentTurn ? "active-turn-slot" : ""))">
<div class="avatar-badge @(IsFrozen ? "is-frozen" : (IsCurrentTurn ? "active-turn" : "")) @(Player.HasFinished ? "is-finished" : "") @(CanBeRevived && Player.HasFinished && ReviveTurnsRemaining > 0 ? "can-be-revived" : "")">
@if (IsFrozen && !Player.HasFinished && !Player.IsEliminated)
{
<div class="frozen-indicator-badge">
<span class="frozen-indicator-dot"></span>
<span class="frozen-indicator-text">❄️ ZMRAZENÝ</span>
</div>
}
else if (IsCurrentTurn && !Player.HasFinished && !Player.IsEliminated)
{
<div class="turn-indicator-badge">
<span class="turn-indicator-dot"></span>
@@ -45,6 +52,29 @@
</div>
}
</div>
@if (IsFrozen && !Player.HasFinished && !Player.IsEliminated)
{
<div class="icicles-row">
<span class="icicle"></span>
<span class="icicle"></span>
<span class="icicle"></span>
<span class="icicle"></span>
<span class="icicle"></span>
<span class="icicle"></span>
<span class="icicle"></span>
</div>
}
@if (CanBeRevived && Player.HasFinished && ReviveTurnsRemaining > 0)
{
<div class="revive-countdown-badge" title="Tento hráč môže byť vrátený do hry Červenou sedmou!">
<span class="heartbeat-icon">❤️</span>
<span>
@(ReviveRoundsRemaining > 1 ? $"Oživenie: {ReviveRoundsRemaining} kolá" : (ReviveTurnsRemaining <= 1 ? "Oživenie: 1 ťah" : "Oživenie: 1 kolo"))
</span>
</div>
}
</div>
<!-- Mini karty pre vizuálny odpočet kariet v ruke -->
@@ -62,6 +92,10 @@
@code {
[Parameter, EditorRequired] public Player Player { get; set; } = default!;
[Parameter] public bool IsCurrentTurn { get; set; } = false;
[Parameter] public bool IsFrozen { get; set; } = false;
[Parameter] public bool CanBeRevived { get; set; } = false;
[Parameter] public int ReviveRoundsRemaining { get; set; } = 0;
[Parameter] public int ReviveTurnsRemaining { get; set; } = 0;
[Parameter] public bool IsOlympicMode { get; set; } = false;
[Parameter] public string PositionClass { get; set; } = "slot-top";
}