refactor(game): 게임 화면 및 위젯 정리

This commit is contained in:
JiWoong Sul
2026-01-12 16:17:20 +09:00
parent 104d23cdfd
commit cbbbbba1a5
13 changed files with 662 additions and 570 deletions

View File

@@ -247,74 +247,163 @@ class _AsciiAnimationCardState extends State<AsciiAnimationCard> {
CombatEventType.playerAttack => (
BattlePhase.prepare,
event.isCritical,
false, false, false, false, false, false, false,
false,
false,
false,
false,
false,
false,
false,
),
// 스킬 사용 → prepare 페이즈부터 시작 + 스킬 이펙트
CombatEventType.playerSkill => (
BattlePhase.prepare,
event.isCritical,
false, false, true, false, false, false, false,
false,
false,
true,
false,
false,
false,
false,
),
// 몬스터 공격 → prepare 페이즈부터 시작
CombatEventType.monsterAttack => (
BattlePhase.prepare,
false, false, false, false, false, false, false, false,
false,
false,
false,
false,
false,
false,
false,
false,
),
// 블록 → hit 페이즈 + 블록 이펙트 + 텍스트
CombatEventType.playerBlock => (
BattlePhase.hit,
false, true, false, false, false, false, false, false,
false,
true,
false,
false,
false,
false,
false,
false,
),
// 패리 → hit 페이즈 + 패리 이펙트 + 텍스트
CombatEventType.playerParry => (
BattlePhase.hit,
false, false, true, false, false, false, false, false,
false,
false,
true,
false,
false,
false,
false,
false,
),
// 플레이어 회피 → recover 페이즈 + 회피 텍스트
CombatEventType.playerEvade => (
BattlePhase.recover,
false, false, false, false, true, false, false, false,
false,
false,
false,
false,
true,
false,
false,
false,
),
// 몬스터 회피 → idle 페이즈 + 미스 텍스트
CombatEventType.monsterEvade => (
BattlePhase.idle,
false, false, false, false, false, true, false, false,
false,
false,
false,
false,
false,
true,
false,
false,
),
// 회복/버프 → idle 페이즈 유지
CombatEventType.playerHeal => (
BattlePhase.idle,
false, false, false, false, false, false, false, false,
false,
false,
false,
false,
false,
false,
false,
false,
),
CombatEventType.playerBuff => (
BattlePhase.idle,
false, false, false, false, false, false, false, false,
false,
false,
false,
false,
false,
false,
false,
false,
),
// 디버프 적용 → idle 페이즈 + 디버프 텍스트
CombatEventType.playerDebuff => (
BattlePhase.idle,
false, false, false, false, false, false, true, false,
false,
false,
false,
false,
false,
false,
true,
false,
),
// DOT 틱 → attack 페이즈 + DOT 텍스트
CombatEventType.dotTick => (
BattlePhase.attack,
false, false, false, false, false, false, false, true,
false,
false,
false,
false,
false,
false,
false,
true,
),
// 물약 사용 → idle 페이즈 유지
CombatEventType.playerPotion => (
BattlePhase.idle,
false, false, false, false, false, false, false, false,
false,
false,
false,
false,
false,
false,
false,
false,
),
// 물약 드랍 → idle 페이즈 유지
CombatEventType.potionDrop => (
BattlePhase.idle,
false, false, false, false, false, false, false, false,
false,
false,
false,
false,
false,
false,
false,
false,
),
};
@@ -375,7 +464,8 @@ class _AsciiAnimationCardState extends State<AsciiAnimationCard> {
// 특수 애니메이션 프레임 간격 계산 (200ms tick 기준)
// 예: resurrection 600ms → 600/200 = 3 tick마다 1 프레임
final frameInterval =
(specialAnimationFrameIntervals[_currentSpecialAnimation] ?? 200) ~/
(specialAnimationFrameIntervals[_currentSpecialAnimation] ??
200) ~/
200;
if (_specialTick >= frameInterval) {
_specialTick = 0;
@@ -576,9 +666,7 @@ class _AsciiAnimationCardState extends State<AsciiAnimationCard> {
);
} else if (isSpecial) {
// 특수 애니메이션: 포지티브 색상 테두리
borderEffect = Border.all(
color: positiveColor.withValues(alpha: 0.5),
);
borderEffect = Border.all(color: positiveColor.withValues(alpha: 0.5));
}
return Container(