# 26. 데미지 타입 리팩토링 및 색상 지정 (Refactor Damage Types & Colors)

## 1. 배경 (Background)

현재 데미지 텍스트의 색상이 `BattleProvider` 내에서 하드코딩되어 있거나 `Color` 객체를 직접 전달하는 방식으로 구현되어 있습니다. 이를 `DamageType` Enum을 통해 구조화하고, 타입별로 색상을 중앙에서 관리하도록 개선하고자 합니다.

## 2. 목표 (Objective)

- `DamageType` Enum을 정의하여 데미지의 종류(일반, 출혈, 취약 등)를 구분합니다.
- `DamageEvent`가 `Color` 대신 `DamageType`을 가지도록 수정합니다.
- UI(`BattleScreen`)에서 `DamageType`에 따라 미리 정의된 색상을 출력하도록 합니다.
- **색상 변경:**
  - 기본(Normal) 데미지: **회색 (Grey)**
  - 출혈(Bleed) 데미지: **빨간색 (Red)**
  - (기타) 취약(Vulnerable): **주황색 (Orange)** (기존 유지/변경 고려)

## 3. 작업 상세 (Implementation Details)

### A. Enum 정의 (`lib/game/enums.dart`)

- `DamageType` Enum 추가:
  ```dart
  enum DamageType {
    normal,
    bleed,
    vulnerable,
    // critical, // 추후 확장 가능
  }
  ```

### B. 모델 수정 (`lib/game/model/damage_event.dart`)

- `DamageEvent` 클래스 수정:
  - `final Color color` 필드 삭제.
  - `final DamageType type` 필드 추가.
  - (선택) `Color get color` getter를 추가하여 타입별 색상 반환 로직 구현 (또는 UI에서 처리).
    - Normal: `Colors.grey`
    - Bleed: `Colors.red`
    - Vulnerable: `Colors.orange`

### C. 로직 수정 (`lib/providers/battle_provider.dart`)

- `_damageEventController` 및 `_applyDamage` 메서드 수정.
- 데미지 발생 시점에 적절한 `DamageType`을 전달하도록 변경.
  - 일반 공격: `DamageType.normal`
  - 출혈 데미지: `DamageType.bleed`
  - 취약 상태 공격: `DamageType.vulnerable`

### D. UI 수정 (`lib/screens/battle_screen.dart`)

- `_addFloatingDamageText` 메서드에서 `event.color` 대신 `event.type`에 따른 색상을 사용하도록 수정.

## 4. 기대 효과

- 데미지 색상 정책을 한곳에서 관리하여 일관성 유지.
- 코드 가독성 향상 및 하드코딩 제거.
- 추후 새로운 데미지 타입(독, 화상 등) 추가 시 확장이 용이함.
