diff --git a/lib/src/features/game/game_play_screen.dart b/lib/src/features/game/game_play_screen.dart index a6b228c..7dc61ed 100644 --- a/lib/src/features/game/game_play_screen.dart +++ b/lib/src/features/game/game_play_screen.dart @@ -656,33 +656,51 @@ class _GamePlayScreenState extends State Widget _buildQuestList(GameState state) { final l10n = L10n.of(context); - final questCount = state.progress.questCount; - if (questCount == 0) { + final questHistory = state.progress.questHistory; + + if (questHistory.isEmpty) { return Center( child: Text(l10n.noActiveQuests, style: const TextStyle(fontSize: 11)), ); } - // 현재 퀘스트 캡션이 있으면 표시 - final currentTask = state.progress.currentTask; - return ListView( + // 원본처럼 퀘스트 히스토리를 리스트로 표시 + // 완료된 퀘스트는 체크박스, 현재 퀘스트는 화살표 + return ListView.builder( + itemCount: questHistory.length, padding: const EdgeInsets.symmetric(horizontal: 8), - children: [ - Row( + itemBuilder: (context, index) { + final quest = questHistory[index]; + final isCurrentQuest = index == questHistory.length - 1 && !quest.isComplete; + + return Row( children: [ - const Icon(Icons.arrow_right, size: 14), + if (isCurrentQuest) + const Icon(Icons.arrow_right, size: 14) + else + Icon( + quest.isComplete + ? Icons.check_box + : Icons.check_box_outline_blank, + size: 14, + color: quest.isComplete ? Colors.green : Colors.grey, + ), + const SizedBox(width: 4), Expanded( child: Text( - currentTask.caption.isNotEmpty - ? currentTask.caption - : l10n.questNumber(questCount), - style: const TextStyle(fontSize: 11), + quest.caption, + style: TextStyle( + fontSize: 11, + decoration: quest.isComplete + ? TextDecoration.lineThrough + : TextDecoration.none, + ), overflow: TextOverflow.ellipsis, ), ), ], - ), - ], + ); + }, ); }