export const COMPONENT_STATUS_MAP = {
  NOT_START: 'NOT_START',
  ING: 'ING',
  END: 'END',
};
export const COMPONENT_STATUS_TEXT_MAP = {
  [COMPONENT_STATUS_MAP.NOT_START]: '未开始',
  [COMPONENT_STATUS_MAP.ING]: '比赛中',
  [COMPONENT_STATUS_MAP.END]: '已结束',
};

export const COMPONENT_STATUS_CLASS_MAP = {
  [COMPONENT_STATUS_MAP.NOT_START]: 'press_battle-tag-start',
  [COMPONENT_STATUS_MAP.ING]: 'press_battle-tag-in-game',
  [COMPONENT_STATUS_MAP.END]: 'press_battle-tag-end',
};


export const CARD_RANK_SCORE_PROPS = {
  gameRank: {
    type: [String, Number],
    default: '',
  },
};

export const SPECIAL_TEAM_ID_MAP = {
  dd: 'dd',
  kk: 'kk',
  dnp: 'dnp',
} as const;


export const SPECIAL_TEAM_NAME_MAP = {
  [SPECIAL_TEAM_ID_MAP.dd]: '待定',
  [SPECIAL_TEAM_ID_MAP.kk]: '轮空',
  [SPECIAL_TEAM_ID_MAP.dnp]: '轮空',
};


export const SPECIAL_TEAM_AVATAR = 'https://image-1251917893.file.myqcloud.com/tip-project/pubg/pubg-match/teamate-default-avatar.png';


export const CARD_TOP_INFO_PROPS = {
  showRoleInfo: {
    type: Boolean,
    default: false,
  },
  roleName: {
    type: String,
    default: '',
  },
  device: {
    type: String,
    default: '',
  },
  roleId: {
    type: String,
    default: '',
  },
  childName: {
    type: String,
    default: '',
  },
  childType: {
    type: String,
    default: '',
  },
};


export const CARD_BATTLE_LIST_PROPS = {
  battleList: {
    type: Array,
    default: () => ([]),
  },
  curShowingBattleIndex: {
    type: Number,
    default: 0,
  },
  curGoingBattleIndex: {
    type: Number,
    default: 0,
  },
};

export const CARD_SIGN_UP_PROPS = {
  signUpTitle: {
    type: String,
    default: '距报名截止',
  },
  signUpCountdown: {
    type: Number,
    default: 0,
  },
};

export const CARD_STATUS_MAP = {
  NOT_SIGN_UP: 'NOT_SIGN_UP', // 未报名
  PLAYING_AND_CAN_SIGN_UP: 'PLAYING_AND_CAN_SIGN_UP', // 比赛进行中，但仍可报名
  PLAYING_AND_NOT_SATISFIED: 'PLAYING_AND_NOT_SATISFIED', // 比赛进行中，报名后报名人数不足

  SATISFIED_AND_CAN_INVITE: 'SATISFIED_AND_CAN_INVITE', // 报名人数满足，但仍可邀请队员（第一局未开赛）
  SATISFIED_AND_CAN_NOT_INVITE: 'SATISFIED_AND_CAN_NOT_INVITE', // 报名人数满足，不可邀请队员（第一局已开赛）

  GAME_WILL_START: 'GAME_WILL_START', // 待开赛
  BATTLE_WILL_START: 'BATTLE_WILL_START', // 比赛即将开始，或者下一对局即将开始
  BATTLE_STARTED: 'BATTLE_STARTED', // 显示“去比赛”

  BATTLE_PLAYING_JOINED: 'BATTLE_PLAYING_JOINED', // 比赛进行中，出战，显示“请等待本场比赛结束”
  BATTLE_PLAYING_NOT_JOINED: 'BATTLE_PLAYING_NOT_JOINED', // 比赛进行中，未出战，显示“您本场未出战”

  RESULT_WAITING: 'RESULT_WAITING', // 比赛结束，等待结果
  RESULT_WIN: 'RESULT_WIN', // 晋级
  RESULT_FAIL: 'RESULT_FAIL', // 淘汰
  RESULT_SHOW_RANK: 'RESULT_SHOW_RANK', // 显示名次，比如 冠军、亚军、第12名


  KNOCK_OUT_SIGNED_UP: 'KNOCK_OUT_SIGNED_UP', // 单败淘汰已报名，新增
  KNOCK_OUT_OPPONENT: 'KNOCK_OUT_OPPONENT',  // 单败淘汰匹配成功，等待进房，显示对手，新增
  KNOCK_OUT_RESULT: 'KNOCK_OUT_RESULT', // 单败淘汰比赛结束，显示结果，新增

  // 匹配循环赛，匹配相关阶段，包括未匹配、去匹配、匹配成功、匹配失败等
  // 只要没结果，就显示这个
  CYCLE_MATCH: 'CYCLE_MATCH',
} as const;

export const CARD_ICON_MAP = {
  CHECK_OPPONENTS: 'CHECK_OPPONENTS',
  CHECK_PLAYING_LIST: 'CHECK_PLAYING_LIST',
  CHECK_RANK_LIST: 'CHECK_RANK_LIST',
};

export const CARD_ICON_FONT_MAP = {
  [CARD_ICON_MAP.CHECK_OPPONENTS]: 'icon-team-member',
  [CARD_ICON_MAP.CHECK_PLAYING_LIST]: 'icon-team-member',
  [CARD_ICON_MAP.CHECK_RANK_LIST]: 'icon-real-time',
} as const;

export const CARD_ICON_TEXT_MAP = {
  [CARD_ICON_MAP.CHECK_OPPONENTS]: '查看对手',
  [CARD_ICON_MAP.CHECK_PLAYING_LIST]: '出战名单',
  [CARD_ICON_MAP.CHECK_RANK_LIST]: '查看榜单',
} as const;

export const CARD_BUTTON_CLASS = {
  PRIMARY: 'press-card__button--primary',
  INVALID: 'press-card__button--invalid',
};

export const CARD_BUTTON_MAP = {
  LAUNCH_GAME: '进入游戏',
  LAUNCH_GAME_TIP: '倒计时结束前进入游戏，超时无法参赛',

  CAN_NOT_BATTLE: '未出战',

  JUMP_TO_ROOM: '进入比赛',
  JUMP_TO_ROOM_TIP: '进入备战房',

  GROUPING: '去比赛',
  TO_GROUPING: '去对局',
  GROUPING_TIP: '等待分组建房中',

  WAIT_START: '待开赛',
  WAIT_VIRTUAL_START_TIP: '开赛前半小时进入备战房准备',

  BATTLED_ENDED: '对局已结束',
  BATTLE_PLAYING: '比赛进行中',

  WAIT_MATCHING: '待匹配',
  START_MATCHING: '开始匹配',
  MATCHING: '匹配中',
  MATCHING_END: '匹配已结束',
  CONTINUE_MATCHING: '继续匹配',

  CHECK_DATA: '查看详细数据',
  NOT_ENTER_GAME: '您未出战',

  BATTLE_WILL_START: '比赛即将开始',
  INVITE_MEMBER: '邀请队友',
} as const;

const PLAYING_CUSTOM = {
  leftIconFont: '',
  leftIconText: '',
  rightIconFont: '',
  rightIconText: '',
};
const RESULT_CUSTOM = {
  leftIconFont: '',
  leftIconText: '',
  rightIconFont: '',
  rightIconText: '',
};

export const DEFAULT_CARD_CUSTOM = {
  GAME_WILL_START: {
    mainButton: '待开赛',
    mainButtonClass: CARD_BUTTON_CLASS.INVALID,
    buttonTips: '',

    leftIconFont: '',
    leftIconText: '',
    rightIconFont: '',
    rightIconText: '',
  },
  BATTLE_WILL_START: {
    mainButton: '待开赛',
    mainButtonClass: CARD_BUTTON_CLASS.INVALID,
    buttonTips: '',

    leftIconFont: '',
    leftIconText: '',
    rightIconFont: '',
    rightIconText: '',
  },
  BATTLE_STARTED: {
    mainButton: '进入游戏',
    buttonTips: '倒计时结束前进入游戏，超时无法参赛',

    leftIconFont: '',
    leftIconText: '',
    rightIconFont: '',
    rightIconText: '',
  },

  BATTLE_PLAYING_JOINED: {
    ...PLAYING_CUSTOM,
  },
  BATTLE_PLAYING_NOT_JOINED: {
    ...PLAYING_CUSTOM,
  },

  RESULT_WAITING: {
    ...RESULT_CUSTOM,
  },
  RESULT_WIN: {
    ...RESULT_CUSTOM,
  },
  RESULT_FAIL: {
    ...RESULT_CUSTOM,
  },
  RESULT_SHOW_RANK: {
    ...RESULT_CUSTOM,
  },
};

export function pardZero(num: string | number) {
  const str = `${num}`;
  if (str.length < 2) {
    return `0${str}`;
  }
  return str;
}


export const SCHE_CARD_BUTTON_CODES = {
  WATCH_LIVE: 'WATCH',
  WATCH_VIDEO: 'WATCH_VIDEO',
  ORDER_SCHE: 'ORDER_SCHE',
  ORDER_SCHE_CANCEL: 'ORDER_SCHE_CANCEL',
};


export const SCHE_CARD_BUTTON_CLASSES = {
  WATCH_LIVE: 'primary-btn',
  WATCH_VIDEO: 'secondary-btn',
  ORDER_SCHE: 'border-btn',
  ORDER_SCHE_CANCEL: 'primary-btn',
};


export enum MatchingStatus {
  UNKNOWN  = 0,  // 未使用
  UN_JOIN  = 1,  // 未加入匹配
  ON_GOING = 2,  // 匹配中
  FAILED  = 3,  // 匹配失败可重新匹配
  SUCCESS = 4,  // 匹配成功
}
