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:
@@ -209,11 +209,8 @@ class SkillSystemState {
|
||||
/// 게임 진행 경과 시간 (밀리초, 스킬 쿨타임 계산용)
|
||||
final int elapsedMs;
|
||||
|
||||
factory SkillSystemState.empty() => const SkillSystemState(
|
||||
skillStates: [],
|
||||
activeBuffs: [],
|
||||
elapsedMs: 0,
|
||||
);
|
||||
factory SkillSystemState.empty() =>
|
||||
const SkillSystemState(skillStates: [], activeBuffs: [], elapsedMs: 0);
|
||||
|
||||
/// 특정 스킬 상태 가져오기
|
||||
SkillState? getSkillState(String skillId) {
|
||||
@@ -224,7 +221,8 @@ class SkillSystemState {
|
||||
}
|
||||
|
||||
/// 버프 효과 합산 (동일 버프는 중복 적용 안 됨)
|
||||
({double atkMod, double defMod, double criMod, double evasionMod}) get totalBuffModifiers {
|
||||
({double atkMod, double defMod, double criMod, double evasionMod})
|
||||
get totalBuffModifiers {
|
||||
double atkMod = 0;
|
||||
double defMod = 0;
|
||||
double criMod = 0;
|
||||
@@ -243,7 +241,12 @@ class SkillSystemState {
|
||||
}
|
||||
}
|
||||
|
||||
return (atkMod: atkMod, defMod: defMod, criMod: criMod, evasionMod: evasionMod);
|
||||
return (
|
||||
atkMod: atkMod,
|
||||
defMod: defMod,
|
||||
criMod: criMod,
|
||||
evasionMod: evasionMod,
|
||||
);
|
||||
}
|
||||
|
||||
SkillSystemState copyWith({
|
||||
@@ -477,10 +480,8 @@ class Inventory {
|
||||
/// Phase 2에서 EquipmentItem 기반으로 확장됨.
|
||||
/// 기존 문자열 API(weapon, shield 등)는 호환성을 위해 유지.
|
||||
class Equipment {
|
||||
Equipment({
|
||||
required this.items,
|
||||
required this.bestIndex,
|
||||
}) : assert(items.length == slotCount, 'Equipment must have $slotCount items');
|
||||
Equipment({required this.items, required this.bestIndex})
|
||||
: assert(items.length == slotCount, 'Equipment must have $slotCount items');
|
||||
|
||||
/// 장비 아이템 목록 (11개 슬롯)
|
||||
final List<EquipmentItem> items;
|
||||
@@ -525,10 +526,7 @@ class Equipment {
|
||||
|
||||
/// 모든 장비 스탯 합산
|
||||
ItemStats get totalStats {
|
||||
return items.fold(
|
||||
ItemStats.empty,
|
||||
(sum, item) => sum + item.stats,
|
||||
);
|
||||
return items.fold(ItemStats.empty, (sum, item) => sum + item.stats);
|
||||
}
|
||||
|
||||
/// 모든 장비 무게 합산
|
||||
@@ -647,10 +645,7 @@ class Equipment {
|
||||
return Equipment(items: newItems, bestIndex: bestIndex);
|
||||
}
|
||||
|
||||
Equipment copyWith({
|
||||
List<EquipmentItem>? items,
|
||||
int? bestIndex,
|
||||
}) {
|
||||
Equipment copyWith({List<EquipmentItem>? items, int? bestIndex}) {
|
||||
return Equipment(
|
||||
items: items ?? List<EquipmentItem>.from(this.items),
|
||||
bestIndex: bestIndex ?? this.bestIndex,
|
||||
|
||||
Reference in New Issue
Block a user