/**
 * 房间信息请求参数
 * @param devId 设备ID
 */
export interface RoomInfoParams {
  devId: string // 设备ID
}

/**
 * 家具类型
 * @description: 床、沙发、凳子、桌子、水槽、马桶、橱柜、雷达等
 */
export type FurnitureType =
  | 'bed'
  | 'sofa'
  | 'stool'
  | 'table'
  | 'sink'
  | 'closestool'
  | 'cabinet'
  | 'radar'

/**
 * 家具信息
 */
export type Furniture = {
  name: string // 名称
  type: FurnitureType // 类型
  width: number // 宽度
  length: number // 长度
  top: number // 距离顶点相对距离
  left: number // 距离左侧边相对距离
  rotate: 0 | 90 | 180 | 270 // 旋转角度： 0°,90°,180°,270°
  x: number // 	距离雷达的X距离
  y: number // 距离雷达的Y距离
}

// 类型继承自Furniture
export interface SubRegions {
  startXx: number
  stopXx: number
  startYy: number
  stopYy: number
  startZz: number
  stopZz: number
  isLowSnr: number
  isDoor: number
  presenceEnterDuration: number
  presenceExitDuration: number
  trackPresence: number // 是否开启区域跟踪存在 0-否,1-是
  excludeFalling: number // 是否屏蔽区域跌倒检测 0-否,1-是
  isBed?: boolean
  id?: string
  isTracking?: boolean
  isFalling?: boolean
}

export interface FurnitureItem {
  name: string // 家具名称
  type: string // 家具类型
  width: number // 家具宽度
  length: number // 家具长度
  rotate: number // 家具旋转角度
  x: number // 家具距离雷达的x坐标
  y: number // 家具距离雷达的y坐标
  left: number // 家具距离左侧边相对距离
  top: number // 家具距离顶点相对距离
}

export interface LocalFurnitureItem extends FurnitureItem {
  nanoid: string // 家具唯一标识
  left: number // 家具距离左侧边相对距离
  top: number // 家具距离顶点相对距离
}

export interface SubRegionItem {
  startXx: number // 子区域x坐标起始点
  stopXx: number // 子区域x坐标结束点
  startYy: number // 子区域y坐标起始点
  stopYy: number // 子区域y坐标结束点
  startZz: number // 子区域z坐标起始点
  stopZz: number // 子区域z坐标结束点
  isLowSnr: number // 是否为床  0-不是,1-是
  isDoor: number // 是否是门 0-否,1-是 默认0
  presenceEnterDuration: number // 	人员进入时间 默认3
  presenceExitDuration: number // 人员离开时间 默认3
  trackPresence: number // 是否开启区域跟踪存在 0-否,1-是
  excludeFalling: number // 是否屏蔽区域跌倒检测 0-否,1-是
}

export interface LocalSubRegionItem extends SubRegionItem {
  nanoid: string // 子区域唯一标识
  isDraging: boolean // 正在拖动
  isResizing: boolean // 正在调整大小
  isActive: boolean // 是否选中
  isTracking: boolean // 是否开启区域跟踪  0-否,1-是 对应 trackPresence 字段
  isFalling: boolean // 是否屏蔽区域跌倒检测  0-否,1-是 对应 excludeFalling 字段
  isBed: boolean // 是否是床 本地判断使用
  pixelX: number // 子区域在画布中的x坐标
  pixelY: number // 子区域在画布中的y坐标
  pixelWidth: number // 子区域在画布中的宽度
  pixelHeight: number // 子区域在画布中的高度
}

export interface RoomData {
  roomId?: string // 房间ID
  devId?: number | string // 设备ID
  subRegions?: SubRegionItem[] | null // 屏蔽子区域信息
  furnitures?: FurnitureItem[] | null // 家具信息
}
