Code/UI/SlotMachineUI.razor
@using Sandbox
@using Sandbox.UI
@using Casino.RpSlot
@inherits PanelComponent
@namespace Casino.RpSlot
<root>
<div class="idle-overlay @(IsEngaged ? "hidden" : "")">
<div class="idle-logo">SLOT MACHINE</div>
<div class="idle-prompt">PRESS E TO PLAY</div>
</div>
@if ( IsEngaged )
{
<div class="frame">
<button class="btn close" @onclick=@Close>X</button>
<div class="title">SLOT MACHINE</div>
<div class="tabs">
<button class="tab @(_currentTab == "play" ? "active" : "")" @onclick=@(() => SetTab("play"))>JEU</button>
<button class="tab @(_currentTab == "rules" ? "active" : "")" @onclick=@(() => SetTab("rules"))>RÈGLES</button>
<button class="tab @(_currentTab == "records" ? "active" : "")" @onclick=@(() => SetTab("records"))>RECORDS</button>
</div>
@if ( _currentTab == "rules" )
{
<div class="rules-panel">
<div class="rules-title">3 SYMBOLES IDENTIQUES SUR UNE LIGNE</div>
<div class="rule-row consolation"><span class="sym">🍒🍒 + ?</span><span class="mult">@(FormatMult(Machine.TwoCherriesMultiplier))× mise</span></div>
<div class="rule-row"><span class="sym">🍒🍒🍒</span><span class="mult">@(FormatMult(Machine.CherryMultiplier))× mise</span></div>
<div class="rule-row"><span class="sym">🍋🍋🍋</span><span class="mult">@(FormatMult(Machine.LemonMultiplier))× mise</span></div>
<div class="rule-row"><span class="sym">🍊🍊🍊</span><span class="mult">@(FormatMult(Machine.OrangeMultiplier))× mise</span></div>
<div class="rule-row"><span class="sym">🔔🔔🔔</span><span class="mult">@(FormatMult(Machine.BellMultiplier))× mise</span></div>
<div class="rule-row"><span class="sym">🍫🍫🍫</span><span class="mult">@(FormatMult(Machine.BarMultiplier))× mise</span></div>
<div class="rule-row"><span class="sym">7 7 7</span><span class="mult">@(FormatMult(Machine.SevenMultiplier))× mise</span></div>
<div class="rule-row jackpot"><span class="sym">💎💎💎</span><span class="mult">@(FormatMult(Machine.JackpotMultiplier))× mise</span></div>
<div class="rules-footer">5 lignes : 3 horizontales + 2 diagonales</div>
</div>
}
else if ( _currentTab == "records" )
{
<div class="records-panel">
<div class="records-title">RECORDS DE LA SESSION</div>
<div class="record-row">
<span>Solde actuel</span>
<span class="record-value">@(GetPlayerBalance()) €</span>
</div>
<div class="record-row">
<span>Plus gros gain</span>
<span class="record-value">@(_maxGainSession) €</span>
</div>
</div>
}
else
{
<div class="info-compact">
<div class="info-item">SOLDE <span class="info-value">@(GetPlayerBalance()) €</span></div>
<div class="info-item">MISE <span class="info-value">@(Machine.CurrentBet) €</span></div>
<div class="info-item">GAIN <span class="info-value">@(Machine.LastPayout) €</span></div>
</div>
<div class="grid">
@for ( int col = 0; col < 3; col++ )
{
<div class="reel @(_reelSpinning[col] ? "spinning" : "")">
@for ( int row = 0; row < 3; row++ )
{
int idx = col * 3 + row;
<div class="cell @GetWinningColor( idx ) @GetSymbolClass( idx )">
@GetDisplayedSymbol( idx )
</div>
}
</div>
}
</div>
<div class="result-banner @GetResultClass()">
@if ( _insufficientBalanceTimer > 0f )
{
<span class="result-text lose">SOLDE INSUFFISANT</span>
}
else if ( Machine.State == SlotState.Idle && Machine.ReelResults.Count == 9 )
{
@if ( Machine.LastSpinWasJackpot )
{
<span class="result-text jackpot">JACKPOT ! +@(Machine.LastPayout)€</span>
}
else if ( Machine.LastPayout > 0 )
{
<span class="result-text win">+@(Machine.LastPayout)€</span>
}
else
{
<span class="result-text lose">PERDU</span>
}
}
</div>
<div class="controls">
<button class="btn bet-big" @onclick=@DecreaseBet100>-100</button>
<button class="btn bet-small" @onclick=@DecreaseBet>-10</button>
<button class="btn spin" @onclick=@Spin>@(IsBusy ? "..." : "SPIN")</button>
<button class="btn bet-small" @onclick=@IncreaseBet>+10</button>
<button class="btn bet-big" @onclick=@IncreaseBet100>+100</button>
</div>
}
</div>
}
</root>