feat(ui): 화면들에 레트로 UI 스타일 적용

- front_screen: 레트로 패널 및 버튼 스타일
- game_play_screen: 레트로 색상 및 초기 BGM 로직 개선
- mobile_carousel_layout: 레트로 테마 적용
- carousel_nav_bar: 골드 액센트 색상 적용
This commit is contained in:
JiWoong Sul
2025-12-30 18:31:08 +09:00
parent 2677334346
commit 2486d84d63
4 changed files with 249 additions and 215 deletions

View File

@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:askiineverdie/data/game_text_l10n.dart' as l10n;
import 'package:askiineverdie/src/shared/retro_colors.dart';
/// 캐로셀 페이지 인덱스
enum CarouselPage {
@@ -13,7 +14,7 @@ enum CarouselPage {
story, // 6: 스토리
}
/// 캐로셀 네비게이션 바
/// 캐로셀 네비게이션 바 (레트로 스타일)
///
/// 7개의 페이지 버튼을 표시하고 현재 페이지를 하이라이트.
/// 버튼 탭 시 해당 페이지로 이동.
@@ -31,10 +32,12 @@ class CarouselNavBar extends StatelessWidget {
Widget build(BuildContext context) {
return Container(
height: 56,
padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 4),
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.surfaceContainerHighest,
border: Border(top: BorderSide(color: Theme.of(context).dividerColor)),
padding: const EdgeInsets.symmetric(horizontal: 2, vertical: 4),
decoration: const BoxDecoration(
color: RetroColors.darkBrown,
border: Border(
top: BorderSide(color: RetroColors.gold, width: 2),
),
),
child: Row(
children: CarouselPage.values.map((page) {
@@ -52,7 +55,7 @@ class CarouselNavBar extends StatelessWidget {
}
}
/// 개별 네비게이션 버튼
/// 개별 네비게이션 버튼 (레트로 스타일)
class _NavButton extends StatelessWidget {
const _NavButton({
required this.page,
@@ -67,33 +70,32 @@ class _NavButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
final (icon, label) = _getIconAndLabel(page);
final theme = Theme.of(context);
final color = isSelected
? theme.colorScheme.primary
: theme.colorScheme.onSurfaceVariant;
final color = isSelected ? RetroColors.gold : RetroColors.textDisabled;
final bgColor = isSelected
? RetroColors.panelBgLight
: Colors.transparent;
return InkWell(
return GestureDetector(
onTap: onTap,
borderRadius: BorderRadius.circular(8),
child: Container(
margin: const EdgeInsets.symmetric(horizontal: 1),
padding: const EdgeInsets.symmetric(vertical: 4),
decoration: isSelected
? BoxDecoration(
color: theme.colorScheme.primaryContainer.withValues(
alpha: 0.5,
),
borderRadius: BorderRadius.circular(8),
)
: null,
decoration: BoxDecoration(
color: bgColor,
border: isSelected
? Border.all(color: RetroColors.gold, width: 1)
: null,
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(icon, size: 20, color: color),
Icon(icon, size: 18, color: color),
const SizedBox(height: 2),
Text(
label,
style: TextStyle(
fontSize: 9,
fontFamily: 'PressStart2P',
fontSize: 5,
fontWeight: isSelected ? FontWeight.bold : FontWeight.normal,
color: color,
),