// 全部 30 个角色，名字 = public/werewolf/roles/{name}.JPG 的 stem
export const ALL_ROLES = [
  '企鹅', '厚皮狼', '大公鸡', '女巫', '守卫', '守夜人', '小女孩', '小绵羊',
  '憎恶猎人', '暴狼', '月夜祭司', '机械狼', '村民', '炸弹师', '熊', '爱神',
  '狼人', '狼美人', '猎人', '白狼王', '白痴', '盗宝大师', '石像鬼', '禁锢之影',
  '织梦人', '老酒鬼', '通灵师', '野孩子', '预言家', '骑士',
] as const

export type RoleName = (typeof ALL_ROLES)[number]

// 默认预设。从 partiverse backend/activities/werewolf.py 同步。
export const DEFAULT_PRESETS: Record<number, Record<string, number>> = {
  8: { 狼人: 2, 守卫: 2, 女巫: 1, 猎人: 1, 骑士: 1, 白狼王: 1 },
  9: { 狼人: 3, 守卫: 2, 女巫: 1, 猎人: 1, 骑士: 1, 白狼王: 1 },
  10: { 狼人: 3, 守卫: 3, 女巫: 1, 猎人: 1, 骑士: 1, 白狼王: 1 },
  12: { 狼人: 4, 守卫: 3, 女巫: 1, 猎人: 1, 骑士: 1, 白狼王: 1, 村民: 1 },
}

// preset 里出现过的角色排前面（频次降序，再按名字）
function presetFrequency(): Record<string, number> {
  const counts: Record<string, number> = {}
  for (const preset of Object.values(DEFAULT_PRESETS)) {
    for (const role of Object.keys(preset)) {
      counts[role] = (counts[role] || 0) + 1
    }
  }
  return counts
}

export function sortedRoles(): RoleName[] {
  const counts = presetFrequency()
  return [...ALL_ROLES].sort((a, b) => {
    const da = counts[a] || 0
    const db = counts[b] || 0
    if (da !== db) return db - da
    return a.localeCompare(b, 'zh-Hans-CN')
  })
}

export function roleImageUrl(role: string): string {
  return `/werewolf/roles/${encodeURIComponent(role)}.JPG`
}

export function backImageUrl(): string {
  return '/werewolf/back.jpg'
}
