improvements

This commit is contained in:
Michal Vrba
2026-08-28 16:34:40 +02:00
parent 4803bc22a6
commit 02bca7c34a
212 changed files with 622 additions and 112 deletions
@@ -0,0 +1,93 @@
@namespace Faraon.Client.Components
<div class="game-over-overlay">
<div class="game-over-card animate-pop" style="max-width: 500px;">
<div class="game-over-title" style="font-size: 1.5rem; color: var(--gold);">
🏅 Kolo #@RoundNumber Skončené!
</div>
@if (RoundLoser != null)
{
<div style="background: rgba(239, 68, 68, 0.15); border: 1px solid rgba(239, 68, 68, 0.4); border-radius: 12px; padding: 10px 14px; margin-bottom: 16px;">
<div style="color: #fca5a5; font-weight: 800; font-size: 0.95rem;">
Porazený kola: @RoundLoser.Avatar @RoundLoser.Name
</div>
<div style="color: #cbd5e1; font-size: 0.85rem; margin-top: 3px;">
@if (RoundLoser.IsEliminated)
{
<span style="color: #ef4444; font-weight: 900;">☠️ Stratil všetky karty a VYPADÁVA z Olympijského turnaja!</span>
}
else
{
<span>V ďalšom kole začína s <strong>@RoundLoser.OlympicCardsCount @(RoundLoser.OlympicCardsCount == 1 ? "kartou" : (RoundLoser.OlympicCardsCount < 5 ? "kartami" : "kartami"))</strong> (-1 karta)</span>
}
</div>
</div>
}
<div style="font-size: 0.85rem; color: #94a3b8; text-transform: uppercase; font-weight: 700; margin-bottom: 8px; text-align: left;">
Stav Olympijského turnaja:
</div>
<div class="podium-list" style="margin-bottom: 20px;">
@foreach (var player in Players.OrderBy(p => p.IsEliminated ? 1 : 0).ThenBy(p => p.FinishedPosition ?? 99))
{
<div class="podium-row @(player.FinishedPosition == 1 ? "winner" : (player.IsEliminated ? "eliminated-row" : ""))">
<div class="podium-pos">
@if (player.IsEliminated)
{
<span>☠️</span>
}
else if (player.FinishedPosition == 1)
{
<span>🥇</span>
}
else if (player.FinishedPosition == 2)
{
<span>🥈</span>
}
else
{
<span>#@(player.FinishedPosition ?? 3)</span>
}
</div>
<div class="podium-player">
<span>@player.Avatar</span>
<span style="@(player.IsEliminated ? "text-decoration: line-through; opacity: 0.6;" : "")">@player.Name</span>
@if (player.Type == PlayerType.AI)
{
<span style="font-size: 0.75rem; opacity: 0.7;">(AI)</span>
}
</div>
<div style="font-weight: 800; font-size: 0.9rem;">
@if (player.IsEliminated)
{
<span style="color: #ef4444;">Vyradený</span>
}
else
{
<span style="color: var(--gold);">🎴 @player.OlympicCardsCount @(player.OlympicCardsCount == 1 ? "karta" : (player.OlympicCardsCount < 5 ? "karty" : "kariet"))</span>
}
</div>
</div>
}
</div>
<div style="display: flex; gap: 12px; justify-content: center;">
<button class="btn-primary-glow" style="padding: 12px 28px; font-size: 1.1rem;" @onclick="OnNextRound">
⚔️ Začať Kolo #@(RoundNumber + 1)
</button>
<button class="btn-pill" style="padding: 12px 20px;" @onclick="OnBackToLobby">
Do Lobby 🏠
</button>
</div>
</div>
</div>
@code {
[Parameter] public int RoundNumber { get; set; } = 1;
[Parameter] public Player? RoundLoser { get; set; }
[Parameter] public List<Player> Players { get; set; } = new();
[Parameter] public EventCallback OnNextRound { get; set; }
[Parameter] public EventCallback OnBackToLobby { get; set; }
}