export type PortraitKey = 'liuBei' | 'guanYu' | 'zhangFei';

export type StoryPage = {
  id: string;
  chapter: string;
  background: string;
  speaker?: string;
  portrait?: PortraitKey;
  bgm?: string;
  text: string;
};

export type UnitData = {
  id: string;
  name: string;
  faction: 'ally' | 'enemy';
  className: string;
  hp: number;
  maxHp: number;
  attack: number;
  move: number;
  x: number;
  y: number;
};

export type TerrainType = 'plain' | 'forest' | 'hill' | 'fort';

export type BattleMap = {
  width: number;
  height: number;
  terrain: TerrainType[][];
};

export const prologuePages: StoryPage[] = [
  {
    id: 'yellow-turban-chaos',
    bgm: 'story-dark',
    chapter: '난세의 시작',
    background: 'story-chaos',
    text: '중평 원년, 황건의 깃발이 각지에서 일어났다. 관군은 흩어지고, 마을마다 피난 행렬이 이어졌다.'
  },
  {
    id: 'liu-bei-resolve',
    bgm: 'story-dark',
    chapter: '탁현의 방',
    background: 'story-liu-bei',
    speaker: '유비',
    portrait: 'liuBei',
    text: '한실의 백성이 이토록 고통받는데, 어찌 초가집 그늘에 숨어 있을 수 있겠는가.'
  },
  {
    id: 'zhang-fei-joins',
    bgm: 'story-dark',
    chapter: '뜻이 모이다',
    background: 'story-three-heroes',
    speaker: '장비',
    portrait: 'zhangFei',
    text: '좋소! 나라를 바로잡고 백성을 구한다면, 내 재산도 이 목숨도 아깝지 않소.'
  },
  {
    id: 'guan-yu-joins',
    bgm: 'story-dark',
    chapter: '뜻이 모이다',
    background: 'story-three-heroes',
    speaker: '관우',
    portrait: 'guanYu',
    text: '의로운 뜻을 품은 이와 길을 함께한다면, 천 리라도 멀다 하지 않겠습니다.'
  },
  {
    id: 'oath-narration',
    bgm: 'oath-theme',
    chapter: '도원결의',
    background: 'title-taoyuan',
    text: '복숭아꽃이 흩날리는 동산에서 세 사람은 하늘과 땅에 고했다.'
  },
  {
    id: 'oath-liu-bei',
    bgm: 'oath-theme',
    chapter: '도원결의',
    background: 'title-taoyuan',
    speaker: '유비',
    portrait: 'liuBei',
    text: '우리는 태어난 날은 달라도, 오늘부터 뜻을 함께한다. 백성을 구하고 한실을 돕는 길에서 물러서지 않겠다.'
  },
  {
    id: 'oath-brothers',
    bgm: 'oath-theme',
    chapter: '도원결의',
    background: 'title-taoyuan',
    speaker: '관우',
    portrait: 'guanYu',
    text: '의를 저버리지 않고, 형제를 저버리지 않겠습니다.'
  },
  {
    id: 'militia-rises',
    bgm: 'militia-theme',
    chapter: '의용군 모집',
    background: 'story-militia',
    speaker: '장비',
    portrait: 'zhangFei',
    text: '창을 들 사람은 앞으로 나오시오! 오늘 모인 이름 없는 무리가 내일의 방패가 될 것이오!'
  },
  {
    id: 'first-sortie',
    bgm: 'battle-prep',
    chapter: '첫 출진',
    background: 'story-sortie',
    speaker: '유비',
    portrait: 'liuBei',
    text: '우리는 아직 작다. 그러나 오늘 한 마을을 지켜낸다면, 그 뜻은 천하로 번져갈 것이다.'
  },
  {
    id: 'battle-briefing',
    bgm: 'battle-prep',
    chapter: '황건적 토벌',
    background: 'story-sortie',
    text: '의용군은 마을 어귀로 향했다. 첫 싸움은 곧 시작된다.'
  }
];

export const firstBattleMap: BattleMap = {
  width: 12,
  height: 12,
  terrain: [
    ['plain', 'plain', 'forest', 'forest', 'plain', 'plain', 'plain', 'hill', 'hill', 'plain', 'plain', 'plain'],
    ['plain', 'forest', 'forest', 'plain', 'plain', 'plain', 'plain', 'plain', 'hill', 'plain', 'plain', 'plain'],
    ['plain', 'forest', 'plain', 'plain', 'plain', 'plain', 'forest', 'plain', 'plain', 'plain', 'plain', 'plain'],
    ['plain', 'plain', 'plain', 'hill', 'hill', 'plain', 'forest', 'forest', 'plain', 'plain', 'plain', 'plain'],
    ['plain', 'plain', 'plain', 'hill', 'plain', 'plain', 'plain', 'forest', 'plain', 'plain', 'plain', 'plain'],
    ['plain', 'plain', 'plain', 'plain', 'plain', 'fort', 'plain', 'plain', 'plain', 'plain', 'forest', 'forest'],
    ['plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'forest', 'plain'],
    ['forest', 'forest', 'plain', 'plain', 'plain', 'plain', 'plain', 'hill', 'hill', 'plain', 'plain', 'plain'],
    ['forest', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'hill', 'plain', 'plain', 'plain', 'plain'],
    ['plain', 'plain', 'plain', 'forest', 'forest', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain'],
    ['plain', 'plain', 'plain', 'plain', 'forest', 'plain', 'plain', 'plain', 'plain', 'forest', 'forest', 'plain'],
    ['plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'plain', 'forest', 'plain']
  ]
};

export const firstBattleUnits: UnitData[] = [
  { id: 'liu-bei', name: '유비', faction: 'ally', className: '의병장', hp: 32, maxHp: 32, attack: 9, move: 4, x: 1, y: 9 },
  { id: 'guan-yu', name: '관우', faction: 'ally', className: '보병', hp: 30, maxHp: 30, attack: 10, move: 3, x: 2, y: 10 },
  { id: 'zhang-fei', name: '장비', faction: 'ally', className: '창병', hp: 30, maxHp: 30, attack: 10, move: 3, x: 1, y: 10 },
  { id: 'rebel-a', name: '황건병', faction: 'enemy', className: '도적', hp: 20, maxHp: 20, attack: 6, move: 3, x: 8, y: 2 },
  { id: 'rebel-b', name: '황건병', faction: 'enemy', className: '도적', hp: 20, maxHp: 20, attack: 6, move: 3, x: 9, y: 3 },
  { id: 'rebel-c', name: '황건궁병', faction: 'enemy', className: '궁병', hp: 18, maxHp: 18, attack: 7, move: 3, x: 10, y: 2 },
  { id: 'rebel-leader', name: '두령 한석', faction: 'enemy', className: '두령', hp: 30, maxHp: 30, attack: 9, move: 3, x: 10, y: 4 }
];
