refactor(game): HelpDialog 4개 탭 뷰를 개별 파일로 분리
- help_dialog.dart 496줄 → 106줄 - help/ 디렉토리에 5개 파일 생성 (help_section, basics, combat, skills, ui)
This commit is contained in:
80
lib/src/features/game/widgets/help/basics_help_view.dart
Normal file
80
lib/src/features/game/widgets/help/basics_help_view.dart
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import 'package:asciineverdie/src/features/game/widgets/help/help_section.dart';
|
||||||
|
|
||||||
|
/// 기본 도움말 뷰 (Basics Help View)
|
||||||
|
class BasicsHelpView extends StatelessWidget {
|
||||||
|
const BasicsHelpView({
|
||||||
|
super.key,
|
||||||
|
required this.isKorean,
|
||||||
|
required this.isJapanese,
|
||||||
|
});
|
||||||
|
|
||||||
|
final bool isKorean;
|
||||||
|
final bool isJapanese;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return ListView(
|
||||||
|
padding: const EdgeInsets.all(12),
|
||||||
|
children: [
|
||||||
|
HelpSection(
|
||||||
|
icon: '\u2139',
|
||||||
|
title: isKorean
|
||||||
|
? '게임 소개'
|
||||||
|
: isJapanese
|
||||||
|
? 'ゲーム紹介'
|
||||||
|
: 'About the Game',
|
||||||
|
content: isKorean
|
||||||
|
? 'Askii Never Die는 완전 자동 진행 RPG입니다. 캐릭터가 자동으로 몬스터와 싸우고, '
|
||||||
|
'퀘스트를 완료하며, 레벨업합니다. 장비와 스킬도 자동으로 획득/장착됩니다.'
|
||||||
|
: isJapanese
|
||||||
|
? 'Askii Never Dieは完全自動進行RPGです。キャラクターが自動でモンスターと戦い、'
|
||||||
|
'クエストを完了し、レベルアップします。装備とスキルも自動で獲得・装着されます。'
|
||||||
|
: 'Askii Never Die is a fully automatic idle RPG. Your character automatically fights monsters, '
|
||||||
|
'completes quests, and levels up. Equipment and skills are auto-acquired and equipped.',
|
||||||
|
),
|
||||||
|
const SizedBox(height: 12),
|
||||||
|
HelpSection(
|
||||||
|
icon: '\u2191',
|
||||||
|
title: isKorean
|
||||||
|
? '진행 방식'
|
||||||
|
: isJapanese
|
||||||
|
? '進行方式'
|
||||||
|
: 'Progression',
|
||||||
|
content: isKorean
|
||||||
|
? '• 몬스터 처치 → 전리품 획득 → 장비 업그레이드\n'
|
||||||
|
'• 경험치 획득 → 레벨업 → 스탯 상승\n'
|
||||||
|
'• 퀘스트 완료 → 보상 획득\n'
|
||||||
|
'• 플롯 진행 → 새로운 Act 해금'
|
||||||
|
: isJapanese
|
||||||
|
? '• モンスター討伐 → 戦利品獲得 → 装備アップグレード\n'
|
||||||
|
'• 経験値獲得 → レベルアップ → ステータス上昇\n'
|
||||||
|
'• クエスト完了 → 報酬獲得\n'
|
||||||
|
'• プロット進行 → 新しいAct解放'
|
||||||
|
: '• Kill monsters → Get loot → Upgrade equipment\n'
|
||||||
|
'• Gain XP → Level up → Stats increase\n'
|
||||||
|
'• Complete quests → Get rewards\n'
|
||||||
|
'• Progress plot → Unlock new Acts',
|
||||||
|
),
|
||||||
|
const SizedBox(height: 12),
|
||||||
|
HelpSection(
|
||||||
|
icon: '\u{1F4BE}',
|
||||||
|
title: isKorean
|
||||||
|
? '저장'
|
||||||
|
: isJapanese
|
||||||
|
? 'セーブ'
|
||||||
|
: 'Saving',
|
||||||
|
content: isKorean
|
||||||
|
? '게임은 자동으로 저장됩니다. 레벨업, 퀘스트 완료, Act 진행 시 자동 저장됩니다. '
|
||||||
|
'뒤로 가기 시 저장 여부를 선택할 수 있습니다.'
|
||||||
|
: isJapanese
|
||||||
|
? 'ゲームは自動保存されます。レベルアップ、クエスト完了、Act進行時に自動保存されます。'
|
||||||
|
'戻る時に保存するかどうか選択できます。'
|
||||||
|
: 'The game auto-saves. It saves on level up, quest completion, and Act progression. '
|
||||||
|
'When exiting, you can choose whether to save.',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
86
lib/src/features/game/widgets/help/combat_help_view.dart
Normal file
86
lib/src/features/game/widgets/help/combat_help_view.dart
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import 'package:asciineverdie/src/features/game/widgets/help/help_section.dart';
|
||||||
|
|
||||||
|
/// 전투 도움말 뷰 (Combat Help View)
|
||||||
|
class CombatHelpView extends StatelessWidget {
|
||||||
|
const CombatHelpView({
|
||||||
|
super.key,
|
||||||
|
required this.isKorean,
|
||||||
|
required this.isJapanese,
|
||||||
|
});
|
||||||
|
|
||||||
|
final bool isKorean;
|
||||||
|
final bool isJapanese;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return ListView(
|
||||||
|
padding: const EdgeInsets.all(12),
|
||||||
|
children: [
|
||||||
|
HelpSection(
|
||||||
|
icon: '\u2694',
|
||||||
|
title: isKorean
|
||||||
|
? '전투 시스템'
|
||||||
|
: isJapanese
|
||||||
|
? '戦闘システム'
|
||||||
|
: 'Combat System',
|
||||||
|
content: isKorean
|
||||||
|
? '전투는 자동으로 진행됩니다. 플레이어와 몬스터가 번갈아 공격하며, '
|
||||||
|
'공격 속도(Attack Speed)에 따라 공격 빈도가 결정됩니다.'
|
||||||
|
: isJapanese
|
||||||
|
? '戦闘は自動で進行します。プレイヤーとモンスターが交互に攻撃し、'
|
||||||
|
'攻撃速度(Attack Speed)によって攻撃頻度が決まります。'
|
||||||
|
: 'Combat is automatic. Player and monster take turns attacking, '
|
||||||
|
'with attack frequency based on Attack Speed.',
|
||||||
|
),
|
||||||
|
const SizedBox(height: 12),
|
||||||
|
HelpSection(
|
||||||
|
icon: '\u{1F6E1}',
|
||||||
|
title: isKorean
|
||||||
|
? '방어 메카닉'
|
||||||
|
: isJapanese
|
||||||
|
? '防御メカニック'
|
||||||
|
: 'Defense Mechanics',
|
||||||
|
content: isKorean
|
||||||
|
? '• 회피(Evasion): DEX 기반, 공격을 완전히 피함\n'
|
||||||
|
'• 방패 방어(Block): 방패 장착 시, 피해 감소\n'
|
||||||
|
'• 무기 쳐내기(Parry): 무기로 공격 일부 막음\n'
|
||||||
|
'• 방어력(DEF): 모든 피해에서 차감'
|
||||||
|
: isJapanese
|
||||||
|
? '• 回避(Evasion): DEX基準、攻撃を完全に回避\n'
|
||||||
|
'• 盾防御(Block): 盾装備時、ダメージ軽減\n'
|
||||||
|
'• 武器受け流し(Parry): 武器で攻撃を一部防ぐ\n'
|
||||||
|
'• 防御力(DEF): 全ダメージから差し引き'
|
||||||
|
: '• Evasion: DEX-based, completely avoid attacks\n'
|
||||||
|
'• Block: With shield, reduce damage\n'
|
||||||
|
'• Parry: Deflect some damage with weapon\n'
|
||||||
|
'• DEF: Subtracted from all damage',
|
||||||
|
),
|
||||||
|
const SizedBox(height: 12),
|
||||||
|
HelpSection(
|
||||||
|
icon: '\u267B',
|
||||||
|
title: isKorean
|
||||||
|
? '부활 시스템'
|
||||||
|
: isJapanese
|
||||||
|
? '復活システム'
|
||||||
|
: 'Revival System',
|
||||||
|
content: isKorean
|
||||||
|
? '사망 시 두 가지 부활 방법이 있습니다:\n'
|
||||||
|
'• 기본 부활: 장비 1개 제물, HP/MP 회복\n'
|
||||||
|
'• 광고 부활: 아이템 보존, HP 100%, 10분 자동부활\n'
|
||||||
|
'유료 유저는 항상 광고 없이 부활 가능합니다.'
|
||||||
|
: isJapanese
|
||||||
|
? '死亡時に2つの復活方法があります:\n'
|
||||||
|
'• 基本復活: 装備1つ消費、HP/MP回復\n'
|
||||||
|
'• 広告復活: アイテム保存、HP100%、10分自動復活\n'
|
||||||
|
'課金ユーザーは常に広告なしで復活可能です。'
|
||||||
|
: 'Two revival methods on death:\n'
|
||||||
|
'• Basic: Sacrifice 1 equipment, restore HP/MP\n'
|
||||||
|
'• Ad Revival: Keep items, 100% HP, 10-min auto-revive\n'
|
||||||
|
'Paid users can always revive without ads.',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
35
lib/src/features/game/widgets/help/help_section.dart
Normal file
35
lib/src/features/game/widgets/help/help_section.dart
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import 'package:asciineverdie/src/shared/retro_colors.dart';
|
||||||
|
import 'package:asciineverdie/src/shared/widgets/retro_dialog.dart';
|
||||||
|
|
||||||
|
/// 레트로 스타일 도움말 섹션 위젯 (Help Section)
|
||||||
|
class HelpSection extends StatelessWidget {
|
||||||
|
const HelpSection({
|
||||||
|
super.key,
|
||||||
|
required this.icon,
|
||||||
|
required this.title,
|
||||||
|
required this.content,
|
||||||
|
});
|
||||||
|
|
||||||
|
final String icon;
|
||||||
|
final String title;
|
||||||
|
final String content;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
// 섹션 헤더 (MP 블루 테마 인식)
|
||||||
|
RetroSectionHeader(
|
||||||
|
title: title,
|
||||||
|
icon: icon,
|
||||||
|
accentColor: RetroColors.mpOf(context),
|
||||||
|
),
|
||||||
|
// 내용(content) 표시
|
||||||
|
RetroInfoBox(content: content),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
101
lib/src/features/game/widgets/help/skills_help_view.dart
Normal file
101
lib/src/features/game/widgets/help/skills_help_view.dart
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import 'package:asciineverdie/src/features/game/widgets/help/help_section.dart';
|
||||||
|
|
||||||
|
/// 스킬 도움말 뷰 (Skills Help View)
|
||||||
|
class SkillsHelpView extends StatelessWidget {
|
||||||
|
const SkillsHelpView({
|
||||||
|
super.key,
|
||||||
|
required this.isKorean,
|
||||||
|
required this.isJapanese,
|
||||||
|
});
|
||||||
|
|
||||||
|
final bool isKorean;
|
||||||
|
final bool isJapanese;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return ListView(
|
||||||
|
padding: const EdgeInsets.all(12),
|
||||||
|
children: [
|
||||||
|
HelpSection(
|
||||||
|
icon: '\u2727',
|
||||||
|
title: isKorean
|
||||||
|
? '스킬 종류'
|
||||||
|
: isJapanese
|
||||||
|
? 'スキル種類'
|
||||||
|
: 'Skill Types',
|
||||||
|
content: isKorean
|
||||||
|
? '• 공격(Attack): 적에게 직접 피해\n'
|
||||||
|
'• 회복(Heal): HP/MP 회복\n'
|
||||||
|
'• 버프(Buff): 자신에게 유리한 효과\n'
|
||||||
|
'• 디버프(Debuff): 적에게 불리한 효과\n'
|
||||||
|
'• DOT: 시간에 걸쳐 지속 피해'
|
||||||
|
: isJapanese
|
||||||
|
? '• 攻撃(Attack): 敵に直接ダメージ\n'
|
||||||
|
'• 回復(Heal): HP/MP回復\n'
|
||||||
|
'• バフ(Buff): 自分に有利な効果\n'
|
||||||
|
'• デバフ(Debuff): 敵に不利な効果\n'
|
||||||
|
'• DOT: 時間経過でダメージ'
|
||||||
|
: '• Attack: Deal direct damage\n'
|
||||||
|
'• Heal: Restore HP/MP\n'
|
||||||
|
'• Buff: Beneficial effects on self\n'
|
||||||
|
'• Debuff: Harmful effects on enemies\n'
|
||||||
|
'• DOT: Damage over time',
|
||||||
|
),
|
||||||
|
const SizedBox(height: 12),
|
||||||
|
HelpSection(
|
||||||
|
icon: '\u{1F916}',
|
||||||
|
title: isKorean
|
||||||
|
? '자동 스킬 선택'
|
||||||
|
: isJapanese
|
||||||
|
? '自動スキル選択'
|
||||||
|
: 'Auto Skill Selection',
|
||||||
|
content: isKorean
|
||||||
|
? '스킬은 AI가 자동으로 선택합니다:\n'
|
||||||
|
'1. HP 낮음 → 회복 스킬 우선\n'
|
||||||
|
'2. HP/MP 충분 → 버프 스킬 사용\n'
|
||||||
|
'3. 몬스터 HP 높음 → 디버프 적용\n'
|
||||||
|
'4. 공격 스킬로 마무리'
|
||||||
|
: isJapanese
|
||||||
|
? 'スキルはAIが自動選択します:\n'
|
||||||
|
'1. HP低い → 回復スキル優先\n'
|
||||||
|
'2. HP/MP十分 → バフスキル使用\n'
|
||||||
|
'3. モンスターHP高い → デバフ適用\n'
|
||||||
|
'4. 攻撃スキルで仕上げ'
|
||||||
|
: 'Skills are auto-selected by AI:\n'
|
||||||
|
'1. Low HP → Heal skills priority\n'
|
||||||
|
'2. HP/MP sufficient → Use buff skills\n'
|
||||||
|
'3. Monster HP high → Apply debuffs\n'
|
||||||
|
'4. Finish with attack skills',
|
||||||
|
),
|
||||||
|
const SizedBox(height: 12),
|
||||||
|
HelpSection(
|
||||||
|
icon: '\u2605',
|
||||||
|
title: isKorean
|
||||||
|
? '스킬 랭크'
|
||||||
|
: isJapanese
|
||||||
|
? 'スキルランク'
|
||||||
|
: 'Skill Ranks',
|
||||||
|
content: isKorean
|
||||||
|
? '스킬 랭크는 I, II, III... 형태로 표시됩니다. 랭크가 높을수록:\n'
|
||||||
|
'• 데미지/회복량 증가\n'
|
||||||
|
'• MP 소모량 감소\n'
|
||||||
|
'• 쿨타임 감소\n'
|
||||||
|
'레벨업 시 랜덤하게 스킬을 배웁니다.'
|
||||||
|
: isJapanese
|
||||||
|
? 'スキルランクはI、II、III...の形式で表示されます。ランクが高いほど:\n'
|
||||||
|
'• ダメージ/回復量増加\n'
|
||||||
|
'• MP消費量減少\n'
|
||||||
|
'• クールタイム減少\n'
|
||||||
|
'レベルアップ時にランダムでスキルを習得します。'
|
||||||
|
: 'Skill ranks are displayed as I, II, III... Higher rank means:\n'
|
||||||
|
'• More damage/healing\n'
|
||||||
|
'• Less MP cost\n'
|
||||||
|
'• Shorter cooldown\n'
|
||||||
|
'Learn random skills on level up.',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
138
lib/src/features/game/widgets/help/ui_help_view.dart
Normal file
138
lib/src/features/game/widgets/help/ui_help_view.dart
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import 'package:asciineverdie/src/features/game/widgets/help/help_section.dart';
|
||||||
|
|
||||||
|
/// UI 도움말 뷰 (UI Help View)
|
||||||
|
class UIHelpView extends StatelessWidget {
|
||||||
|
const UIHelpView({
|
||||||
|
super.key,
|
||||||
|
required this.isKorean,
|
||||||
|
required this.isJapanese,
|
||||||
|
});
|
||||||
|
|
||||||
|
final bool isKorean;
|
||||||
|
final bool isJapanese;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return ListView(
|
||||||
|
padding: const EdgeInsets.all(12),
|
||||||
|
children: [
|
||||||
|
HelpSection(
|
||||||
|
icon: '\u{1F4FA}',
|
||||||
|
title: isKorean
|
||||||
|
? '화면 구성'
|
||||||
|
: isJapanese
|
||||||
|
? '画面構成'
|
||||||
|
: 'Screen Layout',
|
||||||
|
content: isKorean
|
||||||
|
? '모바일에서는 좌우 스와이프로 7개 페이지 탐색:\n'
|
||||||
|
'• 캐릭터: 이름, 레벨, 종족, 직업\n'
|
||||||
|
'• 스탯: STR, DEX, CON, INT 등\n'
|
||||||
|
'• 장비: 무기, 방어구, 액세서리\n'
|
||||||
|
'• 인벤토리: 보유 아이템, 골드\n'
|
||||||
|
'• 스킬북: 습득한 스킬 목록\n'
|
||||||
|
'• 퀘스트: 진행 중인 퀘스트\n'
|
||||||
|
'• 플롯: 스토리 진행 상황'
|
||||||
|
: isJapanese
|
||||||
|
? 'モバイルでは左右スワイプで7ページ切替:\n'
|
||||||
|
'• キャラクター: 名前、レベル、種族、職業\n'
|
||||||
|
'• ステータス: STR、DEX、CON、INT等\n'
|
||||||
|
'• 装備: 武器、防具、アクセサリー\n'
|
||||||
|
'• インベントリ: 所持アイテム、ゴールド\n'
|
||||||
|
'• スキルブック: 習得したスキル一覧\n'
|
||||||
|
'• クエスト: 進行中のクエスト\n'
|
||||||
|
'• プロット: ストーリー進行状況'
|
||||||
|
: 'On mobile, swipe left/right to browse 7 pages:\n'
|
||||||
|
'• Character: Name, level, race, class\n'
|
||||||
|
'• Stats: STR, DEX, CON, INT, etc.\n'
|
||||||
|
'• Equipment: Weapons, armor, accessories\n'
|
||||||
|
'• Inventory: Items, gold\n'
|
||||||
|
'• Skillbook: Learned skills\n'
|
||||||
|
'• Quests: Active quests\n'
|
||||||
|
'• Plot: Story progress',
|
||||||
|
),
|
||||||
|
const SizedBox(height: 12),
|
||||||
|
HelpSection(
|
||||||
|
icon: '\u23E9',
|
||||||
|
title: isKorean
|
||||||
|
? '속도 조절'
|
||||||
|
: isJapanese
|
||||||
|
? '速度調整'
|
||||||
|
: 'Speed Control',
|
||||||
|
content: isKorean
|
||||||
|
? '게임 속도를 조절할 수 있습니다:\n'
|
||||||
|
'• 1x: 기본 속도\n'
|
||||||
|
'• 2x: 명예의 전당 캐릭터 1명 이상 시 해금\n'
|
||||||
|
'• 5x: 광고 시청으로 5분간 부스트 (유료 유저 무료)'
|
||||||
|
: isJapanese
|
||||||
|
? 'ゲーム速度を調整できます:\n'
|
||||||
|
'• 1x: 基本速度\n'
|
||||||
|
'• 2x: 殿堂入り1人以上で解放\n'
|
||||||
|
'• 5x: 広告視聴で5分間ブースト(課金ユーザー無料)'
|
||||||
|
: 'Adjust game speed:\n'
|
||||||
|
'• 1x: Normal speed\n'
|
||||||
|
'• 2x: Unlocked with 1+ Hall of Fame character\n'
|
||||||
|
'• 5x: 5-min boost via ad (free for paid users)',
|
||||||
|
),
|
||||||
|
const SizedBox(height: 12),
|
||||||
|
HelpSection(
|
||||||
|
icon: '\u{1F3C6}',
|
||||||
|
title: isKorean
|
||||||
|
? '명예의 전당'
|
||||||
|
: isJapanese
|
||||||
|
? '殿堂入り'
|
||||||
|
: 'Hall of Fame',
|
||||||
|
content: isKorean
|
||||||
|
? 'Act V를 클리어하면 캐릭터가 명예의 전당에 등록됩니다.\n'
|
||||||
|
'• 캐릭터 이름, 레벨, 스탯이 영구 기록됨\n'
|
||||||
|
'• 첫 등록 시 2x 속도 영구 해금\n'
|
||||||
|
'• 2명 이상 등록 시 로컬 아레나 기능 해금'
|
||||||
|
: isJapanese
|
||||||
|
? 'Act Vクリアでキャラクターが殿堂入りします。\n'
|
||||||
|
'• キャラクター名、レベル、ステータスが永久記録\n'
|
||||||
|
'• 初登録で2倍速が永久解放\n'
|
||||||
|
'• 2人以上でローカルアリーナ機能解放'
|
||||||
|
: 'Characters enter Hall of Fame upon completing Act V.\n'
|
||||||
|
'• Name, level, stats are permanently recorded\n'
|
||||||
|
'• First entry permanently unlocks 2x speed\n'
|
||||||
|
'• 2+ entries unlock Local Arena feature',
|
||||||
|
),
|
||||||
|
const SizedBox(height: 12),
|
||||||
|
HelpSection(
|
||||||
|
icon: '\u23F8',
|
||||||
|
title: isKorean
|
||||||
|
? '일시정지'
|
||||||
|
: isJapanese
|
||||||
|
? '一時停止'
|
||||||
|
: 'Pause',
|
||||||
|
content: isKorean
|
||||||
|
? '일시정지 버튼으로 게임을 멈출 수 있습니다. '
|
||||||
|
'일시정지 중에도 UI를 확인하고 설정을 변경할 수 있습니다.'
|
||||||
|
: isJapanese
|
||||||
|
? '一時停止ボタンでゲームを止められます。'
|
||||||
|
'一時停止中もUIを確認し設定を変更できます。'
|
||||||
|
: 'Use the pause button to stop the game. '
|
||||||
|
'You can still view UI and change settings while paused.',
|
||||||
|
),
|
||||||
|
const SizedBox(height: 12),
|
||||||
|
HelpSection(
|
||||||
|
icon: '\u{1F4CA}',
|
||||||
|
title: isKorean
|
||||||
|
? '통계'
|
||||||
|
: isJapanese
|
||||||
|
? '統計'
|
||||||
|
: 'Statistics',
|
||||||
|
content: isKorean
|
||||||
|
? '통계 버튼에서 현재 세션과 누적 게임 통계를 확인할 수 있습니다. '
|
||||||
|
'처치한 몬스터, 획득 골드, 플레이 시간 등을 추적합니다.'
|
||||||
|
: isJapanese
|
||||||
|
? '統計ボタンで現在のセッションと累積ゲーム統計を確認できます。'
|
||||||
|
'倒したモンスター、獲得ゴールド、プレイ時間などを追跡します。'
|
||||||
|
: 'View current session and cumulative stats in the statistics button. '
|
||||||
|
'Track monsters killed, gold earned, play time, etc.',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,6 +3,11 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:asciineverdie/src/shared/retro_colors.dart';
|
import 'package:asciineverdie/src/shared/retro_colors.dart';
|
||||||
import 'package:asciineverdie/src/shared/widgets/retro_dialog.dart';
|
import 'package:asciineverdie/src/shared/widgets/retro_dialog.dart';
|
||||||
|
|
||||||
|
import 'package:asciineverdie/src/features/game/widgets/help/basics_help_view.dart';
|
||||||
|
import 'package:asciineverdie/src/features/game/widgets/help/combat_help_view.dart';
|
||||||
|
import 'package:asciineverdie/src/features/game/widgets/help/skills_help_view.dart';
|
||||||
|
import 'package:asciineverdie/src/features/game/widgets/help/ui_help_view.dart';
|
||||||
|
|
||||||
/// 도움말 다이얼로그 (Help Dialog)
|
/// 도움말 다이얼로그 (Help Dialog)
|
||||||
///
|
///
|
||||||
/// 게임 메카닉과 UI 설명을 제공
|
/// 게임 메카닉과 UI 설명을 제공
|
||||||
@@ -60,25 +65,25 @@ class _HelpDialogState extends State<HelpDialog>
|
|||||||
|
|
||||||
return RetroDialog(
|
return RetroDialog(
|
||||||
title: title,
|
title: title,
|
||||||
titleIcon: '❓',
|
titleIcon: '\u2753',
|
||||||
accentColor: mpColor,
|
accentColor: mpColor,
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
// 탭 바
|
// 탭 바 (Tab Bar)
|
||||||
RetroTabBar(
|
RetroTabBar(
|
||||||
controller: _tabController,
|
controller: _tabController,
|
||||||
tabs: tabs,
|
tabs: tabs,
|
||||||
accentColor: mpColor,
|
accentColor: mpColor,
|
||||||
),
|
),
|
||||||
// 탭 내용
|
// 탭 내용 (Tab Content)
|
||||||
Expanded(
|
Expanded(
|
||||||
child: TabBarView(
|
child: TabBarView(
|
||||||
controller: _tabController,
|
controller: _tabController,
|
||||||
children: [
|
children: [
|
||||||
_BasicsHelpView(isKorean: isKorean, isJapanese: isJapanese),
|
BasicsHelpView(isKorean: isKorean, isJapanese: isJapanese),
|
||||||
_CombatHelpView(isKorean: isKorean, isJapanese: isJapanese),
|
CombatHelpView(isKorean: isKorean, isJapanese: isJapanese),
|
||||||
_SkillsHelpView(isKorean: isKorean, isJapanese: isJapanese),
|
SkillsHelpView(isKorean: isKorean, isJapanese: isJapanese),
|
||||||
_UIHelpView(isKorean: isKorean, isJapanese: isJapanese),
|
UIHelpView(isKorean: isKorean, isJapanese: isJapanese),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -87,410 +92,3 @@ class _HelpDialogState extends State<HelpDialog>
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 기본 도움말 뷰
|
|
||||||
class _BasicsHelpView extends StatelessWidget {
|
|
||||||
const _BasicsHelpView({required this.isKorean, required this.isJapanese});
|
|
||||||
|
|
||||||
final bool isKorean;
|
|
||||||
final bool isJapanese;
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return ListView(
|
|
||||||
padding: const EdgeInsets.all(12),
|
|
||||||
children: [
|
|
||||||
_HelpSection(
|
|
||||||
icon: 'ℹ',
|
|
||||||
title: isKorean
|
|
||||||
? '게임 소개'
|
|
||||||
: isJapanese
|
|
||||||
? 'ゲーム紹介'
|
|
||||||
: 'About the Game',
|
|
||||||
content: isKorean
|
|
||||||
? 'Askii Never Die는 완전 자동 진행 RPG입니다. 캐릭터가 자동으로 몬스터와 싸우고, '
|
|
||||||
'퀘스트를 완료하며, 레벨업합니다. 장비와 스킬도 자동으로 획득/장착됩니다.'
|
|
||||||
: isJapanese
|
|
||||||
? 'Askii Never Dieは完全自動進行RPGです。キャラクターが自動でモンスターと戦い、'
|
|
||||||
'クエストを完了し、レベルアップします。装備とスキルも自動で獲得・装着されます。'
|
|
||||||
: 'Askii Never Die is a fully automatic idle RPG. Your character automatically fights monsters, '
|
|
||||||
'completes quests, and levels up. Equipment and skills are auto-acquired and equipped.',
|
|
||||||
),
|
|
||||||
const SizedBox(height: 12),
|
|
||||||
_HelpSection(
|
|
||||||
icon: '↑',
|
|
||||||
title: isKorean
|
|
||||||
? '진행 방식'
|
|
||||||
: isJapanese
|
|
||||||
? '進行方式'
|
|
||||||
: 'Progression',
|
|
||||||
content: isKorean
|
|
||||||
? '• 몬스터 처치 → 전리품 획득 → 장비 업그레이드\n'
|
|
||||||
'• 경험치 획득 → 레벨업 → 스탯 상승\n'
|
|
||||||
'• 퀘스트 완료 → 보상 획득\n'
|
|
||||||
'• 플롯 진행 → 새로운 Act 해금'
|
|
||||||
: isJapanese
|
|
||||||
? '• モンスター討伐 → 戦利品獲得 → 装備アップグレード\n'
|
|
||||||
'• 経験値獲得 → レベルアップ → ステータス上昇\n'
|
|
||||||
'• クエスト完了 → 報酬獲得\n'
|
|
||||||
'• プロット進行 → 新しいAct解放'
|
|
||||||
: '• Kill monsters → Get loot → Upgrade equipment\n'
|
|
||||||
'• Gain XP → Level up → Stats increase\n'
|
|
||||||
'• Complete quests → Get rewards\n'
|
|
||||||
'• Progress plot → Unlock new Acts',
|
|
||||||
),
|
|
||||||
const SizedBox(height: 12),
|
|
||||||
_HelpSection(
|
|
||||||
icon: '💾',
|
|
||||||
title: isKorean
|
|
||||||
? '저장'
|
|
||||||
: isJapanese
|
|
||||||
? 'セーブ'
|
|
||||||
: 'Saving',
|
|
||||||
content: isKorean
|
|
||||||
? '게임은 자동으로 저장됩니다. 레벨업, 퀘스트 완료, Act 진행 시 자동 저장됩니다. '
|
|
||||||
'뒤로 가기 시 저장 여부를 선택할 수 있습니다.'
|
|
||||||
: isJapanese
|
|
||||||
? 'ゲームは自動保存されます。レベルアップ、クエスト完了、Act進行時に自動保存されます。'
|
|
||||||
'戻る時に保存するかどうか選択できます。'
|
|
||||||
: 'The game auto-saves. It saves on level up, quest completion, and Act progression. '
|
|
||||||
'When exiting, you can choose whether to save.',
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// 전투 도움말 뷰
|
|
||||||
class _CombatHelpView extends StatelessWidget {
|
|
||||||
const _CombatHelpView({required this.isKorean, required this.isJapanese});
|
|
||||||
|
|
||||||
final bool isKorean;
|
|
||||||
final bool isJapanese;
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return ListView(
|
|
||||||
padding: const EdgeInsets.all(12),
|
|
||||||
children: [
|
|
||||||
_HelpSection(
|
|
||||||
icon: '⚔',
|
|
||||||
title: isKorean
|
|
||||||
? '전투 시스템'
|
|
||||||
: isJapanese
|
|
||||||
? '戦闘システム'
|
|
||||||
: 'Combat System',
|
|
||||||
content: isKorean
|
|
||||||
? '전투는 자동으로 진행됩니다. 플레이어와 몬스터가 번갈아 공격하며, '
|
|
||||||
'공격 속도(Attack Speed)에 따라 공격 빈도가 결정됩니다.'
|
|
||||||
: isJapanese
|
|
||||||
? '戦闘は自動で進行します。プレイヤーとモンスターが交互に攻撃し、'
|
|
||||||
'攻撃速度(Attack Speed)によって攻撃頻度が決まります。'
|
|
||||||
: 'Combat is automatic. Player and monster take turns attacking, '
|
|
||||||
'with attack frequency based on Attack Speed.',
|
|
||||||
),
|
|
||||||
const SizedBox(height: 12),
|
|
||||||
_HelpSection(
|
|
||||||
icon: '🛡',
|
|
||||||
title: isKorean
|
|
||||||
? '방어 메카닉'
|
|
||||||
: isJapanese
|
|
||||||
? '防御メカニック'
|
|
||||||
: 'Defense Mechanics',
|
|
||||||
content: isKorean
|
|
||||||
? '• 회피(Evasion): DEX 기반, 공격을 완전히 피함\n'
|
|
||||||
'• 방패 방어(Block): 방패 장착 시, 피해 감소\n'
|
|
||||||
'• 무기 쳐내기(Parry): 무기로 공격 일부 막음\n'
|
|
||||||
'• 방어력(DEF): 모든 피해에서 차감'
|
|
||||||
: isJapanese
|
|
||||||
? '• 回避(Evasion): DEX基準、攻撃を完全に回避\n'
|
|
||||||
'• 盾防御(Block): 盾装備時、ダメージ軽減\n'
|
|
||||||
'• 武器受け流し(Parry): 武器で攻撃を一部防ぐ\n'
|
|
||||||
'• 防御力(DEF): 全ダメージから差し引き'
|
|
||||||
: '• Evasion: DEX-based, completely avoid attacks\n'
|
|
||||||
'• Block: With shield, reduce damage\n'
|
|
||||||
'• Parry: Deflect some damage with weapon\n'
|
|
||||||
'• DEF: Subtracted from all damage',
|
|
||||||
),
|
|
||||||
const SizedBox(height: 12),
|
|
||||||
_HelpSection(
|
|
||||||
icon: '♻',
|
|
||||||
title: isKorean
|
|
||||||
? '부활 시스템'
|
|
||||||
: isJapanese
|
|
||||||
? '復活システム'
|
|
||||||
: 'Revival System',
|
|
||||||
content: isKorean
|
|
||||||
? '사망 시 두 가지 부활 방법이 있습니다:\n'
|
|
||||||
'• 기본 부활: 장비 1개 제물, HP/MP 회복\n'
|
|
||||||
'• 광고 부활: 아이템 보존, HP 100%, 10분 자동부활\n'
|
|
||||||
'유료 유저는 항상 광고 없이 부활 가능합니다.'
|
|
||||||
: isJapanese
|
|
||||||
? '死亡時に2つの復活方法があります:\n'
|
|
||||||
'• 基本復活: 装備1つ消費、HP/MP回復\n'
|
|
||||||
'• 広告復活: アイテム保存、HP100%、10分自動復活\n'
|
|
||||||
'課金ユーザーは常に広告なしで復活可能です。'
|
|
||||||
: 'Two revival methods on death:\n'
|
|
||||||
'• Basic: Sacrifice 1 equipment, restore HP/MP\n'
|
|
||||||
'• Ad Revival: Keep items, 100% HP, 10-min auto-revive\n'
|
|
||||||
'Paid users can always revive without ads.',
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// 스킬 도움말 뷰
|
|
||||||
class _SkillsHelpView extends StatelessWidget {
|
|
||||||
const _SkillsHelpView({required this.isKorean, required this.isJapanese});
|
|
||||||
|
|
||||||
final bool isKorean;
|
|
||||||
final bool isJapanese;
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return ListView(
|
|
||||||
padding: const EdgeInsets.all(12),
|
|
||||||
children: [
|
|
||||||
_HelpSection(
|
|
||||||
icon: '✧',
|
|
||||||
title: isKorean
|
|
||||||
? '스킬 종류'
|
|
||||||
: isJapanese
|
|
||||||
? 'スキル種類'
|
|
||||||
: 'Skill Types',
|
|
||||||
content: isKorean
|
|
||||||
? '• 공격(Attack): 적에게 직접 피해\n'
|
|
||||||
'• 회복(Heal): HP/MP 회복\n'
|
|
||||||
'• 버프(Buff): 자신에게 유리한 효과\n'
|
|
||||||
'• 디버프(Debuff): 적에게 불리한 효과\n'
|
|
||||||
'• DOT: 시간에 걸쳐 지속 피해'
|
|
||||||
: isJapanese
|
|
||||||
? '• 攻撃(Attack): 敵に直接ダメージ\n'
|
|
||||||
'• 回復(Heal): HP/MP回復\n'
|
|
||||||
'• バフ(Buff): 自分に有利な効果\n'
|
|
||||||
'• デバフ(Debuff): 敵に不利な効果\n'
|
|
||||||
'• DOT: 時間経過でダメージ'
|
|
||||||
: '• Attack: Deal direct damage\n'
|
|
||||||
'• Heal: Restore HP/MP\n'
|
|
||||||
'• Buff: Beneficial effects on self\n'
|
|
||||||
'• Debuff: Harmful effects on enemies\n'
|
|
||||||
'• DOT: Damage over time',
|
|
||||||
),
|
|
||||||
const SizedBox(height: 12),
|
|
||||||
_HelpSection(
|
|
||||||
icon: '🤖',
|
|
||||||
title: isKorean
|
|
||||||
? '자동 스킬 선택'
|
|
||||||
: isJapanese
|
|
||||||
? '自動スキル選択'
|
|
||||||
: 'Auto Skill Selection',
|
|
||||||
content: isKorean
|
|
||||||
? '스킬은 AI가 자동으로 선택합니다:\n'
|
|
||||||
'1. HP 낮음 → 회복 스킬 우선\n'
|
|
||||||
'2. HP/MP 충분 → 버프 스킬 사용\n'
|
|
||||||
'3. 몬스터 HP 높음 → 디버프 적용\n'
|
|
||||||
'4. 공격 스킬로 마무리'
|
|
||||||
: isJapanese
|
|
||||||
? 'スキルはAIが自動選択します:\n'
|
|
||||||
'1. HP低い → 回復スキル優先\n'
|
|
||||||
'2. HP/MP十分 → バフスキル使用\n'
|
|
||||||
'3. モンスターHP高い → デバフ適用\n'
|
|
||||||
'4. 攻撃スキルで仕上げ'
|
|
||||||
: 'Skills are auto-selected by AI:\n'
|
|
||||||
'1. Low HP → Heal skills priority\n'
|
|
||||||
'2. HP/MP sufficient → Use buff skills\n'
|
|
||||||
'3. Monster HP high → Apply debuffs\n'
|
|
||||||
'4. Finish with attack skills',
|
|
||||||
),
|
|
||||||
const SizedBox(height: 12),
|
|
||||||
_HelpSection(
|
|
||||||
icon: '★',
|
|
||||||
title: isKorean
|
|
||||||
? '스킬 랭크'
|
|
||||||
: isJapanese
|
|
||||||
? 'スキルランク'
|
|
||||||
: 'Skill Ranks',
|
|
||||||
content: isKorean
|
|
||||||
? '스킬 랭크는 I, II, III... 형태로 표시됩니다. 랭크가 높을수록:\n'
|
|
||||||
'• 데미지/회복량 증가\n'
|
|
||||||
'• MP 소모량 감소\n'
|
|
||||||
'• 쿨타임 감소\n'
|
|
||||||
'레벨업 시 랜덤하게 스킬을 배웁니다.'
|
|
||||||
: isJapanese
|
|
||||||
? 'スキルランクはI、II、III...の形式で表示されます。ランクが高いほど:\n'
|
|
||||||
'• ダメージ/回復量増加\n'
|
|
||||||
'• MP消費量減少\n'
|
|
||||||
'• クールタイム減少\n'
|
|
||||||
'レベルアップ時にランダムでスキルを習得します。'
|
|
||||||
: 'Skill ranks are displayed as I, II, III... Higher rank means:\n'
|
|
||||||
'• More damage/healing\n'
|
|
||||||
'• Less MP cost\n'
|
|
||||||
'• Shorter cooldown\n'
|
|
||||||
'Learn random skills on level up.',
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// UI 도움말 뷰
|
|
||||||
class _UIHelpView extends StatelessWidget {
|
|
||||||
const _UIHelpView({required this.isKorean, required this.isJapanese});
|
|
||||||
|
|
||||||
final bool isKorean;
|
|
||||||
final bool isJapanese;
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return ListView(
|
|
||||||
padding: const EdgeInsets.all(12),
|
|
||||||
children: [
|
|
||||||
_HelpSection(
|
|
||||||
icon: '📺',
|
|
||||||
title: isKorean
|
|
||||||
? '화면 구성'
|
|
||||||
: isJapanese
|
|
||||||
? '画面構成'
|
|
||||||
: 'Screen Layout',
|
|
||||||
content: isKorean
|
|
||||||
? '모바일에서는 좌우 스와이프로 7개 페이지 탐색:\n'
|
|
||||||
'• 캐릭터: 이름, 레벨, 종족, 직업\n'
|
|
||||||
'• 스탯: STR, DEX, CON, INT 등\n'
|
|
||||||
'• 장비: 무기, 방어구, 액세서리\n'
|
|
||||||
'• 인벤토리: 보유 아이템, 골드\n'
|
|
||||||
'• 스킬북: 습득한 스킬 목록\n'
|
|
||||||
'• 퀘스트: 진행 중인 퀘스트\n'
|
|
||||||
'• 플롯: 스토리 진행 상황'
|
|
||||||
: isJapanese
|
|
||||||
? 'モバイルでは左右スワイプで7ページ切替:\n'
|
|
||||||
'• キャラクター: 名前、レベル、種族、職業\n'
|
|
||||||
'• ステータス: STR、DEX、CON、INT等\n'
|
|
||||||
'• 装備: 武器、防具、アクセサリー\n'
|
|
||||||
'• インベントリ: 所持アイテム、ゴールド\n'
|
|
||||||
'• スキルブック: 習得したスキル一覧\n'
|
|
||||||
'• クエスト: 進行中のクエスト\n'
|
|
||||||
'• プロット: ストーリー進行状況'
|
|
||||||
: 'On mobile, swipe left/right to browse 7 pages:\n'
|
|
||||||
'• Character: Name, level, race, class\n'
|
|
||||||
'• Stats: STR, DEX, CON, INT, etc.\n'
|
|
||||||
'• Equipment: Weapons, armor, accessories\n'
|
|
||||||
'• Inventory: Items, gold\n'
|
|
||||||
'• Skillbook: Learned skills\n'
|
|
||||||
'• Quests: Active quests\n'
|
|
||||||
'• Plot: Story progress',
|
|
||||||
),
|
|
||||||
const SizedBox(height: 12),
|
|
||||||
_HelpSection(
|
|
||||||
icon: '⏩',
|
|
||||||
title: isKorean
|
|
||||||
? '속도 조절'
|
|
||||||
: isJapanese
|
|
||||||
? '速度調整'
|
|
||||||
: 'Speed Control',
|
|
||||||
content: isKorean
|
|
||||||
? '게임 속도를 조절할 수 있습니다:\n'
|
|
||||||
'• 1x: 기본 속도\n'
|
|
||||||
'• 2x: 명예의 전당 캐릭터 1명 이상 시 해금\n'
|
|
||||||
'• 5x: 광고 시청으로 5분간 부스트 (유료 유저 무료)'
|
|
||||||
: isJapanese
|
|
||||||
? 'ゲーム速度を調整できます:\n'
|
|
||||||
'• 1x: 基本速度\n'
|
|
||||||
'• 2x: 殿堂入り1人以上で解放\n'
|
|
||||||
'• 5x: 広告視聴で5分間ブースト(課金ユーザー無料)'
|
|
||||||
: 'Adjust game speed:\n'
|
|
||||||
'• 1x: Normal speed\n'
|
|
||||||
'• 2x: Unlocked with 1+ Hall of Fame character\n'
|
|
||||||
'• 5x: 5-min boost via ad (free for paid users)',
|
|
||||||
),
|
|
||||||
const SizedBox(height: 12),
|
|
||||||
_HelpSection(
|
|
||||||
icon: '🏆',
|
|
||||||
title: isKorean
|
|
||||||
? '명예의 전당'
|
|
||||||
: isJapanese
|
|
||||||
? '殿堂入り'
|
|
||||||
: 'Hall of Fame',
|
|
||||||
content: isKorean
|
|
||||||
? 'Act V를 클리어하면 캐릭터가 명예의 전당에 등록됩니다.\n'
|
|
||||||
'• 캐릭터 이름, 레벨, 스탯이 영구 기록됨\n'
|
|
||||||
'• 첫 등록 시 2x 속도 영구 해금\n'
|
|
||||||
'• 2명 이상 등록 시 로컬 아레나 기능 해금'
|
|
||||||
: isJapanese
|
|
||||||
? 'Act Vクリアでキャラクターが殿堂入りします。\n'
|
|
||||||
'• キャラクター名、レベル、ステータスが永久記録\n'
|
|
||||||
'• 初登録で2倍速が永久解放\n'
|
|
||||||
'• 2人以上でローカルアリーナ機能解放'
|
|
||||||
: 'Characters enter Hall of Fame upon completing Act V.\n'
|
|
||||||
'• Name, level, stats are permanently recorded\n'
|
|
||||||
'• First entry permanently unlocks 2x speed\n'
|
|
||||||
'• 2+ entries unlock Local Arena feature',
|
|
||||||
),
|
|
||||||
const SizedBox(height: 12),
|
|
||||||
_HelpSection(
|
|
||||||
icon: '⏸',
|
|
||||||
title: isKorean
|
|
||||||
? '일시정지'
|
|
||||||
: isJapanese
|
|
||||||
? '一時停止'
|
|
||||||
: 'Pause',
|
|
||||||
content: isKorean
|
|
||||||
? '일시정지 버튼으로 게임을 멈출 수 있습니다. '
|
|
||||||
'일시정지 중에도 UI를 확인하고 설정을 변경할 수 있습니다.'
|
|
||||||
: isJapanese
|
|
||||||
? '一時停止ボタンでゲームを止められます。'
|
|
||||||
'一時停止中もUIを確認し設定を変更できます。'
|
|
||||||
: 'Use the pause button to stop the game. '
|
|
||||||
'You can still view UI and change settings while paused.',
|
|
||||||
),
|
|
||||||
const SizedBox(height: 12),
|
|
||||||
_HelpSection(
|
|
||||||
icon: '📊',
|
|
||||||
title: isKorean
|
|
||||||
? '통계'
|
|
||||||
: isJapanese
|
|
||||||
? '統計'
|
|
||||||
: 'Statistics',
|
|
||||||
content: isKorean
|
|
||||||
? '통계 버튼에서 현재 세션과 누적 게임 통계를 확인할 수 있습니다. '
|
|
||||||
'처치한 몬스터, 획득 골드, 플레이 시간 등을 추적합니다.'
|
|
||||||
: isJapanese
|
|
||||||
? '統計ボタンで現在のセッションと累積ゲーム統計を確認できます。'
|
|
||||||
'倒したモンスター、獲得ゴールド、プレイ時間などを追跡します。'
|
|
||||||
: 'View current session and cumulative stats in the statistics button. '
|
|
||||||
'Track monsters killed, gold earned, play time, etc.',
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// 레트로 스타일 도움말 섹션 위젯
|
|
||||||
class _HelpSection extends StatelessWidget {
|
|
||||||
const _HelpSection({
|
|
||||||
required this.icon,
|
|
||||||
required this.title,
|
|
||||||
required this.content,
|
|
||||||
});
|
|
||||||
|
|
||||||
final String icon;
|
|
||||||
final String title;
|
|
||||||
final String content;
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
// 섹션 헤더 (MP 블루 테마 인식)
|
|
||||||
RetroSectionHeader(
|
|
||||||
title: title,
|
|
||||||
icon: icon,
|
|
||||||
accentColor: RetroColors.mpOf(context),
|
|
||||||
),
|
|
||||||
// 내용
|
|
||||||
RetroInfoBox(content: content),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user