97 lines
2.7 KiB
Dart
97 lines
2.7 KiB
Dart
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,
|
|
);
|
|
}
|
|
}
|