fix(animation): 레거시 애니메이션 캐릭터 세로 위치 통일
- 모든 애니메이션 캐릭터 위치를 전투 기준에 맞춤 (머리=4, 몸통=5, 다리=6) - townAnimation: 건물 1줄 확장하여 베이스와 다리 같은 줄에 배치 - levelUpAnimation: 캐릭터 1줄 아래로 이동 - questCompleteAnimation: 캐릭터 2줄 아래로 이동 - actCompleteAnimation: 캐릭터 2줄 아래로 이동
This commit is contained in:
@@ -208,52 +208,53 @@ const battleAnimationBeast = AsciiAnimationData(
|
||||
);
|
||||
|
||||
/// 마을/상점 애니메이션 (8줄 x 40자 고정)
|
||||
/// 캐릭터 위치: 머리=4, 몸통=5, 다리=6 (전투 애니메이션 기준)
|
||||
const townAnimation = AsciiAnimationData(
|
||||
frames: [
|
||||
// 프레임 1: 상점 앞 대기
|
||||
' \n'
|
||||
' ___________ \n'
|
||||
' / SHOP \\ o \n'
|
||||
' | [======] | /|\\ \n'
|
||||
' | @@@@ | / \\ \n'
|
||||
' | ITEMS | \n'
|
||||
' |___________| \n'
|
||||
' ___________ \n'
|
||||
' / SHOP \\ \n'
|
||||
' | [======] | \n'
|
||||
' | @@@@ | \n'
|
||||
' | ITEMS | o \n'
|
||||
' | | /|\\ \n'
|
||||
' |___________| / \\ \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
// 프레임 2: 이동 중
|
||||
' \n'
|
||||
' ___________ \n'
|
||||
' / SHOP \\ o \n'
|
||||
' | [======] | /|\\ \n'
|
||||
' | @@@@ | / \\ \n'
|
||||
' | ITEMS | \n'
|
||||
' |___________| \n'
|
||||
' ___________ \n'
|
||||
' / SHOP \\ \n'
|
||||
' | [======] | \n'
|
||||
' | @@@@ | \n'
|
||||
' | ITEMS | o \n'
|
||||
' | | /|\\ \n'
|
||||
' |___________| / \\ \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
// 프레임 3: 거래 시작
|
||||
' \n'
|
||||
' ___________ \n'
|
||||
' / SHOP \\ o \$ \n'
|
||||
' | [======] | /|\\ \$ \n'
|
||||
' | @@@@ | / \\ \$ \n'
|
||||
' | ITEMS | \n'
|
||||
' |___________| \n'
|
||||
' ___________ \n'
|
||||
' / SHOP \\ \n'
|
||||
' | [======] | \$ \n'
|
||||
' | @@@@ | \$ \n'
|
||||
' | ITEMS | o \$ \n'
|
||||
' | | /|\\ \n'
|
||||
' |___________| / \\ \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
// 프레임 4: 거래 중
|
||||
' \n'
|
||||
' ___________ \n'
|
||||
' / SHOP \\ o \$\$\$ \n'
|
||||
' | [<====>] | /|\\ \$\$\$ \n'
|
||||
' | @@@@ | / \\ \n'
|
||||
' | SOLD! | \n'
|
||||
' |___________| \n'
|
||||
' ___________ \n'
|
||||
' / SHOP \\ \n'
|
||||
' | [<====>] | \$\$\$ \n'
|
||||
' | @@@@ | \$\$\$ \n'
|
||||
' | SOLD! | o \n'
|
||||
' | | /|\\ \n'
|
||||
' |___________| / \\ \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
// 프레임 5: 거래 완료
|
||||
' \n'
|
||||
' ___________ \n'
|
||||
' / SHOP \\ \\o/ + \n'
|
||||
' | [======] | /|\\ + \n'
|
||||
' | @@@@ | / \\ \n'
|
||||
' | ITEMS | \n'
|
||||
' |___________| \n'
|
||||
' ___________ \n'
|
||||
' / SHOP \\ \n'
|
||||
' | [======] | + \n'
|
||||
' | @@@@ | + \n'
|
||||
' | ITEMS | \\o/ \n'
|
||||
' | | /|\\ \n'
|
||||
' |___________| / \\ \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
],
|
||||
frameIntervalMs: 280,
|
||||
@@ -517,156 +518,159 @@ AsciiAnimationData getBattleAnimation(MonsterCategory category) {
|
||||
}
|
||||
|
||||
/// 레벨업 축하 애니메이션 (8줄 x 40자 고정)
|
||||
/// 캐릭터 위치: 머리=4, 몸통=5, 다리=6 (전투 애니메이션 기준)
|
||||
const levelUpAnimation = AsciiAnimationData(
|
||||
frames: [
|
||||
// 프레임 1: 시작
|
||||
' * * * \n'
|
||||
' * * * \n'
|
||||
' * * \n'
|
||||
' \n'
|
||||
' \\O/ \n'
|
||||
' * /|\\ * \n'
|
||||
' / \\ \n'
|
||||
' * * \n'
|
||||
' * \\O/ * \n'
|
||||
' /|\\ \n'
|
||||
' * / \\ * \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
// 프레임 2: 별 확산
|
||||
' * * * \n'
|
||||
' * * \n'
|
||||
' * * \n'
|
||||
' \n'
|
||||
' * \\O/ * \n'
|
||||
' /|\\ \n'
|
||||
' * / \\ * \n'
|
||||
' * * \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
// 프레임 3: 레벨업 텍스트
|
||||
' * L E V E L U P ! * \n'
|
||||
' * * \n'
|
||||
' * * \n'
|
||||
' \n'
|
||||
' * \\O/ * \n'
|
||||
' /|\\ \n'
|
||||
' * / \\ * \n'
|
||||
' * * \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
// 프레임 4: 빛나는 캐릭터
|
||||
' * * * * * \n'
|
||||
' * * \n'
|
||||
' * * * * \n'
|
||||
' \n'
|
||||
' * \\O/ * \n'
|
||||
' * /|\\ * \n'
|
||||
' * / \\ * \n'
|
||||
' * * * * \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
// 프레임 5: 마무리
|
||||
' + \n'
|
||||
' +++ \n'
|
||||
' +++++ \n'
|
||||
' \n'
|
||||
' \\O/ \n'
|
||||
' /|\\ \n'
|
||||
' / \\ \n'
|
||||
' \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
],
|
||||
frameIntervalMs: 300,
|
||||
);
|
||||
|
||||
/// 퀘스트 완료 애니메이션 (8줄 x 40자 고정)
|
||||
/// 캐릭터 위치: 머리=4, 몸통=5, 다리=6 (전투 애니메이션 기준)
|
||||
const questCompleteAnimation = AsciiAnimationData(
|
||||
frames: [
|
||||
// 프레임 1: 퀘스트 깃발
|
||||
' [=======] \n'
|
||||
' || || \n'
|
||||
' || \\O/ || \n'
|
||||
' || /|\\ || \n'
|
||||
' || / \\ || \n'
|
||||
' || || \n'
|
||||
' ||_____|| \n'
|
||||
' \n'
|
||||
' \\O/ \n'
|
||||
' /|\\ \n'
|
||||
' / \\ \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
// 프레임 2: 승리
|
||||
' [QUEST!] \n'
|
||||
' || || \n'
|
||||
' \\\\O// \n'
|
||||
' /|\\ \n'
|
||||
' / \\ \n'
|
||||
' || || \n'
|
||||
' ||_____|| \n'
|
||||
' \n'
|
||||
' \\\\O// \n'
|
||||
' /|\\ \n'
|
||||
' / \\ \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
// 프레임 3: 보상
|
||||
' COMPLETE! \n'
|
||||
' \n'
|
||||
' \\O/ \$\$\$ \n'
|
||||
' /|\\ \$\$\$ \n'
|
||||
' / \\ \$\$\$ \n'
|
||||
' \n'
|
||||
' \n'
|
||||
' \$\$\$ \n'
|
||||
' \\O/ \$\$\$ \n'
|
||||
' /|\\ \$\$\$ \n'
|
||||
' / \\ \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
// 프레임 4: 축하
|
||||
' * * * * * \n'
|
||||
' \\O/ \n'
|
||||
' /|\\ +EXP \n'
|
||||
' / \\ +GOLD \n'
|
||||
' \n'
|
||||
' \n'
|
||||
' * * * * * \n'
|
||||
' \n'
|
||||
' \n'
|
||||
' \\O/ +EXP \n'
|
||||
' /|\\ +GOLD \n'
|
||||
' / \\ \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
// 프레임 5: 마무리
|
||||
' [ VICTORY! ] \n'
|
||||
' \n'
|
||||
' \n'
|
||||
' \n'
|
||||
' \\O/ \n'
|
||||
' /|\\ \n'
|
||||
' / \\ \n'
|
||||
' \n'
|
||||
' \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
],
|
||||
frameIntervalMs: 350,
|
||||
);
|
||||
|
||||
/// Act 완료 애니메이션 (8줄 x 40자 고정)
|
||||
/// 캐릭터 위치: 머리=4, 몸통=5, 다리=6 (전투 애니메이션 기준)
|
||||
const actCompleteAnimation = AsciiAnimationData(
|
||||
frames: [
|
||||
// 프레임 1: 커튼
|
||||
' ______________________________ \n'
|
||||
' | | \n'
|
||||
' | A C T | \n'
|
||||
' | | \n'
|
||||
' | C O M P L E T E | \n'
|
||||
' | | \n'
|
||||
' |______________________________| \n'
|
||||
' \n'
|
||||
' \n'
|
||||
' \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
// 프레임 2: 캐릭터 등장
|
||||
' ______________________________ \n'
|
||||
' | * * * * * | \n'
|
||||
' | \\O/ | \n'
|
||||
' | /|\\ | \n'
|
||||
' | / \\ | \n'
|
||||
' | * * * * * | \n'
|
||||
' |______________________________| \n'
|
||||
' \\O/ \n'
|
||||
' /|\\ \n'
|
||||
' / \\ \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
// 프레임 3: 플롯 진행 표시
|
||||
' ______________________________ \n'
|
||||
' | PROLOGUE --> ACT | \n'
|
||||
' | \\O/ | \n'
|
||||
' | /|\\ --> | \n'
|
||||
' | / \\ | \n'
|
||||
' | STORY CONTINUES | \n'
|
||||
' | STORY CONTINUES --> | \n'
|
||||
' |______________________________| \n'
|
||||
' \\O/ \n'
|
||||
' /|\\ \n'
|
||||
' / \\ \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
// 프레임 4: 축하
|
||||
' ______________________________ \n'
|
||||
' | * * * * * | \n'
|
||||
' | * \\O/ * | \n'
|
||||
' | /|\\ | \n'
|
||||
' | * / \\ * | \n'
|
||||
' | * * * * * | \n'
|
||||
' |______________________________| \n'
|
||||
' * \\O/ * \n'
|
||||
' /|\\ \n'
|
||||
' * / \\ * \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
// 프레임 5: 마무리
|
||||
' ______________________________ \n'
|
||||
' | +---------+ | \n'
|
||||
' | | NEXT | | \n'
|
||||
' | | CHAPTER | | \n'
|
||||
' | +---------+ | \n'
|
||||
' | \\O/ | \n'
|
||||
' |______________________________| \n'
|
||||
' |____| CHAPTER |_______________| \n'
|
||||
' \\O/ \n'
|
||||
' /|\\ \n'
|
||||
' / \\ \n'
|
||||
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
|
||||
],
|
||||
frameIntervalMs: 400,
|
||||
|
||||
Reference in New Issue
Block a user