feat(ui): 화면 및 컨트롤러 수익화 연동

- 앱 초기화에 광고/IAP 서비스 추가
- 게임 세션 컨트롤러 수익화 상태 관리
- 캐릭터 생성 화면 굴리기 제한 UI
- 설정 화면 광고 제거 구매 UI
- 애니메이션 패널 개선
This commit is contained in:
JiWoong Sul
2026-01-16 20:10:43 +09:00
parent c95e4de5a4
commit 748160d543
8 changed files with 1288 additions and 373 deletions

View File

@@ -17,6 +17,7 @@ class FrontScreen extends StatefulWidget {
this.onLoadSave,
this.onHallOfFame,
this.onLocalArena,
this.onSettings,
this.hasSaveFile = false,
this.savedGamePreview,
this.hallOfFameCount = 0,
@@ -36,6 +37,9 @@ class FrontScreen extends StatefulWidget {
/// "Local Arena" 버튼 클릭 시 호출
final void Function(BuildContext context)? onLocalArena;
/// "Settings" 버튼 클릭 시 호출 (언어, 테마, 사운드)
final void Function(BuildContext context)? onSettings;
/// 세이브 파일 존재 여부 (새 캐릭터 시 경고용)
final bool hasSaveFile;
@@ -147,6 +151,9 @@ class _FrontScreenState extends State<FrontScreen> with RouteAware {
widget.hallOfFameCount >= 2
? () => widget.onLocalArena!(context)
: null,
onSettings: widget.onSettings != null
? () => widget.onSettings!(context)
: null,
savedGamePreview: widget.savedGamePreview,
hallOfFameCount: widget.hallOfFameCount,
),
@@ -249,6 +256,7 @@ class _ActionButtons extends StatelessWidget {
this.onLoadSave,
this.onHallOfFame,
this.onLocalArena,
this.onSettings,
this.savedGamePreview,
this.hallOfFameCount = 0,
});
@@ -257,6 +265,7 @@ class _ActionButtons extends StatelessWidget {
final VoidCallback? onLoadSave;
final VoidCallback? onHallOfFame;
final VoidCallback? onLocalArena;
final VoidCallback? onSettings;
final SavedGamePreview? savedGamePreview;
final int hallOfFameCount;
@@ -306,6 +315,14 @@ class _ActionButtons extends StatelessWidget {
onPressed: hallOfFameCount >= 2 ? onLocalArena : null,
isPrimary: false,
),
// 설정
const SizedBox(height: 12),
RetroTextButton(
text: game_l10n.uiSettings,
icon: Icons.settings,
onPressed: onSettings,
isPrimary: false,
),
],
),
);
@@ -399,3 +416,4 @@ class _RetroTag extends StatelessWidget {
);
}
}