118 lines
4.9 KiB
Plaintext
118 lines
4.9 KiB
Plaintext
@namespace Faraon.Client.Components
|
|
|
|
<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" : "") emotion-aura-@Player.CurrentEmotion.ToString().ToLowerInvariant()">
|
|
@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>
|
|
<span class="turn-indicator-text">NA ŤAHU</span>
|
|
</div>
|
|
}
|
|
|
|
@if (Player.HasFinished)
|
|
{
|
|
<div class="badge-finished-pos">
|
|
@Player.FinishedPosition
|
|
</div>
|
|
}
|
|
|
|
<div class="avatar-icon-wrapper emotion-anim-@Player.CurrentEmotion.ToString().ToLowerInvariant()">
|
|
<span class="avatar-icon">@Player.GetLiveAvatar()</span>
|
|
@if (!Player.HasFinished && !Player.IsEliminated && Player.GetEmotionBadge() != null)
|
|
{
|
|
<span class="avatar-emotion-dot-badge">@Player.GetEmotionBadge()</span>
|
|
}
|
|
</div>
|
|
<div class="avatar-name">
|
|
@Player.Name
|
|
@if (Player.Type == PlayerType.AI)
|
|
{
|
|
<span style="font-size: 0.7rem; opacity: 0.8;">(AI)</span>
|
|
}
|
|
</div>
|
|
<div class="avatar-card-count">
|
|
@if (Player.IsEliminated)
|
|
{
|
|
<span style="color: #ef4444; font-weight: 800;">☠️ Vyradený</span>
|
|
}
|
|
else if (Player.HasFinished)
|
|
{
|
|
<span>Skončil 🏆</span>
|
|
}
|
|
else
|
|
{
|
|
<span>@Player.Hand.Count @(Player.Hand.Count == 1 ? "karta" : (Player.Hand.Count < 5 ? "karty" : "kariet"))</span>
|
|
}
|
|
@if (IsOlympicMode)
|
|
{
|
|
<div style="font-size: 0.72rem; color: var(--gold); margin-top: 2px;">
|
|
🏅 @Player.OlympicCardsCount @(Player.OlympicCardsCount == 1 ? "karta" : (Player.OlympicCardsCount < 5 ? "karty" : "kariet"))
|
|
</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>
|
|
}
|
|
|
|
@if (!string.IsNullOrEmpty(ThoughtBubble))
|
|
{
|
|
<div class="ai-thought-bubble @PositionClass @(IsThoughtFadingOut ? "fading-out" : "")">
|
|
<span class="thought-bubble-prefix">💭</span>
|
|
<span class="thought-bubble-text">@ThoughtBubble</span>
|
|
</div>
|
|
}
|
|
</div>
|
|
|
|
<!-- Mini karty pre vizuálny odpočet kariet v ruke -->
|
|
@if (!Player.HasFinished && !Player.IsEliminated)
|
|
{
|
|
<div class="opponent-mini-cards">
|
|
@for (int i = 0; i < Math.Min(Player.Hand.Count, 8); i++)
|
|
{
|
|
<div class="mini-card-back"></div>
|
|
}
|
|
</div>
|
|
}
|
|
</div>
|
|
|
|
@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 string? ThoughtBubble { get; set; }
|
|
[Parameter] public bool IsThoughtFadingOut { get; set; } = false;
|
|
[Parameter] public bool IsOlympicMode { get; set; } = false;
|
|
[Parameter] public string PositionClass { get; set; } = "slot-top";
|
|
}
|