import BaseEntity from "./BaseEntity";
import { SignalSourceEntity } from "./SignalSourceEntity";
import { StringKeyValueEntity } from "./StringKeyValueEntity";
import { Protocol } from "./WSProtocol";

import window_color_list from "../store/window_color_list.js";

export class MultimediaWindowEntity extends BaseEntity {
  x: number = 0;
  y: number = 0;
  width: number = 0;
  height: number = 0;
  signal_source_table_uuid: string = "";

  volume: number = 80;
  muted: boolean = false;
  paused: boolean = false;
  play_speed: number = 1;
  polling: boolean = false;
  polling_uuid: string = "";
}

export class WindowOpenNotifyEntity extends MultimediaWindowEntity {
  public static get FLAG_REQUEST() {
    return 0;
  }
  public static get FLAG_RESPONSE() {
    return 1;
  }
  public static get FLAG_NOTIFY() {
    return 2;
  }

  /** 是否出现异常,如果是异常,则为 ExceptionEntity */
  has_exception = false;
  /** 0: 请求  1: 响应 */
  flag = WindowOpenNotifyEntity.FLAG_REQUEST;
  /** rpc 消息 ID，默认 0 */
  rpc_id = 0;
  /** 命令 */
  command = Protocol.Commands.kUnKnowCommand;

  window_id: number = 0;

  /** 轮询时的属性,不轮询时无效 */
  polling_title: string = "";
  /** 轮询时的属性,不轮询时无效 */
  polling_window_type: string = "EWindowType::Normal";

  client_color: string = window_color_list.length
    ? window_color_list[Math.round(Math.random() * window_color_list.length)]
    : "blue";
}
