feat(hall-of-fame): 명예의 전당 대폭 개선 및 장비/아이템 직렬화

- HallOfFameEntry에 finalEquipmentDetails 추가 (상세 장비 정보)
- EquipmentItem/ItemStats에 toJson/fromJson 직렬화 추가
- 명예의 전당 상세 다이얼로그 UI 대폭 개선
- Canvas 타운/워킹 애니메이션 컴포저 개선
- 캐릭터 생성 화면 UI 개선
- 게임 텍스트 다국어 지원 확장
This commit is contained in:
JiWoong Sul
2025-12-24 18:34:00 +09:00
parent d82bf05978
commit dd83923ddf
9 changed files with 730 additions and 153 deletions

View File

@@ -93,8 +93,8 @@ class _AsciiAnimationCardState extends State<AsciiAnimationCard> {
// Composer 인스턴스들
CanvasBattleComposer? _battleComposer;
final _walkingComposer = const CanvasWalkingComposer();
final _townComposer = const CanvasTownComposer();
CanvasWalkingComposer? _walkingComposer;
CanvasTownComposer? _townComposer;
final _specialComposer = const CanvasSpecialComposer();
// 전투 애니메이션 상태
@@ -370,12 +370,15 @@ class _AsciiAnimationCardState extends State<AsciiAnimationCard> {
case AsciiAnimationType.town:
_animationMode = AnimationMode.town;
_townComposer = CanvasTownComposer(raceId: widget.raceId);
case AsciiAnimationType.walking:
_animationMode = AnimationMode.walking;
_walkingComposer = CanvasWalkingComposer(raceId: widget.raceId);
default:
_animationMode = AnimationMode.walking;
_walkingComposer = CanvasWalkingComposer(raceId: widget.raceId);
}
// 일시정지 상태면 타이머 시작하지 않음
@@ -445,8 +448,10 @@ class _AsciiAnimationCardState extends State<AsciiAnimationCard> {
_globalTick,
) ??
[AsciiLayer.empty()],
AnimationMode.walking => _walkingComposer.composeLayers(_globalTick),
AnimationMode.town => _townComposer.composeLayers(_globalTick),
AnimationMode.walking =>
_walkingComposer?.composeLayers(_globalTick) ?? [AsciiLayer.empty()],
AnimationMode.town =>
_townComposer?.composeLayers(_globalTick) ?? [AsciiLayer.empty()],
AnimationMode.special => _specialComposer.composeLayers(
_currentSpecialAnimation ?? AsciiAnimationType.levelUp,
_currentFrame,