feat(game): 게임 시스템 전면 개편 및 다국어 지원 확장
## 스킬 시스템 개선 - skill_data.dart: 스킬 데이터 구조 전면 개편 (+1176 라인) - skill_service.dart: 스킬 발동 로직 확장 및 버프 시스템 연동 - skill.dart: 스킬 모델 개선, 쿨다운/효과 타입 추가 ## Canvas 애니메이션 리팩토링 - battle_composer.dart 삭제 (레거시 위젯 기반 렌더러) - monster_colors.dart 삭제 (AsciiCell 색상 시스템으로 통합) - canvas_battle_composer.dart: z-index 정렬 (몬스터 z=1, 캐릭터 z=2, 이펙트 z=3) - ascii_cell.dart, ascii_layer.dart: 코드 정리 ## UI/UX 개선 - hp_mp_bar.dart: l10n 적용, 몬스터 HP 바 컴팩트화 - death_overlay.dart: 사망 화면 개선 - equipment_stats_panel.dart: 장비 스탯 표시 확장 - active_buff_panel.dart: 버프 패널 개선 - notification_overlay.dart: 알림 시스템 개선 ## 다국어 지원 확장 - game_text_l10n.dart: 게임 텍스트 통합 (+758 라인) - 한국어/일본어/영어/중국어 번역 업데이트 - ARB 파일 동기화 ## 게임 로직 개선 - progress_service.dart: 진행 로직 리팩토링 - combat_calculator.dart: 전투 계산 로직 개선 - stat_calculator.dart: 스탯 계산 시스템 개선 - story_service.dart: 스토리 진행 로직 개선 ## 기타 - theme_preferences.dart 삭제 (미사용) - 테스트 파일 업데이트 - class_data.dart: 클래스 데이터 정리
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:askiineverdie/data/game_text_l10n.dart' as l10n;
|
||||
import 'package:askiineverdie/src/core/model/skill.dart';
|
||||
|
||||
/// 활성 버프 패널 위젯
|
||||
@@ -18,10 +19,10 @@ class ActiveBuffPanel extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (activeBuffs.isEmpty) {
|
||||
return const Center(
|
||||
return Center(
|
||||
child: Text(
|
||||
'No active buffs',
|
||||
style: TextStyle(
|
||||
l10n.uiNoActiveBuffs,
|
||||
style: const TextStyle(
|
||||
fontSize: 11,
|
||||
color: Colors.grey,
|
||||
fontStyle: FontStyle.italic,
|
||||
@@ -43,10 +44,7 @@ class ActiveBuffPanel extends StatelessWidget {
|
||||
|
||||
/// 개별 버프 행 위젯
|
||||
class _BuffRow extends StatelessWidget {
|
||||
const _BuffRow({
|
||||
required this.buff,
|
||||
required this.currentMs,
|
||||
});
|
||||
const _BuffRow({required this.buff, required this.currentMs});
|
||||
|
||||
final ActiveBuff buff;
|
||||
final int currentMs;
|
||||
@@ -66,11 +64,7 @@ class _BuffRow extends StatelessWidget {
|
||||
Row(
|
||||
children: [
|
||||
// 버프 아이콘
|
||||
const Icon(
|
||||
Icons.trending_up,
|
||||
size: 14,
|
||||
color: Colors.lightBlue,
|
||||
),
|
||||
const Icon(Icons.trending_up, size: 14, color: Colors.lightBlue),
|
||||
const SizedBox(width: 4),
|
||||
|
||||
// 버프 이름
|
||||
@@ -92,8 +86,9 @@ class _BuffRow extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 10,
|
||||
color: remainingMs < 3000 ? Colors.orange : Colors.grey,
|
||||
fontWeight:
|
||||
remainingMs < 3000 ? FontWeight.bold : FontWeight.normal,
|
||||
fontWeight: remainingMs < 3000
|
||||
? FontWeight.bold
|
||||
: FontWeight.normal,
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -117,11 +112,7 @@ class _BuffRow extends StatelessWidget {
|
||||
// 효과 목록
|
||||
if (modifiers.isNotEmpty) ...[
|
||||
const SizedBox(height: 2),
|
||||
Wrap(
|
||||
spacing: 6,
|
||||
runSpacing: 2,
|
||||
children: modifiers,
|
||||
),
|
||||
Wrap(spacing: 6, runSpacing: 2, children: modifiers),
|
||||
],
|
||||
],
|
||||
),
|
||||
@@ -134,35 +125,43 @@ class _BuffRow extends StatelessWidget {
|
||||
final effect = buff.effect;
|
||||
|
||||
if (effect.atkModifier != 0) {
|
||||
modifiers.add(_ModifierChip(
|
||||
label: 'ATK',
|
||||
value: effect.atkModifier,
|
||||
isPositive: effect.atkModifier > 0,
|
||||
));
|
||||
modifiers.add(
|
||||
_ModifierChip(
|
||||
label: 'ATK',
|
||||
value: effect.atkModifier,
|
||||
isPositive: effect.atkModifier > 0,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
if (effect.defModifier != 0) {
|
||||
modifiers.add(_ModifierChip(
|
||||
label: 'DEF',
|
||||
value: effect.defModifier,
|
||||
isPositive: effect.defModifier > 0,
|
||||
));
|
||||
modifiers.add(
|
||||
_ModifierChip(
|
||||
label: 'DEF',
|
||||
value: effect.defModifier,
|
||||
isPositive: effect.defModifier > 0,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
if (effect.criRateModifier != 0) {
|
||||
modifiers.add(_ModifierChip(
|
||||
label: 'CRI',
|
||||
value: effect.criRateModifier,
|
||||
isPositive: effect.criRateModifier > 0,
|
||||
));
|
||||
modifiers.add(
|
||||
_ModifierChip(
|
||||
label: 'CRI',
|
||||
value: effect.criRateModifier,
|
||||
isPositive: effect.criRateModifier > 0,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
if (effect.evasionModifier != 0) {
|
||||
modifiers.add(_ModifierChip(
|
||||
label: 'EVA',
|
||||
value: effect.evasionModifier,
|
||||
isPositive: effect.evasionModifier > 0,
|
||||
));
|
||||
modifiers.add(
|
||||
_ModifierChip(
|
||||
label: 'EVA',
|
||||
value: effect.evasionModifier,
|
||||
isPositive: effect.evasionModifier > 0,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
return modifiers;
|
||||
|
||||
Reference in New Issue
Block a user