2026-09-05 21:10:18 +00:00
|
|
|
export interface Player {
|
|
|
|
|
id: string;
|
|
|
|
|
name: string;
|
|
|
|
|
color: string;
|
|
|
|
|
x: number;
|
|
|
|
|
y: number;
|
2026-09-05 21:55:07 +00:00
|
|
|
score: number;
|
|
|
|
|
party_id?: string | null;
|
|
|
|
|
is_party_leader?: boolean;
|
2026-09-05 21:10:18 +00:00
|
|
|
created_at: string;
|
|
|
|
|
}
|
|
|
|
|
|
2026-09-05 21:55:07 +00:00
|
|
|
export interface Party {
|
|
|
|
|
id: string;
|
|
|
|
|
name: string;
|
|
|
|
|
leader_id: string;
|
|
|
|
|
leader_name: string;
|
|
|
|
|
member_ids: string[];
|
|
|
|
|
created_at?: string;
|
|
|
|
|
}
|
|
|
|
|
|
2026-09-05 21:10:18 +00:00
|
|
|
export interface BoardConfig {
|
|
|
|
|
min_x: number;
|
|
|
|
|
max_x: number;
|
|
|
|
|
min_y: number;
|
|
|
|
|
max_y: number;
|
|
|
|
|
grid_cells_x: number;
|
|
|
|
|
grid_cells_y: number;
|
|
|
|
|
}
|
|
|
|
|
|
2026-09-05 21:20:39 +00:00
|
|
|
export interface TurnInfo {
|
|
|
|
|
current_player_id: string | null;
|
|
|
|
|
current_player_name: string | null;
|
|
|
|
|
round_number: number;
|
|
|
|
|
turn_number: number;
|
|
|
|
|
turn_order: string[];
|
|
|
|
|
}
|
|
|
|
|
|
2026-09-05 21:10:18 +00:00
|
|
|
export interface BoardState {
|
|
|
|
|
config: BoardConfig;
|
|
|
|
|
player_count: number;
|
|
|
|
|
players: Player[];
|
2026-09-05 21:55:07 +00:00
|
|
|
parties: Party[];
|
2026-09-05 21:20:39 +00:00
|
|
|
turn: TurnInfo;
|
2026-09-05 21:10:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface PlayerCreateRequest {
|
|
|
|
|
name: string;
|
|
|
|
|
color: string;
|
|
|
|
|
}
|
2026-09-05 21:20:39 +00:00
|
|
|
|
|
|
|
|
export interface MoveCheckResult {
|
|
|
|
|
direction: string;
|
|
|
|
|
dx: number;
|
|
|
|
|
dy: number;
|
|
|
|
|
target_x: number;
|
|
|
|
|
target_y: number;
|
|
|
|
|
available: boolean;
|
|
|
|
|
reason?: string | null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface AvailableMovesResponse {
|
|
|
|
|
player_id: string;
|
|
|
|
|
player_name: string;
|
|
|
|
|
current_x: number;
|
|
|
|
|
current_y: number;
|
|
|
|
|
is_turn: boolean;
|
2026-09-05 21:55:07 +00:00
|
|
|
is_party_leader: boolean;
|
|
|
|
|
party_id?: string | null;
|
|
|
|
|
party_member_count: number;
|
2026-09-05 21:20:39 +00:00
|
|
|
current_turn_player_id?: string | null;
|
|
|
|
|
moves: Record<string, MoveCheckResult>;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface MoveResponse {
|
|
|
|
|
success: boolean;
|
|
|
|
|
player: Player;
|
|
|
|
|
direction: string;
|
2026-09-05 21:55:07 +00:00
|
|
|
party_moved?: boolean;
|
|
|
|
|
affected_players?: Player[];
|
2026-09-05 21:20:39 +00:00
|
|
|
previous_position: { x: number; y: number };
|
|
|
|
|
new_position: { x: number; y: number };
|
|
|
|
|
turn: TurnInfo;
|
|
|
|
|
}
|
2026-09-05 21:55:07 +00:00
|
|
|
|
|
|
|
|
export interface PartyDefeatResult {
|
|
|
|
|
party_id: string;
|
|
|
|
|
killed_leader_id: string;
|
|
|
|
|
killed_leader_name: string;
|
|
|
|
|
killed_leader_new_score: number;
|
|
|
|
|
killed_leader_respawn_position: { x: number; y: number };
|
|
|
|
|
new_leader_id?: string | null;
|
|
|
|
|
new_leader_name?: string | null;
|
|
|
|
|
remaining_members: string[];
|
|
|
|
|
party_dissolved: boolean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface BattleResult {
|
|
|
|
|
winner_id: string;
|
|
|
|
|
winner_name: string;
|
|
|
|
|
loser_id: string;
|
|
|
|
|
loser_name: string;
|
|
|
|
|
defeat_details: PartyDefeatResult;
|
|
|
|
|
}
|