Initial commit.
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
// Mirrors of the Go view types (internal/game/view.go).
|
||||
|
||||
export type Suit = 'sun' | 'moon' | 'star' | 'leaf'
|
||||
export type CardKind = 'pet' | 'food'
|
||||
export type Phase = 'lobby' | 'shop' | 'cleanup' | 'arrange' | 'battle' | 'gameover'
|
||||
|
||||
export interface Card {
|
||||
id: string
|
||||
kind: CardKind
|
||||
name: string
|
||||
tier: number
|
||||
power?: number
|
||||
suit?: Suit
|
||||
effect?: string
|
||||
food?: string
|
||||
}
|
||||
|
||||
export interface PlayerView {
|
||||
id: string
|
||||
name: string
|
||||
seat: number
|
||||
coins: number
|
||||
trophies: number
|
||||
ready: boolean
|
||||
connected: boolean
|
||||
deckSize: number
|
||||
petCount: number
|
||||
deck?: Card[]
|
||||
}
|
||||
|
||||
export interface PendingTrade {
|
||||
playerId: string
|
||||
tier: number
|
||||
options: [Card, Card]
|
||||
}
|
||||
|
||||
export interface BattleUnit {
|
||||
card: Card
|
||||
foods: Card[] | null
|
||||
bonus: number
|
||||
damage: number
|
||||
}
|
||||
|
||||
export interface BattleEvent {
|
||||
type: 'clash'
|
||||
units: number[]
|
||||
damage: number[]
|
||||
died: boolean[]
|
||||
}
|
||||
|
||||
export interface BattleResult {
|
||||
round: number
|
||||
lineups: BattleUnit[][]
|
||||
wastedFoods: (Card[] | null)[]
|
||||
events: BattleEvent[] | null
|
||||
winnerSeat: number
|
||||
trophies: number
|
||||
}
|
||||
|
||||
export interface GameView {
|
||||
gameId: string
|
||||
code: string
|
||||
phase: Phase
|
||||
round: number
|
||||
maxRounds: number
|
||||
maxPets: number
|
||||
youSeat: number
|
||||
turn: number
|
||||
shopRow: Card[]
|
||||
deckCounts: number[]
|
||||
players: PlayerView[]
|
||||
pending?: PendingTrade
|
||||
battle?: BattleResult
|
||||
winnerSeat: number
|
||||
}
|
||||
|
||||
export type ClientMessage =
|
||||
| { type: 'buy'; row: number }
|
||||
| { type: 'discard'; cards: string[] }
|
||||
| { type: 'trade'; cards: string[] }
|
||||
| { type: 'tradeChoose'; pick: number }
|
||||
| { type: 'pass' }
|
||||
| { type: 'arrange'; order: string[] }
|
||||
| { type: 'ready' }
|
||||
|
||||
export interface Session {
|
||||
gameId: string
|
||||
code: string
|
||||
playerId: string
|
||||
token: string
|
||||
}
|
||||
Reference in New Issue
Block a user