From a29dc50c4c2ae272659c43b71a9ec737c7b9cce9 Mon Sep 17 00:00:00 2001 From: Horoli Date: Wed, 3 Dec 2025 18:28:23 +0900 Subject: [PATCH] update --- prompt/00_project_context_restore.md | 21 ++++++++++- prompt/32_enemy_equipment_system.md | 55 ++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 prompt/32_enemy_equipment_system.md diff --git a/prompt/00_project_context_restore.md b/prompt/00_project_context_restore.md index 1073f3a..4cd76e6 100644 --- a/prompt/00_project_context_restore.md +++ b/prompt/00_project_context_restore.md @@ -7,7 +7,7 @@ - **프로젝트명:** Colosseum's Choice - **플랫폼:** Flutter (Android/iOS/Web/Desktop) - **장르:** 텍스트 기반의 턴제 RPG + GUI (로그라이크 요소 포함) -- **상태:** 프로토타입 단계 (전투 시각화, 데이터 주도 시스템 구현 완료) +- **상태:** 프로토타입 단계 (전투 시각화, 데이터 주도 시스템, 반응형 UI 구현 완료) ## 2. 현재 구현된 핵심 기능 (Feature Status) @@ -16,6 +16,9 @@ 1. **메인 메뉴 (`MainMenuScreen`):** 게임 시작 버튼. 2. **캐릭터 선택 (`CharacterSelectionScreen`):** 'Warrior' 직업 구현. 3. **메인 게임 (`MainWrapper`):** 하단 탭 네비게이션 (Battle / Inventory). +4. **반응형 레이아웃 (Responsive UI):** + - `ResponsiveContainer` 위젯을 통해 최대 너비(600px) 및 높이(1000px) 제한. + - 웹/태블릿 환경에서도 모바일 앱처럼 중앙 정렬된 화면 제공. ### B. 전투 시스템 (`BattleProvider`) @@ -38,8 +41,13 @@ ### D. 아이템 및 경제 (`Item`, `Inventory`) - **장비:** 무기, 방어구, 방패, 장신구. +- **아이콘 및 색상 (`ItemUtils`):** + - 무기: 빨강 삼각형 (`Icons.change_history`) + - 방패: 파랑 방패 (`Icons.shield`) + - 갑옷: 파랑 옷 (`Icons.checkroom`) + - 장신구: 보라 다이아몬드 (`Icons.diamond`) - **가격:** JSON 고정 가격 사용. 판매 시 60% (`GameMath.floor`) 획득. -- **이미지:** `items.json`, `enemies.json`에 이미지 경로 필드 포함. +- **인벤토리:** 장착 슬롯 및 가방(Bag) 그리드 UI 구현. ### E. 스테이지 시스템 (`StageModel`) @@ -52,6 +60,8 @@ - **Core Logic:** 상태 관리, 전투 루프. - **Streams:** `damageStream`, `effectStream`을 통해 UI(`BattleScreen`)에 비동기 이벤트 전달. - **`lib/game/enums.dart`:** 프로젝트 전반의 Enum 통합 관리 (`ActionType`, `RiskLevel`, `StageType` 등). +- **`lib/utils/item_utils.dart`:** 아이템 타입별 아이콘 및 색상 로직 중앙화. +- **`lib/widgets/responsive_container.dart`:** 반응형 레이아웃 컨테이너. - **`lib/game/model/`:** - `damage_event.dart`, `effect_event.dart`: 이벤트 모델. - `entity.dart`: `Character` (Player/Enemy). @@ -71,6 +81,13 @@ 2. **이미지 리소스 적용:** JSON 경로에 맞는 실제 이미지 파일 추가 및 UI 표시. 3. **밸런싱 및 콘텐츠 확장:** 아이템/적 데이터 추가 및 밸런스 조정. +## 6. 장기 목표 (Future Roadmap / TODO) + +- [ ] **Google OAuth 로그인 및 계정 연동:** + - Firebase Auth 등을 활용한 구글 로그인 구현. + - Firestore 또는 Realtime Database에 유저 계정 정보(진행 상황, 재화 등) 저장 및 불러오기 기능 추가. + - _Note: 이 기능은 게임의 핵심 로직이 안정화된 후, 완전 나중에 진행할 예정입니다._ + --- **이 프롬프트를 읽은 AI 에이전트는 위 내용을 바탕으로 즉시 개발을 이어가십시오.** diff --git a/prompt/32_enemy_equipment_system.md b/prompt/32_enemy_equipment_system.md new file mode 100644 index 0000000..4911c17 --- /dev/null +++ b/prompt/32_enemy_equipment_system.md @@ -0,0 +1,55 @@ +# 32. 적 장비 시스템 (Enemy Equipment System) + +## 1. 배경 (Background) + +현재 플레이어는 장비를 통해 스탯 보너스와 특수 효과(출혈, 스턴 등)를 얻습니다. 적(Enemy) 또한 동일한 `Character` 클래스를 사용하므로, 적에게도 장비를 부여하여 다양한 전투 패턴과 난이도를 구현하고자 합니다. + +## 2. 목표 (Objective) + +- **적 데이터 구조 변경:** `enemies.json`에 `equipment` 필드 추가. +- **적 생성 로직 변경:** `EnemyTemplate`에서 적 생성 시, 정의된 장비 아이템을 인벤토리에 추가하고 장착. +- **전투 로직 확인:** 적이 공격할 때 장착된 아이템의 효과(상태이상 등)가 플레이어에게 적용되는지 확인. + +## 3. 작업 상세 (Implementation Details) + +### A. 데이터 파일 수정 (`assets/data/enemies.json`) + +- 적 정의에 `equipment` 필드(List - Item ID) 추가. +- 예시: + ```json + { + "name": "Goblin", + "baseHp": 20, + "baseAtk": 5, + "baseDefense": 5, + "image": "assets/images/enemies/goblin.png", + "equipment": ["dagger_001"] // Dagger for bleed effect + } + ``` + +### B. `lib/game/data/enemy_table.dart` 수정 + +- `EnemyTemplate` 클래스에 `List equipmentIds` 필드 추가. +- `fromJson` 메서드에서 `equipment` 필드 파싱. +- `createCharacter` 메서드 수정: + - `ItemTable.get(id)`를 사용하여 아이템 인스턴스 생성. + - 생성된 아이템을 적의 인벤토리에 추가(`addToInventory`)하고 장착(`equip`). + - _Note: `ItemTable`에 ID로 아이템을 찾는 기능이 없다면 추가 필요._ + +### C. `lib/game/data/item_table.dart` 확인 및 수정 + +- 아이템을 ID로 조회하는 기능(`getItem(String id)`)이 있는지 확인하고, 없다면 구현. +- 현재 `items.json`에는 ID 필드가 명시적으로 없을 수 있으므로, `id` 필드를 추가하거나 기존 `name`을 ID로 사용할지 결정 필요 (ID 필드 추가 권장). + +### D. `lib/providers/battle_provider.dart` 검증 + +- `_tryApplyStatusEffects` 메서드가 `attacker.equipment`를 순회하므로, 적이 공격할 때도 로직이 정상 동작하는지 확인. +- 별도의 코드 수정은 필요 없을 것으로 예상되나, 테스트를 통해 검증. + +## 4. 검증 (Verification) + +- **데이터 로드 테스트:** 앱 실행 시 `enemies.json` 파싱 에러가 없는지 확인. +- **전투 테스트:** + - 특정 장비(예: 출혈 단검)를 가진 적(예: 고블린)과 전투. + - 적의 공격 성공 시, 플레이어에게 출혈(Bleed) 효과가 적용되는지 로그 및 UI로 확인. + - 적 정보 창(구현되어 있다면) 또는 로그를 통해 적이 장비를 착용하고 있는지 확인.