127 lines
5.4 KiB
Plaintext
127 lines
5.4 KiB
Plaintext
@namespace Faraon.Client.Components
|
|
|
|
<div class="match-summary-backdrop">
|
|
<div class="match-summary-card">
|
|
<div class="game-over-title" style="margin-bottom: 8px;">
|
|
@if (IsOlympicMode)
|
|
{
|
|
<span>🏆 OLYMPIJSKÝ ŠAMPIÓN 👑</span>
|
|
}
|
|
else
|
|
{
|
|
<span>🏆 VÝSLEDKY ZÁPASU 👑</span>
|
|
}
|
|
</div>
|
|
|
|
<!-- 3D PÓDIUM VÍŤAZOV -->
|
|
@{
|
|
var sortedPlayers = Players.OrderBy(p => p.IsEliminated ? 1 : 0).ThenBy(p => p.FinishedPosition ?? 99).ToList();
|
|
var firstPlace = MatchWinner ?? sortedPlayers.FirstOrDefault(p => p.FinishedPosition == 1) ?? sortedPlayers.FirstOrDefault();
|
|
var secondPlace = sortedPlayers.Count > 1 ? (sortedPlayers.FirstOrDefault(p => p != firstPlace && p.FinishedPosition == 2) ?? sortedPlayers.Skip(1).FirstOrDefault()) : null;
|
|
var thirdPlace = sortedPlayers.Count > 2 ? (sortedPlayers.FirstOrDefault(p => p != firstPlace && p != secondPlace && p.FinishedPosition == 3) ?? sortedPlayers.Skip(2).FirstOrDefault()) : null;
|
|
}
|
|
|
|
<div class="podium-container">
|
|
<!-- 2. MIESTO (STRIEBRO) -->
|
|
@if (secondPlace != null)
|
|
{
|
|
<div class="podium-column">
|
|
<div class="podium-avatar-box">
|
|
<div class="podium-avatar">@secondPlace.GetLiveAvatar()</div>
|
|
</div>
|
|
<div class="podium-name">@secondPlace.Name</div>
|
|
<div class="podium-step step-silver">2</div>
|
|
</div>
|
|
}
|
|
|
|
<!-- 1. MIESTO (ZLATO) -->
|
|
@if (firstPlace != null)
|
|
{
|
|
<div class="podium-column">
|
|
<div class="podium-avatar-box">
|
|
<div class="podium-crown">👑</div>
|
|
<div class="podium-avatar" style="font-size: 3.2rem;">@firstPlace.GetLiveAvatar()</div>
|
|
</div>
|
|
<div class="podium-name" style="color: var(--gold); font-size: 0.95rem;">@firstPlace.Name</div>
|
|
<div class="podium-step step-gold">1</div>
|
|
</div>
|
|
}
|
|
|
|
<!-- 3. MIESTO (BRONZ) -->
|
|
@if (thirdPlace != null)
|
|
{
|
|
<div class="podium-column">
|
|
<div class="podium-avatar-box">
|
|
<div class="podium-avatar">@thirdPlace.GetLiveAvatar()</div>
|
|
</div>
|
|
<div class="podium-name">@thirdPlace.Name</div>
|
|
<div class="podium-step step-bronze">3</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
|
|
<!-- ŠTATISTIKY ZÁPASU -->
|
|
@if (Stats != null)
|
|
{
|
|
<div class="match-stats-grid">
|
|
<div class="stat-badge-box">
|
|
<span class="stat-badge-icon">👑</span>
|
|
<div>
|
|
<div class="stat-badge-title">MVP Zápasu</div>
|
|
<div class="stat-badge-value">@Stats.GetMvpPlayerName()</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="stat-badge-box">
|
|
<span class="stat-badge-icon">🎒</span>
|
|
<div>
|
|
<div class="stat-badge-title">Najväčší trest</div>
|
|
<div class="stat-badge-value">
|
|
@(Stats.MaxPenaltyDrawnInOneTurn > 0 ? $"+{Stats.MaxPenaltyDrawnInOneTurn} ({Stats.MaxPenaltyPlayerName})" : "Žiadny")
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="stat-badge-box">
|
|
<span class="stat-badge-icon">⏱️</span>
|
|
<div>
|
|
<div class="stat-badge-title">Čas & Ťahy</div>
|
|
<div class="stat-badge-value">
|
|
@($"{(int)Stats.Duration.TotalMinutes}m {Stats.Duration.Seconds:D2}s • {Stats.TotalTurns} ťahov")
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="stat-badge-box">
|
|
<span class="stat-badge-icon">🔥</span>
|
|
<div>
|
|
<div class="stat-badge-title">Spálenia & Esá</div>
|
|
<div class="stat-badge-value">
|
|
@($"{Stats.TotalCardsBurned / 4}x spálenie • {Stats.TotalAcesPlayed} es")
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
|
|
<!-- AKČNÉ TLAČIDLÁ -->
|
|
<div style="display: flex; gap: 12px; justify-content: center; margin-top: 8px;">
|
|
<button class="btn-primary-glow" style="padding: 12px 30px;" @onclick="OnPlayAgain">
|
|
Hrať znova ⚔️
|
|
</button>
|
|
<button class="btn-pill" style="padding: 12px 26px;" @onclick="OnBackToLobby">
|
|
Do Lobby 🏠
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@code {
|
|
[Parameter] public List<Player> Players { get; set; } = new();
|
|
[Parameter] public bool IsOlympicMode { get; set; } = false;
|
|
[Parameter] public Player? MatchWinner { get; set; }
|
|
[Parameter] public GameMatchStats? Stats { get; set; }
|
|
[Parameter] public EventCallback OnPlayAgain { get; set; }
|
|
[Parameter] public EventCallback OnBackToLobby { get; set; }
|
|
}
|