feat(blackjack): add action indicators and loading states
This commit is contained in:
parent
d2b22b561d
commit
acdbea5a99
7 changed files with 208 additions and 27 deletions
|
@ -42,6 +42,10 @@ export default class BlackjackComponent {
|
|||
gameInProgress = signal(false);
|
||||
gameState = signal<string>('IN_PROGRESS');
|
||||
showGameResult = signal(false);
|
||||
|
||||
// Add loading state trackers
|
||||
isActionInProgress = signal(false);
|
||||
currentAction = signal<string>('');
|
||||
|
||||
constructor() {
|
||||
this.refreshUserBalance();
|
||||
|
@ -89,64 +93,85 @@ export default class BlackjackComponent {
|
|||
}
|
||||
|
||||
onNewGame(bet: number): void {
|
||||
this.isActionInProgress.set(true);
|
||||
this.currentAction.set('Spiel wird gestartet...');
|
||||
|
||||
this.blackjackService.startGame(bet).subscribe({
|
||||
next: (game) => {
|
||||
this.updateGameState(game);
|
||||
this.refreshUserBalance();
|
||||
this.isActionInProgress.set(false);
|
||||
},
|
||||
error: (error) => {
|
||||
console.error('Failed to start game:', error);
|
||||
this.isActionInProgress.set(false);
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
onHit(): void {
|
||||
if (!this.currentGameId()) return;
|
||||
if (!this.currentGameId() || this.isActionInProgress()) return;
|
||||
|
||||
this.isActionInProgress.set(true);
|
||||
this.currentAction.set('Karte wird gezogen...');
|
||||
|
||||
this.blackjackService.hit(this.currentGameId()!).subscribe({
|
||||
next: (game) => {
|
||||
this.updateGameState(game);
|
||||
this.isActionInProgress.set(false);
|
||||
},
|
||||
error: (error) => {
|
||||
console.error('Failed to hit:', error);
|
||||
this.handleGameError(error);
|
||||
this.isActionInProgress.set(false);
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
onStand(): void {
|
||||
if (!this.currentGameId()) return;
|
||||
if (!this.currentGameId() || this.isActionInProgress()) return;
|
||||
|
||||
if (this.gameState() !== 'IN_PROGRESS') {
|
||||
console.log('Cannot stand: game is not in progress');
|
||||
return;
|
||||
}
|
||||
|
||||
this.isActionInProgress.set(true);
|
||||
this.currentAction.set('Dealer zieht Karten...');
|
||||
|
||||
this.blackjackService.stand(this.currentGameId()!).subscribe({
|
||||
next: (game) => {
|
||||
this.updateGameState(game);
|
||||
this.isActionInProgress.set(false);
|
||||
},
|
||||
error: (error) => {
|
||||
console.error('Failed to stand:', error);
|
||||
this.handleGameError(error);
|
||||
this.isActionInProgress.set(false);
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
onDoubleDown(): void {
|
||||
if (!this.currentGameId()) return;
|
||||
if (!this.currentGameId() || this.isActionInProgress()) return;
|
||||
|
||||
if (this.gameState() !== 'IN_PROGRESS' || this.playerCards().length !== 2) {
|
||||
console.log('Cannot double down: game is not in progress or more than 2 cards');
|
||||
return;
|
||||
}
|
||||
|
||||
this.isActionInProgress.set(true);
|
||||
this.currentAction.set('Einsatz wird verdoppelt...');
|
||||
|
||||
this.blackjackService.doubleDown(this.currentGameId()!).subscribe({
|
||||
next: (game) => {
|
||||
this.updateGameState(game);
|
||||
this.isActionInProgress.set(false);
|
||||
},
|
||||
error: (error) => {
|
||||
console.error('Failed to double down:', error);
|
||||
this.handleGameError(error);
|
||||
this.isActionInProgress.set(false);
|
||||
},
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue