chore: initial commit
This commit is contained in:
69
src/game/types.ts
Normal file
69
src/game/types.ts
Normal file
@@ -0,0 +1,69 @@
|
||||
export type Suit = 'bastoni' | 'coppe' | 'denara' | 'spade';
|
||||
export const SUITS: Suit[] = ['bastoni', 'coppe', 'denara', 'spade'];
|
||||
|
||||
export interface Card {
|
||||
suit: Suit;
|
||||
value: number; // 1-10
|
||||
id: string; // e.g. "denara_7"
|
||||
}
|
||||
|
||||
export interface Capture {
|
||||
played: Card;
|
||||
captured: Card[];
|
||||
}
|
||||
|
||||
export type PlayerIndex = 0 | 1 | 2 | 3;
|
||||
|
||||
export interface Player {
|
||||
index: PlayerIndex;
|
||||
hand: Card[];
|
||||
pile: Card[]; // captured cards
|
||||
scope: number; // number of scope achieved
|
||||
isHuman: boolean;
|
||||
name: string;
|
||||
}
|
||||
|
||||
export interface GameState {
|
||||
players: [Player, Player, Player, Player];
|
||||
table: Card[];
|
||||
currentPlayer: PlayerIndex;
|
||||
roundOver: boolean;
|
||||
gameOver: boolean;
|
||||
teamScores: [TeamScore, TeamScore]; // Team 0: players 0+2, Team 1: players 1+3
|
||||
lastCapturTeam: 0 | 1 | null; // which team made the last capture (gets remaining table cards)
|
||||
roundNumber: number;
|
||||
}
|
||||
|
||||
export interface TeamScore {
|
||||
cards: number;
|
||||
scope: number;
|
||||
denari: number;
|
||||
settebello: boolean;
|
||||
primiera: number;
|
||||
// final points for this round
|
||||
roundPoints: number;
|
||||
totalPoints: number;
|
||||
}
|
||||
|
||||
export interface ScoreBreakdown {
|
||||
cartePoint: 0 | 1 | null; // null = tie
|
||||
denariPoint: 0 | 1 | null;
|
||||
settebelloPoint: 0 | 1;
|
||||
primieraPoint: 0 | 1 | null;
|
||||
scopeTeam0: number;
|
||||
scopeTeam1: number;
|
||||
}
|
||||
|
||||
// Primiera values per card value
|
||||
export const PRIMIERA_VALUES: Record<number, number> = {
|
||||
7: 21,
|
||||
6: 18,
|
||||
1: 16,
|
||||
5: 15,
|
||||
4: 14,
|
||||
3: 13,
|
||||
2: 12,
|
||||
8: 10,
|
||||
9: 10,
|
||||
10: 10,
|
||||
};
|
||||
Reference in New Issue
Block a user