botWebWars/frontend/src/types.ts

105 lines
2.1 KiB
TypeScript
Raw Normal View History

export interface Player {
id: string;
name: string;
color: string;
x: number;
y: number;
score: number;
party_id?: string | null;
is_party_leader?: boolean;
created_at: string;
}
export interface Party {
id: string;
name: string;
leader_id: string;
leader_name: string;
member_ids: string[];
created_at?: string;
}
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[];
}
export interface BoardState {
config: BoardConfig;
player_count: number;
players: Player[];
parties: Party[];
2026-09-05 21:20:39 +00:00
turn: TurnInfo;
}
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;
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;
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;
}
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;
}