import type { RobotGroup, RobotInfo } from '@api/robot';
import type { Meta2dData } from '@meta2d/core';

export interface SceneInfo {
  id: string; // 场景id
  label: string; // 场景名称
}
export interface SceneDetail extends SceneInfo {
  json?: string; // 场景JSON
}
export interface GroupSceneDetail extends SceneDetail {
  group: RobotGroup; // 机器人组信息
  robots?: Array<RobotInfo>; // 机器人信息
}

export interface SceneData extends Meta2dData {
  robotGroups?: Array<RobotGroup>; // 机器人组信息
  robots?: Array<RobotInfo>; // 机器人信息
}

export interface StandardScene {
  robotGroups?: Array<RobotGroup>; // 机器人组信息
  robots?: Array<RobotInfo>; // 机器人信息
  points?: Array<StandardScenePoint>; // 标准点位信息
  routes?: Array<StandardSceneRoute>; // 标准线路信息
  areas?: Array<StandardSceneArea>; // 标准区域信息
  blocks?: Array<[number, number]>; // 障碍点集合
}
export interface StandardScenePoint {
  id: string;
  name: string;
  desc?: string; // 描述
  x: number;
  y: number;
  type: number; // 点位类型
  robots?: Array<string>; // 绑定机器人id集合
  actions?: Array<string>; // 绑定动作点id集合
  config?: object; // 其它属性配置（可按需增加）
  properties?: unknown; // 附加数据（前端不做任何处理）
}
export interface StandardSceneRoute {
  id: string;
  desc?: string; // 描述
  from: string; // 起点点位id
  to: string; // 终点点位id
  type: 'line' | 'bezier2' | 'bezier3'; // 线路类型
  pass?: number; // 可通行类型
  c1?: { x?: number; y?: number }; // 控制点1
  c2?: { x?: number; y?: number }; // 控制点2
  config?: object; // 其它属性配置（可按需增加）
  properties?: unknown; // 附加数据（前端不做任何处理）
}
export interface StandardSceneArea {
  id: string;
  name: string;
  desc?: string; // 描述
  x: number;
  y: number;
  w: number;
  h: number;
  type: number; // 区域类型
  points?: Array<string>; // 绑定点位id集合
  routes?: Array<string>; // 绑定线路id集合
  config?: object; // 其它属性配置（可按需增加）
  properties?: unknown; // 附加数据（前端不做任何处理）
}
