# 00. 프로젝트 컨텍스트 및 복구 (Project Context & Restore Point)

이 파일은 다른 개발 환경이나 새로운 AI 세션에서 프로젝트의 현재 상태를 빠르게 파악하고 작업을 이어가기 위해 작성되었습니다.

## 1. 프로젝트 개요

- **프로젝트명:** Colosseum's Choice
- **플랫폼:** Flutter (Android/iOS/Web/Desktop)
- **장르:** 텍스트 기반의 턴제 RPG + GUI (로그라이크 요소 포함)
- **상태:** 핵심 시스템 구현 완료 및 안정화 (i18n 구조 적용, 애니메이션 동기화 완료)

## 2. 현재 구현된 핵심 기능 (Feature Status)

### A. 게임 흐름 (Game Flow)

1.  **메인 메뉴 (`MainMenuScreen`):** 게임 시작, 이어하기(저장된 데이터 있을 시), 설정 버튼.
2.  **캐릭터 선택 (`CharacterSelectionScreen`):** 'Warrior' 직업 구현 (스탯 확인 후 시작).
3.  **메인 게임 (`MainWrapper`):** 하단 탭 네비게이션 (Battle / Inventory / Settings).
4.  **설정 (`SettingsScreen`):**
    - 적 애니메이션 활성화/비활성화 토글 (`SettingsProvider` 연동).
    - 게임 재시작, 메인 메뉴로 돌아가기 기능.
5.  **반응형 레이아웃 (Responsive UI):**
    - `ResponsiveContainer`를 통해 다양한 화면 크기 대응 (최대 너비/높이 제한).
    - Battle UI: 플레이어(좌하단) vs 적(우상단) 대각선 구도.

### B. 전투 시스템 (`BattleProvider`)

- **턴제 전투:** 플레이어 턴 -> 적 턴.
- **행동 선택:** 공격(Attack) / 방어(Defend).
- **리스크 시스템 (Risk System):**
  - **Safe:** 성공률 100%+, 효율 50%.
  - **Normal:** 성공률 80%+, 효율 100%.
  - **Risky:** 성공률 40%+, 효율 200% (성공 시 강력한 이펙트).
  - **Luck 보정:** `totalLuck` 1당 성공률 +1%.
- **적 인공지능 (Enemy AI & Intent):**
  - **Intent UI:** 적의 다음 행동(공격/방어, 데미지/방어도) 미리 표시.
  - **동기화된 애니메이션:** 적 행동 결정(`_generateEnemyIntent`)은 이전 애니메이션이 완전히 끝난 후 이루어짐.
  - **선제 방어:** 적이 방어 행동을 선택하면 턴 시작 시 **데이터상으로 즉시 방어도가 적용되나, 시각적 애니메이션은 플레이어가 행동을 선택하는 시점에 발동됨.**
- **애니메이션 및 타격감 (Visuals & Impact):**
  - **UI 주도 Impact 처리:** 애니메이션 타격 시점(`onImpact`)에 정확히 데미지가 적용되고 텍스트가 뜸 (완벽한 동기화).
  - **적 돌진:** 적도 공격 시 플레이어 위치로 돌진함 (설정에서 끄기 가능).
  - **이펙트:** 타격 아이콘, 데미지 텍스트(Floating Text, Risky 공격 시 크기 확대), 화면 흔들림(`ShakeWidget`), 폭발(`ExplosionWidget`). **적 방어 시 성공/실패 이펙트 추가.**
- **상태이상:** `Stun`, `Bleed`, `Vulnerable`, `DefenseForbidden`.

### C. 데이터 및 로직 (Architecture)

- **Data-Driven:** `items.json`, `enemies.json`, `players.json`.
- **Logic 분리:**
  - `BattleProvider`: UI 상태 관리 및 이벤트 스트림(`damageStream`, `effectStream`) 발송.
  - `CombatCalculator`: 데미지 공식, 확률 계산, 상태이상 로직 순수 함수화. **공격/방어 액션 타입별 효율 분리.**
  - `BattleLogManager`: 전투 로그 관리.
  - `LootGenerator`: 아이템 생성, 접두사(Prefix) 부여, 랜덤 스탯 로직.
  - `SettingsProvider`: 전역 설정(애니메이션 on/off 등) 관리 및 영구 저장.
- **Soft i18n:** UI 텍스트는 `lib/game/config/app_strings.dart`에서 통합 관리.
- **Config:** `GameConfig`, `BattleConfig`, `ItemConfig` 등 설정 값 중앙화. **BattleConfig의 공격/방어 효율 분리.**

### D. 아이템 및 경제

- **장비:** 무기, 방어구, 방패, 장신구.
- **시스템:**
  - **Rarity:** Common ~ Unique.
  - **Tier:** 라운드 진행도에 따라 상위 티어 아이템 등장.
  - **Prefix:** Rarity에 따라 접두사가 붙으며 스탯이 변형됨 (예: "Sharp Wooden Sword").
- **상점 (`ShopProvider`):** 아이템 구매/판매, 리롤(Reroll), 인벤토리 관리.

### E. 저장 및 진행 (Persistence)

- **자동 저장:** 스테이지 클리어 시 `SaveManager`를 통해 자동 저장.
- **Permadeath:** 패배 시 저장 데이터 삭제 (로그라이크 요소).

## 3. 작업 컨벤션 (Working Conventions)

- **Prompt Driven Development:** `prompt/XX_description.md` 유지. (유사 작업 통합 및 인덱스 정리 권장)
- **i18n Strategy (Soft i18n):** UI에 표시되는 문자열은 하드코딩하지 않고 `lib/game/config/app_strings.dart`의 상수를 사용해야 합니다. (전투 로그 등 동적 문자열 제외)
- **Config Management:** 하드코딩되는 값들은 `config` 폴더 내 파일들(`lib/game/config/` 등)에서 통합 관리할 수 있도록 작성해야 합니다.
- **State Management:** `Provider` (UI 상태) + `Stream` (이벤트성 데이터).
- **Data:** JSON 기반 + `Table` 클래스로 로드.

## 4. 최근 주요 변경 사항 (Change Log)

- **[Refactor] BattleProvider:** `CombatCalculator`, `BattleLogManager`, `LootGenerator` 분리로 코드 다이어트.
- **[Refactor] Animation Sync:** `Future.delayed` 예측 방식을 버리고, UI 애니메이션 콜백(`onImpact`)을 통해 로직을 트리거하는 방식으로 변경하여 타격감 동기화 해결.
- **[Refactor] Settings:** `SettingsProvider` 도입 및 적 애니메이션 토글 기능 추가.
- **[Fix] Bugs:** 아이템 이름 생성 오류 수정, 리워드 팝업 깜빡임 및 중복 생성 수정, 앱 크래시(Null Safety) 수정.
- **[Feature] Interactive Enemy Defense Animation:** 플레이어 행동(버튼 클릭) 시점에 적 방어 애니메이션 및 이펙트(`Icon`/`FAILED` 텍스트)가 발동되도록 구현. (데이터는 턴 시작 시 선적용)
- **[Improvement] Turn Responsiveness:** 적 턴 종료 후 플레이어 턴 활성화까지의 불필요한 딜레이 제거 (`_processMiddleTurn`).
- **[Improvement] Visual Impact:** Risky 공격 및 높은 데미지 시 Floating Damage Text의 크기 확대. Floating Effect/Feedback Text의 위치 조정.
- **[Refactor] Balancing System:** `BattleConfig`에서 공격/방어 효율 상수를 분리하고 `CombatCalculator` 및 관련 로직에 적용하여 밸런싱의 유연성 확보.
- **[Fix] UI Stability:** `CharacterStatusCard`의 Intent UI 텍스트 길이에 따른 레이아웃 흔들림 방지 (`FittedBox`). `BattleScreen` 내 `Stack` 위젯 구성 문법 오류 수정.

## 5. 다음 단계 (Next Steps)

1.  **밸런싱:** 현재 몬스터 및 아이템 스탯 미세 조정.
2.  **콘텐츠 확장:** 더 많은 아이템, 적, 스킬 패턴 추가.
3.  **튜토리얼:** 신규 유저를 위한 가이드 추가.
