update : gameover
This commit is contained in:
parent
37a634643e
commit
0dccab9eec
|
|
@ -13,6 +13,7 @@ import '../widgets/battle/character_status_card.dart';
|
|||
import '../widgets/battle/battle_log_overlay.dart';
|
||||
import '../widgets/battle/floating_battle_texts.dart';
|
||||
import '../widgets/battle/stage_ui.dart';
|
||||
import 'main_menu_screen.dart';
|
||||
|
||||
class BattleScreen extends StatefulWidget {
|
||||
const BattleScreen({super.key});
|
||||
|
|
@ -527,6 +528,50 @@ class _BattleScreenState extends State<BattleScreen> {
|
|||
..._floatingDamageTexts.map((e) => e.widget),
|
||||
..._floatingEffects.map((e) => e.widget),
|
||||
..._floatingFeedbackTexts.map((e) => e.widget),
|
||||
|
||||
// Game Over Overlay
|
||||
if (battleProvider.player.isDead)
|
||||
Container(
|
||||
color: Colors.black87,
|
||||
child: Center(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
const Text(
|
||||
"DEFEAT",
|
||||
style: TextStyle(
|
||||
color: Colors.red,
|
||||
fontSize: 48,
|
||||
fontWeight: FontWeight.bold,
|
||||
letterSpacing: 4.0,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 32),
|
||||
ElevatedButton(
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: Colors.grey[800],
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 32,
|
||||
vertical: 16,
|
||||
),
|
||||
),
|
||||
onPressed: () {
|
||||
Navigator.of(context).pushAndRemoveUntil(
|
||||
MaterialPageRoute(
|
||||
builder: (context) => const MainMenuScreen(),
|
||||
),
|
||||
(route) => false,
|
||||
);
|
||||
},
|
||||
child: const Text(
|
||||
"Return to Main Menu",
|
||||
style: TextStyle(color: Colors.white, fontSize: 18),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
# 게임 오버 화면 구현 (Game Over Screen)
|
||||
|
||||
## 목표
|
||||
|
||||
플레이어 사망 시 게임 진행을 중단하고, 패배를 알리는 화면과 함께 메인 메뉴로 돌아갈 수 있는 기능을 제공합니다.
|
||||
|
||||
## 요구사항
|
||||
|
||||
1. **입력 차단:** 플레이어 사망 시 공격/방어 등 모든 전투 조작 버튼을 비활성화합니다.
|
||||
2. **패배 화면:**
|
||||
- 화면 중앙에 "Defeat" 텍스트 또는 이미지 표시.
|
||||
- "Return to Main Menu" 버튼 표시.
|
||||
3. **메인 메뉴 이동:** 버튼 클릭 시 현재 게임 상태를 초기화하고 메인 메뉴(`MainMenuScreen`)로 이동합니다.
|
||||
|
||||
## 구현 계획
|
||||
|
||||
### 1. UI 변경 (`lib/screens/battle_screen.dart`)
|
||||
|
||||
- `BattleProvider`의 `player.isDead` 상태를 감지하여 오버레이를 표시합니다.
|
||||
- 기존 버튼(`FloatingActionButton` 등)의 `onPressed`를 `null`로 처리하거나 화면을 덮는 오버레이로 입력을 막습니다.
|
||||
|
||||
### 2. 로직 변경 (`lib/providers/battle_provider.dart`)
|
||||
|
||||
- (필요 시) 게임 오버 상태를 명확히 관리하는 플래그 추가 또는 기존 `player.isDead` 활용.
|
||||
- 메인 메뉴로 돌아갈 때 상태를 초기화하는 메서드(`resetGame` 등) 확인.
|
||||
|
||||
## 결과
|
||||
|
||||
플레이어 체력이 0이 되면 전투가 멈추고 게임 오버 화면이 출력되며, 버튼을 통해 타이틀 화면으로 돌아갈 수 있습니다.
|
||||
Loading…
Reference in New Issue