feat(ui): 화면 및 컨트롤러 수익화 연동
- 앱 초기화에 광고/IAP 서비스 추가 - 게임 세션 컨트롤러 수익화 상태 관리 - 캐릭터 생성 화면 굴리기 제한 UI - 설정 화면 광고 제거 구매 UI - 애니메이션 패널 개선
This commit is contained in:
@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:asciineverdie/data/game_text_l10n.dart' as game_l10n;
|
||||
import 'package:asciineverdie/l10n/app_localizations.dart';
|
||||
import 'package:asciineverdie/src/core/audio/audio_service.dart';
|
||||
import 'package:asciineverdie/src/core/engine/debug_settings_service.dart';
|
||||
import 'package:asciineverdie/src/shared/retro_colors.dart';
|
||||
import 'package:asciineverdie/src/core/engine/game_mutations.dart';
|
||||
import 'package:asciineverdie/src/core/engine/progress_service.dart';
|
||||
@@ -23,6 +24,7 @@ import 'package:asciineverdie/src/features/game/game_session_controller.dart';
|
||||
import 'package:asciineverdie/src/features/game/widgets/notification_overlay.dart';
|
||||
import 'package:asciineverdie/src/features/hall_of_fame/hall_of_fame_screen.dart';
|
||||
import 'package:asciineverdie/src/features/new_character/new_character_screen.dart';
|
||||
import 'package:asciineverdie/src/features/settings/settings_screen.dart';
|
||||
|
||||
class AskiiNeverDieApp extends StatefulWidget {
|
||||
const AskiiNeverDieApp({super.key});
|
||||
@@ -81,6 +83,8 @@ class _AskiiNeverDieAppState extends State<AskiiNeverDieApp> {
|
||||
// 초기 설정 및 오디오 서비스 로드
|
||||
_loadSettings();
|
||||
_audioService.init();
|
||||
// 디버그 설정 서비스 초기화 (Phase 8)
|
||||
DebugSettingsService.instance.initialize();
|
||||
// 세이브 파일 존재 여부 확인
|
||||
_checkForExistingSave();
|
||||
// 명예의 전당 로드
|
||||
@@ -118,7 +122,7 @@ class _AskiiNeverDieAppState extends State<AskiiNeverDieApp> {
|
||||
|
||||
if (exists) {
|
||||
// 세이브 파일에서 미리보기 정보 추출
|
||||
final (outcome, state, _) = await _controller.saveManager.loadState();
|
||||
final (outcome, state, _, _) = await _controller.saveManager.loadState();
|
||||
if (outcome.success && state != null) {
|
||||
final actName = _getActName(state.progress.plotStageCount);
|
||||
preview = SavedGamePreview(
|
||||
@@ -465,6 +469,7 @@ class _AskiiNeverDieAppState extends State<AskiiNeverDieApp> {
|
||||
onLoadSave: _loadSave,
|
||||
onHallOfFame: _navigateToHallOfFame,
|
||||
onLocalArena: _navigateToArena,
|
||||
onSettings: _showSettings,
|
||||
hasSaveFile: _hasSave,
|
||||
savedGamePreview: _savedGamePreview,
|
||||
hallOfFameCount: _hallOfFame.count,
|
||||
@@ -602,6 +607,18 @@ class _AskiiNeverDieAppState extends State<AskiiNeverDieApp> {
|
||||
_audioService.playBgm('title');
|
||||
});
|
||||
}
|
||||
|
||||
/// 설정 화면 표시 (모달 바텀시트)
|
||||
void _showSettings(BuildContext context) {
|
||||
SettingsScreen.show(
|
||||
context,
|
||||
settingsRepository: _settingsRepository,
|
||||
currentThemeMode: _themeMode,
|
||||
onThemeModeChange: _changeThemeMode,
|
||||
onBgmVolumeChange: _audioService.setBgmVolume,
|
||||
onSfxVolumeChange: _audioService.setSfxVolume,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// 스플래시 화면 (세이브 파일 확인 중) - 레트로 스타일
|
||||
|
||||
Reference in New Issue
Block a user