refactor(game): 게임 페이지 및 로컬라이제이션 정리

- GamePlayScreen 개선
- CharacterSheetPage 정리
- StoryPage 단순화
- 로컬라이제이션 정리
This commit is contained in:
JiWoong Sul
2026-01-08 15:46:34 +09:00
parent 9f10e3ee21
commit 56b568a832
3 changed files with 7 additions and 24 deletions

View File

@@ -1087,9 +1087,7 @@ class _GamePlayScreenState extends State<GamePlayScreen>
state.progress.exp.position, state.progress.exp.position,
state.progress.exp.max, state.progress.exp.max,
Colors.blue, Colors.blue,
tooltip: tooltip: '${state.progress.exp.position} / ${state.progress.exp.max}',
'${state.progress.exp.max - state.progress.exp.position} '
'${l10n.xpNeededForNextLevel}',
), ),
// 스킬 (Skills - SpellBook 기반) // 스킬 (Skills - SpellBook 기반)

View File

@@ -105,11 +105,9 @@ class CharacterSheetPage extends StatelessWidget {
} }
Widget _buildExpBar(BuildContext context) { Widget _buildExpBar(BuildContext context) {
final localizations = L10n.of(context);
final progress = exp.max > 0 final progress = exp.max > 0
? (exp.position / exp.max).clamp(0.0, 1.0) ? (exp.position / exp.max).clamp(0.0, 1.0)
: 0.0; : 0.0;
final remaining = exp.max - exp.position;
return Padding( return Padding(
padding: const EdgeInsets.all(12), padding: const EdgeInsets.all(12),
@@ -123,7 +121,7 @@ class CharacterSheetPage extends StatelessWidget {
), ),
const SizedBox(height: 4), const SizedBox(height: 4),
Text( Text(
'$remaining ${localizations.xpNeededForNextLevel}', '${exp.position} / ${exp.max}',
style: TextStyle(fontSize: 10, color: Colors.grey.shade600), style: TextStyle(fontSize: 10, color: Colors.grey.shade600),
), ),
], ],

View File

@@ -1,9 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:asciineverdie/data/game_text_l10n.dart' as l10n;
import 'package:asciineverdie/l10n/app_localizations.dart'; import 'package:asciineverdie/l10n/app_localizations.dart';
import 'package:asciineverdie/src/core/model/game_state.dart'; import 'package:asciineverdie/src/core/model/game_state.dart';
import 'package:asciineverdie/src/core/util/pq_logic.dart' as pq_logic;
/// 스토리 페이지 (캐로셀) /// 스토리 페이지 (캐로셀)
/// ///
@@ -104,25 +102,14 @@ class StoryPage extends StatelessWidget {
final progress = plot.max > 0 final progress = plot.max > 0
? (plot.position / plot.max).clamp(0.0, 1.0) ? (plot.position / plot.max).clamp(0.0, 1.0)
: 0.0; : 0.0;
final remaining = plot.max - plot.position;
final remainingTime = pq_logic.roughTime(remaining);
return Padding( return Padding(
padding: const EdgeInsets.all(12), padding: const EdgeInsets.all(12),
child: Column( child: LinearProgressIndicator(
children: [ value: progress,
LinearProgressIndicator( backgroundColor: Colors.purple.withValues(alpha: 0.2),
value: progress, valueColor: const AlwaysStoppedAnimation<Color>(Colors.purple),
backgroundColor: Colors.purple.withValues(alpha: 0.2), minHeight: 12,
valueColor: const AlwaysStoppedAnimation<Color>(Colors.purple),
minHeight: 12,
),
const SizedBox(height: 4),
Text(
l10n.uiTimeRemaining(remainingTime),
style: TextStyle(fontSize: 10, color: Colors.grey.shade600),
),
],
), ),
); );
} }