(null);
// 점수 기반 레벨 계산
const levelInfo = useMemo(() => getScoreLevel(score), [score]);
@@ -37,6 +48,26 @@ const RunningPanel = () => {
}
}, [levelInfo.level]);
+ // 레벨에 따른 SVG 선택 (카메라 hide 상태일 때 사용)
+ const levelSvgSrc = useMemo(() => {
+ switch (levelInfo.level) {
+ case 1:
+ return AngelRiniRestSvg;
+ case 2:
+ return PmRiniRestSvg;
+ case 3:
+ return RiniSvg;
+ case 4:
+ return BugiRestSvg;
+ case 5:
+ return StoneBugiRestSvg;
+ case 6:
+ return TireBugiRestSvg;
+ default:
+ return RiniSvg;
+ }
+ }, [levelInfo.level]);
+
// 레벨에 따른 게이지바 비율 (레벨이 낮을수록(좋을수록) 더 많이 채워짐)
const gaugeWidth = useMemo(() => {
// 레벨 1(가장 좋음): 100%, 레벨 2: 95%, 레벨 3: 70%, 레벨 4: 45%, 레벨 5: 20%, 레벨 6(가장 나쁨): 5%
@@ -74,6 +105,20 @@ const RunningPanel = () => {
return statusMap[levelInfo.level] || '가는 중';
}, [levelInfo.level]);
+ // 카메라 상태에 따라 배경 영상 재생/멈춤 제어
+ useEffect(() => {
+ const video = backgroundVideoRef.current;
+ if (!video) return;
+
+ if (isCameraShow) {
+ video.play().catch((error) => {
+ console.warn('배경 영상 재생 실패:', error);
+ });
+ } else {
+ video.pause();
+ }
+ }, [isCameraShow]);
+
// 위젯 창 상태 확인
useEffect(() => {
const checkWidgetStatus = async () => {
@@ -100,6 +145,7 @@ const RunningPanel = () => {
{/* 배경 영상 */}
diff --git a/src/renderer/src/pages/Onboarding/components/ImageDescriptionPanel.tsx b/src/renderer/src/pages/Onboarding/components/ImageDescriptionPanel.tsx
index eebfe99..ec72fd7 100644
--- a/src/renderer/src/pages/Onboarding/components/ImageDescriptionPanel.tsx
+++ b/src/renderer/src/pages/Onboarding/components/ImageDescriptionPanel.tsx
@@ -1,15 +1,15 @@
-import FirstImageDescription from './FirstImageDescription';
-import PrevIcon from '@assets/onboarding/prev_icon.svg?react';
+import firstDarkImage from '@assets/onboarding/first_dark_image.png';
import firstImage from '@assets/onboarding/first_image.png';
-import secondImage from '@assets/onboarding/second_image.png';
-import thirdImage from '@assets/onboarding/third_image.png';
+import fourthDarkImage from '@assets/onboarding/fourth_dark_image.png';
import fourthImage from '@assets/onboarding/fourth_image.png';
-import firstDarkImage from '@assets/onboarding/first_dark_image.png';
+import PrevIcon from '@assets/onboarding/prev_icon.svg?react';
+import RockIcon from '@assets/onboarding/rock_icon.svg?react';
import secondDarkImage from '@assets/onboarding/second_dark_image.png';
+import secondImage from '@assets/onboarding/second_image.png';
import thirdDarkImage from '@assets/onboarding/third_dark_image.png';
-import fourthDarkImage from '@assets/onboarding/fourth_dark_image.png';
-import RockIcon from '@assets/onboarding/rock_icon.svg?react';
-import { useState, useEffect } from 'react';
+import thirdImage from '@assets/onboarding/third_image.png';
+import { useEffect, useState } from 'react';
+import FirstImageDescription from './FirstImageDescription';
/* 단계별 이미지 (1단계는 null, 2~5단계는 이미지) */
const STEP_IMAGES_LIGHT = [
@@ -103,7 +103,7 @@ const ImageDescriptionPannel = ({
)}
-
+
영상은 사용자의 PC에서만 처리되며, 어디에도 저장되거나 전송되지
diff --git a/src/renderer/src/utils/getScoreLevel.ts b/src/renderer/src/utils/getScoreLevel.ts
index 376a303..306a3a9 100644
--- a/src/renderer/src/utils/getScoreLevel.ts
+++ b/src/renderer/src/utils/getScoreLevel.ts
@@ -110,3 +110,4 @@ export function getAllLevelDefinitions(): ScoreLevelInfo[] {
}
+