Commit Graph

8 Commits

Author SHA1 Message Date
3178d880f2 feat: 튜토리얼 data-tutorial 마커 및 TutorialOverlay 앱 통합 (JSA-47)
- ElementsScreen: 첫 번째 obtained 원소 카드에 data-tutorial 스포트라이트 마커
- FusionScreen: 합성 슬롯1, 합성 결과 배너에 data-tutorial 마커
- EvolutionScreen: 첫 번째 강화 버튼에 data-tutorial 마커
- _app.tsx: AppContainer에 <TutorialOverlay /> 전역 마운트

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-01 22:44:17 +09:00
ff0ed541cd feat: 프레스티지 시스템 및 업적(Achievement) 상태 관리 구현 (JSA-47)
- PrestigeResult, AchievementStats 타입 추가
- performPrestige(): 프레스티지 시 골드/원소 초기화, 배율·타이틀 업데이트
- achieveUnlock(): 업적 조건 충족 여부 실시간 체크 및 보상 지급
- 업적 통계 (fuseCount, enhanceCount, tiersUnlocked, prestigeCount 등) 상태 추적

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-01 22:44:09 +09:00
466994da23 feat: 튜토리얼 오버레이 컴포넌트 추가 (TutorialOverlay, ProgressBar, Tooltip, WelcomeCard) (JSA-47)
- TutorialWelcomeCard: 첫 실행 시 게임 소개 카드
- TutorialProgressBar: 스텝 진행 상태 표시
- TutorialTooltip: 대상 요소 위/아래 스포트라이트 설명 툴팁
- TutorialOverlay: 전체 튜토리얼 흐름 조율 (4단계: 원소→합성슬롯→합성결과→강화)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-01 22:44:02 +09:00
6e323680d5 feat: CharacterSprite SVG 컴포넌트, FloatingOverlay, useFloatingItems 훅 추가 (JSA-47)
- CharacterSprite: 원소별 카와이 치비 스타일 SVG 캐릭터 (Tier/파티클 대응)
- FloatingOverlay: 골드/아이템 획득 시 플로팅 텍스트 애니메이션
- useFloatingItems: 플로팅 아이템 상태 관리 훅

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-01 22:43:55 +09:00
eacc91b7da feat: 프레스티지/업적 데이터, 캐릭터 비주얼, 게임 색상 시스템 추가 (JSA-47)
- src/data/achievements.json: 30개+ 업적 조건/보상 데이터
- src/data/prestige.json: 프레스티지 레벨별 배율 및 타이틀 테이블
- src/data/characterVisual.ts: 원소별 캐릭터 SVG 비주얼 파라미터
- src/styles/gameColors.ts: 게임 전용 색상 토큰 및 유틸 함수

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-01 22:43:48 +09:00
c9ab987e02 feat: 설정 화면 구현 (JSA-37)
- SettingsScreen 컴포넌트 추가 (언어선택, BGM 토글, 앱 버전, 게임 초기화)
- 게임 데이터 초기화: 2단계 확인 다이얼로그 (localStorage 전체 삭제 후 리로드)
- 언어 설정: 한국어/English 세그먼트 버튼 (language 상태 persist)
- BGM 토글 스위치 (bgmEnabled 상태 persist)
- 마지막 저장 시각 및 오프라인 보상 최대 24시간 안내 텍스트
- BottomTabBar에 ⚙️ 설정 탭 추가
- useGameStore에 TabName 'settings', Language 타입 및 관련 액션 추가

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-01 00:41:36 +09:00
e1cc6b2ea8 perf: localStorage 저장 스로틀링 및 렌더링 최적화 (JSA-36)
- useGameStore: localStorage 저장을 최대 10초 간격으로 스로틀링
  (매 tick마다 저장하던 것을 개선)
- useGameStore: flushGameState() 내보내기 — beforeunload에서 즉시 저장
- useIdleTick: beforeunload 이벤트에 flushGameState 연결
- ElementsScreen: useGameStore 전체 구독 → 필요한 slice만 selector로 구독
- ElementsScreen: 원소 카드를 memo(ElementCard)로 추출
  (count/level 불변 시 리렌더 방지)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-01 00:36:40 +09:00
56bc71a71a feat: @apps-in-toss/analytics 이벤트 트래킹 구현 (JSA-32)
- src/analytics.ts: initAnalytics / trackGameEvent 유틸 추가
- _app.tsx: 앱 시작 시 Analytics.init 호출
- pages/index.tsx: app_open 이벤트 (플랫폼 시간, 보유 원소 수, 골드, 강화 레벨 합계)
- FusionScreen: fusion_completed (결과 tier/name, 골드 획득, 재료 ID)
- EvolutionScreen: enhancement_completed + level_up (원소 ID/이름, 새 레벨, 비용)
- ShopScreen: item_purchased (아이템 ID/이름, 가격, 희귀도)
- OfflineRewardModal: offline_reward_claimed (오프라인 시간, 골드, 원소 종류 수)
- package.json: @apps-in-toss/analytics ^2.3.0 명시적 추가

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-01 00:29:14 +09:00