feat(debug): 모바일 레이아웃에 치트 기능 추가

- MobileCarouselLayout에 치트 버튼 추가
- GameSessionController에 치트 활성화 상태 관리 추가
- ProgressLoop/ProgressService에 치트 메서드 추가
This commit is contained in:
JiWoong Sul
2025-12-31 18:14:31 +09:00
parent a990eb0038
commit 9b668d80a4
5 changed files with 144 additions and 5 deletions

View File

@@ -46,6 +46,10 @@ class MobileCarouselLayout extends StatefulWidget {
this.onSfxVolumeChange,
this.onShowStatistics,
this.onShowHelp,
this.cheatsEnabled = false,
this.onCheatTask,
this.onCheatQuest,
this.onCheatPlot,
});
final GameState state;
@@ -81,6 +85,18 @@ class MobileCarouselLayout extends StatefulWidget {
/// 도움말 표시 콜백
final VoidCallback? onShowHelp;
/// 치트 모드 활성화 여부
final bool cheatsEnabled;
/// 치트: 태스크 완료
final VoidCallback? onCheatTask;
/// 치트: 퀘스트 완료
final VoidCallback? onCheatQuest;
/// 치트: 액트(플롯) 완료
final VoidCallback? onCheatPlot;
@override
State<MobileCarouselLayout> createState() => _MobileCarouselLayoutState();
}
@@ -547,6 +563,52 @@ class _MobileCarouselLayoutState extends State<MobileCarouselLayout> {
},
),
// 치트 섹션 (디버그 모드에서만 표시)
if (widget.cheatsEnabled) ...[
const Divider(),
Padding(
padding: const EdgeInsets.symmetric(
horizontal: 16,
vertical: 8,
),
child: Text(
'DEBUG CHEATS',
style: TextStyle(
fontFamily: 'PressStart2P',
fontSize: 8,
color: Colors.red.shade300,
),
),
),
ListTile(
leading: const Icon(Icons.fast_forward, color: Colors.red),
title: const Text('Skip Task (L+1)'),
subtitle: const Text('태스크 즉시 완료'),
onTap: () {
Navigator.pop(context);
widget.onCheatTask?.call();
},
),
ListTile(
leading: const Icon(Icons.skip_next, color: Colors.red),
title: const Text('Skip Quest (Q!)'),
subtitle: const Text('퀘스트 즉시 완료'),
onTap: () {
Navigator.pop(context);
widget.onCheatQuest?.call();
},
),
ListTile(
leading: const Icon(Icons.double_arrow, color: Colors.red),
title: const Text('Skip Act (P!)'),
subtitle: const Text('액트 즉시 완료 (명예의 전당 테스트용)'),
onTap: () {
Navigator.pop(context);
widget.onCheatPlot?.call();
},
),
],
const SizedBox(height: 8),
],
),