From c9f0e35914af28b8e24c97d67369af15016073ae Mon Sep 17 00:00:00 2001 From: JiWoong Sul Date: Thu, 1 Jan 2026 03:29:48 +0900 Subject: [PATCH] =?UTF-8?q?fix(i18n):=20VictoryOverlay=20=EB=B2=88?= =?UTF-8?q?=EC=97=AD=20=EB=B0=8F=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 일본어/중국어 번역 수정 - game_text_l10n 번역 데이터 정리 - VictoryOverlay 레이아웃 개선 - GameSessionController 상태 관리 개선 --- lib/data/game_text_l10n.dart | 12 ++-- lib/l10n/app_ja.arb | 4 +- lib/l10n/app_localizations_ja.dart | 4 +- lib/l10n/app_localizations_zh.dart | 4 +- lib/l10n/app_zh.arb | 4 +- .../game/game_session_controller.dart | 6 ++ .../game/widgets/victory_overlay.dart | 66 +++++++------------ 7 files changed, 45 insertions(+), 55 deletions(-) diff --git a/lib/data/game_text_l10n.dart b/lib/data/game_text_l10n.dart index d0da4a8..55d90e1 100644 --- a/lib/data/game_text_l10n.dart +++ b/lib/data/game_text_l10n.dart @@ -1211,9 +1211,9 @@ String get uiHallOfFame { } String get frontDescription { - if (isKoreanLocale) return 'Flutter로 재구축된 오프라인 Progress Quest (PQ 6.4)'; - if (isJapaneseLocale) return 'Flutterで再構築されたオフラインProgress Quest (PQ 6.4)'; - return 'Offline Progress Quest (PQ 6.4) rebuilt with Flutter.'; + if (isKoreanLocale) return '레트로 감성의 오프라인 싱글플레이어 RPG'; + if (isJapaneseLocale) return 'レトロ感のあるオフラインシングルプレイヤーRPG'; + return 'A retro-style offline single-player RPG'; } String get frontTodayFocus { @@ -1913,7 +1913,7 @@ String get uiAbout { } String get uiAboutDescription { - if (isKoreanLocale) return 'Progress Quest 6.4를 Flutter로 재구현한 오프라인 싱글플레이어 RPG입니다.'; - if (isJapaneseLocale) return 'Progress Quest 6.4をFlutterで再実装したオフラインシングルプレイヤーRPGです。'; - return 'An offline single-player RPG reimplementation of Progress Quest 6.4 in Flutter.'; + if (isKoreanLocale) return 'ASCII 아트와 레트로 감성의 오프라인 싱글플레이어 RPG입니다.'; + if (isJapaneseLocale) return 'ASCIIアートとレトロ感のあるオフラインシングルプレイヤーRPGです。'; + return 'An offline single-player RPG with ASCII art and retro vibes.'; } diff --git a/lib/l10n/app_ja.arb b/lib/l10n/app_ja.arb index 1273055..30268a9 100644 --- a/lib/l10n/app_ja.arb +++ b/lib/l10n/app_ja.arb @@ -16,7 +16,7 @@ "saveProgressQuestion": "Save your progress before leaving?", "exitWithoutSaving": "Exit without saving", "saveAndExit": "Save and Exit", - "progressQuestTitle": "Progress Quest - {name}", + "progressQuestTitle": "ASCII NEVER DIE - {name}", "levelUp": "Level Up", "completeQuest": "Complete Quest", "completePlot": "Complete Plot", @@ -62,7 +62,7 @@ "actNumber": "Act {number}", "noActiveQuests": "No active quests", "questNumber": "Quest #{number}", - "welcomeMessage": "Welcome to Progress Quest!", + "welcomeMessage": "ASCII NEVER DIEへようこそ!", "noSavedGames": "No saved games found.", "loadError": "Failed to load save file: {error}", "name": "Name", diff --git a/lib/l10n/app_localizations_ja.dart b/lib/l10n/app_localizations_ja.dart index 27064ac..40bafb6 100644 --- a/lib/l10n/app_localizations_ja.dart +++ b/lib/l10n/app_localizations_ja.dart @@ -55,7 +55,7 @@ class L10nJa extends L10n { @override String progressQuestTitle(String name) { - return 'Progress Quest - $name'; + return 'ASCII NEVER DIE - $name'; } @override @@ -200,7 +200,7 @@ class L10nJa extends L10n { } @override - String get welcomeMessage => 'Welcome to Progress Quest!'; + String get welcomeMessage => 'ASCII NEVER DIEへようこそ!'; @override String get noSavedGames => 'No saved games found.'; diff --git a/lib/l10n/app_localizations_zh.dart b/lib/l10n/app_localizations_zh.dart index e8470c6..34652aa 100644 --- a/lib/l10n/app_localizations_zh.dart +++ b/lib/l10n/app_localizations_zh.dart @@ -55,7 +55,7 @@ class L10nZh extends L10n { @override String progressQuestTitle(String name) { - return 'Progress Quest - $name'; + return 'ASCII NEVER DIE - $name'; } @override @@ -200,7 +200,7 @@ class L10nZh extends L10n { } @override - String get welcomeMessage => 'Welcome to Progress Quest!'; + String get welcomeMessage => '欢迎来到ASCII NEVER DIE!'; @override String get noSavedGames => 'No saved games found.'; diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index feeee41..4bb1cb3 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -16,7 +16,7 @@ "saveProgressQuestion": "Save your progress before leaving?", "exitWithoutSaving": "Exit without saving", "saveAndExit": "Save and Exit", - "progressQuestTitle": "Progress Quest - {name}", + "progressQuestTitle": "ASCII NEVER DIE - {name}", "levelUp": "Level Up", "completeQuest": "Complete Quest", "completePlot": "Complete Plot", @@ -62,7 +62,7 @@ "actNumber": "Act {number}", "noActiveQuests": "No active quests", "questNumber": "Quest #{number}", - "welcomeMessage": "Welcome to Progress Quest!", + "welcomeMessage": "欢迎来到ASCII NEVER DIE!", "noSavedGames": "No saved games found.", "loadError": "Failed to load save file: {error}", "name": "Name", diff --git a/lib/src/features/game/game_session_controller.dart b/lib/src/features/game/game_session_controller.dart index 0f3dae6..91a2f61 100644 --- a/lib/src/features/game/game_session_controller.dart +++ b/lib/src/features/game/game_session_controller.dart @@ -316,6 +316,12 @@ class GameSessionController extends ChangeNotifier { // 통계 기록 await _statisticsStorage.recordGameComplete(); debugPrint('[HallOfFame] Registration complete'); + + // 클리어된 세이브 파일 삭제 (중복 등록 방지) + if (success) { + final deleteResult = await saveManager.deleteSave(); + debugPrint('[HallOfFame] Save file deleted: ${deleteResult.success}'); + } } catch (e, st) { debugPrint('[HallOfFame] ERROR: $e'); debugPrint('[HallOfFame] StackTrace: $st'); diff --git a/lib/src/features/game/widgets/victory_overlay.dart b/lib/src/features/game/widgets/victory_overlay.dart index 6c828e0..ed6c7bc 100644 --- a/lib/src/features/game/widgets/victory_overlay.dart +++ b/lib/src/features/game/widgets/victory_overlay.dart @@ -450,16 +450,16 @@ class _VictoryOverlayState extends State Widget _buildTrophyAsciiArt(Color gold) { const trophy = ''' - ___________ - '._==_==_=_.' - .-\\: /-. - | (|:. |) | - '-|:. |-' - \\::. / - '::. .' - ) ( - _.' '._ - '-------' '''; + ___________ + '._==_==_=_.' + .-\\: /-. + | (|:. |) | + '-|:. |-' + \\::. / + '::. .' + ) ( + _.' '._ + '-------' '''; return Text( trophy, @@ -476,51 +476,35 @@ class _VictoryOverlayState extends State Widget _buildCredits(BuildContext context) { final textPrimary = RetroColors.textPrimaryOf(context); final textMuted = RetroColors.textMutedOf(context); + final gold = RetroColors.goldOf(context); return Column( children: [ Text( - 'Based on', - style: TextStyle( - fontFamily: 'JetBrainsMono', - fontSize: 10, - color: textMuted, - ), - ), - const SizedBox(height: 4), - Text( - 'Progress Quest', + 'ASCII NEVER DIE', style: TextStyle( fontFamily: 'PressStart2P', - fontSize: 10, + fontSize: 12, + color: gold, + ), + ), + const SizedBox(height: 16), + Text( + 'Thank you for playing!', + style: TextStyle( + fontFamily: 'JetBrainsMono', + fontSize: 12, color: textPrimary, ), ), - const SizedBox(height: 4), + const SizedBox(height: 8), Text( - 'by Eric Fredricksen', + 'Your legend lives on...', style: TextStyle( fontFamily: 'JetBrainsMono', fontSize: 10, color: textMuted, - ), - ), - const SizedBox(height: 24), - Text( - 'Flutter Port', - style: TextStyle( - fontFamily: 'JetBrainsMono', - fontSize: 10, - color: textMuted, - ), - ), - const SizedBox(height: 4), - Text( - 'ASCII Never Die', - style: TextStyle( - fontFamily: 'PressStart2P', - fontSize: 10, - color: textPrimary, + fontStyle: FontStyle.italic, ), ), ],