feat(blackjack): add animated number component and usage
This commit is contained in:
parent
a2f1a40931
commit
4b70a4ac4a
11 changed files with 127 additions and 63 deletions
|
@ -28,54 +28,27 @@ import { GameControlsService } from '@blackjack/services/game-controls.service';
|
|||
(click)="hit.emit()"
|
||||
class="button-primary px-8 py-4 text-lg font-medium min-w-[120px] relative"
|
||||
[disabled]="gameState !== GameState.IN_PROGRESS || isActionInProgress"
|
||||
[class.opacity-50]="isActionInProgress"
|
||||
>
|
||||
<span [class.invisible]="isActionInProgress">Ziehen</span>
|
||||
@if (isActionInProgress) {
|
||||
<div class="absolute inset-0 flex items-center justify-center">
|
||||
<div
|
||||
class="w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin"
|
||||
></div>
|
||||
</div>
|
||||
}
|
||||
<span>Ziehen</span>
|
||||
</button>
|
||||
<button
|
||||
(click)="stand.emit()"
|
||||
class="button-primary px-8 py-4 text-lg font-medium min-w-[120px] relative"
|
||||
[disabled]="gameState !== GameState.IN_PROGRESS || isActionInProgress"
|
||||
[class.opacity-50]="isActionInProgress"
|
||||
>
|
||||
<span [class.invisible]="isActionInProgress">Halten</span>
|
||||
@if (isActionInProgress) {
|
||||
<div class="absolute inset-0 flex items-center justify-center">
|
||||
<div
|
||||
class="w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin"
|
||||
></div>
|
||||
</div>
|
||||
}
|
||||
<span>Halten</span>
|
||||
</button>
|
||||
<button
|
||||
(click)="doubleDown.emit()"
|
||||
class="button-primary px-8 py-4 text-lg font-medium min-w-[120px] relative"
|
||||
[disabled]="
|
||||
gameState !== GameState.IN_PROGRESS || playerCards.length !== 2 || isActionInProgress
|
||||
"
|
||||
[class.opacity-50]="isActionInProgress"
|
||||
[disabled]="!canDoubleDown || isActionInProgress"
|
||||
>
|
||||
<span [class.invisible]="isActionInProgress">Verdoppeln</span>
|
||||
@if (isActionInProgress) {
|
||||
<div class="absolute inset-0 flex items-center justify-center">
|
||||
<div
|
||||
class="w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin"
|
||||
></div>
|
||||
</div>
|
||||
}
|
||||
<span>Verdoppeln</span>
|
||||
</button>
|
||||
<button
|
||||
(click)="leave.emit()"
|
||||
class="bg-accent-red hover:bg-accent-red/80 px-8 py-4 rounded text-lg font-medium min-w-[120px] transition-all duration-300"
|
||||
[disabled]="isActionInProgress"
|
||||
[class.opacity-50]="isActionInProgress"
|
||||
>
|
||||
Abbrechen
|
||||
</button>
|
||||
|
@ -97,4 +70,12 @@ export class GameControlsComponent {
|
|||
protected readonly GameState = GameState;
|
||||
|
||||
constructor(protected gameControlsService: GameControlsService) {}
|
||||
|
||||
get canDoubleDown(): boolean {
|
||||
return (
|
||||
this.gameState === GameState.IN_PROGRESS &&
|
||||
this.playerCards.length === 2 &&
|
||||
!this.isActionInProgress
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
Reference in a new issue