import { Injectable } from '@angular/core'; import { Card } from '../models/blackjack.model'; import { GameState } from '../enum/gameState'; @Injectable({ providedIn: 'root', }) export class GameControlsService { calculateHandValue(cards: Card[]): number { let sum = 0; let aceCount = 0; const rankValues: Record = { TWO: 2, THREE: 3, FOUR: 4, FIVE: 5, SIX: 6, SEVEN: 7, EIGHT: 8, NINE: 9, TEN: 10, JACK: 10, QUEEN: 10, KING: 10, ACE: 11, }; for (const card of cards) { if (!card.hidden) { const value = rankValues[card.rank] || 0; sum += value; if (card.rank === 'ACE') { aceCount++; } } } while (sum > 21 && aceCount > 0) { sum -= 10; aceCount--; } return sum; } getStatusText(state: GameState): string { switch (state) { case GameState.IN_PROGRESS: return 'Spiel läuft'; case GameState.PLAYER_WON: return 'Gewonnen!'; case GameState.PLAYER_LOST: return 'Verloren!'; case GameState.DRAW: return 'Unentschieden!'; default: return state; } } getStatusClass(state: GameState): string { switch (state) { case GameState.PLAYER_WON: return 'text-emerald'; case GameState.PLAYER_LOST: return 'text-accent-red'; case GameState.DRAW: return 'text-yellow-400'; default: return 'text-white'; } } }