refactor(model): game_state.dart 분할 (SRP 개선)
- Stats, Traits, Inventory, Equipment 등 11개 파일로 분리 - 단일 책임 원칙 적용으로 유지보수성 향상
This commit is contained in:
96
lib/src/core/model/death_info.dart
Normal file
96
lib/src/core/model/death_info.dart
Normal file
@@ -0,0 +1,96 @@
|
||||
import 'package:asciineverdie/src/core/model/combat_event.dart';
|
||||
import 'package:asciineverdie/src/core/model/equipment_item.dart';
|
||||
import 'package:asciineverdie/src/core/model/equipment_slot.dart';
|
||||
import 'package:asciineverdie/src/core/model/item_stats.dart';
|
||||
|
||||
/// 사망 원인 (Death Cause)
|
||||
enum DeathCause {
|
||||
/// 몬스터에 의한 사망
|
||||
monster,
|
||||
|
||||
/// 자해 스킬에 의한 사망
|
||||
selfDamage,
|
||||
|
||||
/// 환경 피해에 의한 사망
|
||||
environment,
|
||||
}
|
||||
|
||||
/// 사망 정보 (Phase 4)
|
||||
///
|
||||
/// 사망 시점의 정보와 상실한 아이템을 기록
|
||||
class DeathInfo {
|
||||
const DeathInfo({
|
||||
required this.cause,
|
||||
required this.killerName,
|
||||
required this.lostEquipmentCount,
|
||||
required this.goldAtDeath,
|
||||
required this.levelAtDeath,
|
||||
required this.timestamp,
|
||||
this.lostItemName,
|
||||
this.lostItemSlot,
|
||||
this.lostItemRarity,
|
||||
this.lostItem,
|
||||
this.lastCombatEvents = const [],
|
||||
});
|
||||
|
||||
/// 사망 원인
|
||||
final DeathCause cause;
|
||||
|
||||
/// 사망시킨 몬스터/원인 이름
|
||||
final String killerName;
|
||||
|
||||
/// 상실한 장비 개수 (0 또는 1)
|
||||
final int lostEquipmentCount;
|
||||
|
||||
/// 제물로 바친 아이템 이름 (null이면 없음)
|
||||
final String? lostItemName;
|
||||
|
||||
/// 제물로 바친 아이템 슬롯 (null이면 없음)
|
||||
final EquipmentSlot? lostItemSlot;
|
||||
|
||||
/// 제물로 바친 아이템 희귀도 (null이면 없음)
|
||||
final ItemRarity? lostItemRarity;
|
||||
|
||||
/// 상실한 장비 전체 정보 (광고 부활 시 복구용)
|
||||
final EquipmentItem? lostItem;
|
||||
|
||||
/// 사망 시점 골드
|
||||
final int goldAtDeath;
|
||||
|
||||
/// 사망 시점 레벨
|
||||
final int levelAtDeath;
|
||||
|
||||
/// 사망 시각 (밀리초)
|
||||
final int timestamp;
|
||||
|
||||
/// 사망 직전 전투 이벤트 (최대 10개)
|
||||
final List<CombatEvent> lastCombatEvents;
|
||||
|
||||
DeathInfo copyWith({
|
||||
DeathCause? cause,
|
||||
String? killerName,
|
||||
int? lostEquipmentCount,
|
||||
String? lostItemName,
|
||||
EquipmentSlot? lostItemSlot,
|
||||
ItemRarity? lostItemRarity,
|
||||
EquipmentItem? lostItem,
|
||||
int? goldAtDeath,
|
||||
int? levelAtDeath,
|
||||
int? timestamp,
|
||||
List<CombatEvent>? lastCombatEvents,
|
||||
}) {
|
||||
return DeathInfo(
|
||||
cause: cause ?? this.cause,
|
||||
killerName: killerName ?? this.killerName,
|
||||
lostEquipmentCount: lostEquipmentCount ?? this.lostEquipmentCount,
|
||||
lostItemName: lostItemName ?? this.lostItemName,
|
||||
lostItemSlot: lostItemSlot ?? this.lostItemSlot,
|
||||
lostItemRarity: lostItemRarity ?? this.lostItemRarity,
|
||||
lostItem: lostItem ?? this.lostItem,
|
||||
goldAtDeath: goldAtDeath ?? this.goldAtDeath,
|
||||
levelAtDeath: levelAtDeath ?? this.levelAtDeath,
|
||||
timestamp: timestamp ?? this.timestamp,
|
||||
lastCombatEvents: lastCombatEvents ?? this.lastCombatEvents,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user