﻿Maple Hunt MultiView v0.3.21.2 — 부드러운 휠 확대·축소 / 전체 화면 유지

보스모드 추가 전 v0.3.21을 기준으로 수정했습니다. 보스모드는 포함하지 않습니다.

실행 순서
1. 실행 중인 기존 MapleHuntMultiView를 종료합니다.
2. ZIP을 새 폴더에 모두 풉니다. ZIP 안에서 바로 실행하지 마세요.
3. 포함된 MapleHuntMultiView.exe를 실행합니다. Windows / .NET Framework 4.8용입니다.
4. 기존 프리셋을 불러와 연결과 사냥/룬 설정을 이어 쓸 수 있습니다.
5. 소스에서 다시 빌드하려면 build.bat을 실행합니다. 오류는 build_log.txt에서 확인합니다.

이번 수정: 부드러운 휠 확대·축소
- 휠 입력마다 목표 크기로 바로 점프하던 동작을 여러 중간 크기로 자연스럽게 이어지도록 변경했습니다.
- 한 칸당 약 10%의 조절 폭은 유지하며, 작은 휠 입력도 버리지 않고 반영합니다.
- 여러 번 돌리면 진행 중인 확대·축소에 이어서 반영합니다.
- 반대로 돌리면 남아 있던 이전 방향의 동작을 취소하고 바로 새 방향으로 반응합니다.
- 마우스로 이동/가장자리 조절을 시작하거나 잠금·클릭 통과·메뉴·프리셋 전환 시
  진행 중인 크기 조절을 현재 표시 크기에서 멈춥니다.
- 원본 비율과 원본 전체 표시, 모니터 범위 제한은 매 중간 크기에도 적용합니다.
- 크기 조절 중 같은 프레임을 중복으로 그리지 않고, 이미 확인한 원본 크기를 재사용합니다.
- 설정을 새로 켤 필요 없이 기본 적용됩니다. 실제 움직임 속도는 Windows와 PC 부하에 따라 달라질 수 있습니다.

이전 수정 유지: 크기를 바꿀 때 생기던 검은 여백
- 기본으로 '원본 비율로 크기 조절 · 검은 여백 방지'가 켜져 있습니다.
- 복제 화면 위에서 휠 위 = 크게 / 휠 아래 = 작게. 한 칸에 약 10%씩 크기가 바뀝니다.
- 창 가장자리와 모서리를 드래그해도 가로·세로가 원본 비율에 맞춰 함께 바뀝니다.
- 자동 확대 자르기 없이 원본 전체를 표시합니다. 직접 지정한 자르기 영역은 유지합니다.
- 1개, 2개 좌우, 2×2, 1×4에서 각 원본의 비율에 맞춰 칸 너비와 행 높이를 정합니다.
- 서로 다른 해상도를 섞어도 각 화면의 비율을 따릅니다.
- SIDE VIEW의 FIT 모드도 원본 비율과 위쪽 버튼 줄 높이를 함께 계산합니다.
- SIDE VIEW를 접으면 복원 버튼의 폭만 남기고 메인 화면 비율을 다시 맞춥니다.
- 이전 프리셋이 '비율 유지'였다면 새 자동 크기 조절이 기본 적용됩니다.
- 이전 설정이 CROP/FILL이었다면 우클릭 → 창 크기를 원본 비율에 맞추기를 선택하세요.
- 이 설정을 프리셋에 저장하면 다음에도 기억합니다.

조작 참고
- 마우스가 복제 화면 위에 있을 때 휠로 크기를 조절합니다.
  Windows의 비활성 창 스크롤 설정에 따라 복제창을 한 번 눌러야 휠이 동작할 수 있습니다.
- 위치/크기 잠금 중에는 휠도 잠깁니다. Ctrl+Alt+L로 해제합니다.
- 클릭 통과 중에는 복제창이 마우스를 받지 않습니다. Ctrl+Alt+O로 해제합니다.
- 칸 너비나 SIDE 폭을 개별로 바꾸려면 우클릭에서 '원본 비율로 크기 조절'을 끄고
  기존처럼 경계선을 드래그합니다. 자유 배치에서는 비율 차이에 따른 여백이 생길 수 있습니다.
- 여백 없는 자동 배치로 돌아오려면 '창 크기를 원본 비율에 맞추기'를 선택합니다.
- 원본에 이미 들어 있는 검은 부분이나 미연결 슬롯은 이번 크기 조절로 제거하지 않습니다.

캐릭터 이동 감도
- 네 게임 화면 기본값을 '높음'으로 올렸습니다. 기존 프리셋도 감도 설정이 없으면 높음입니다.
- 화면 우클릭 → 사냥 어시스트 → 캐릭터 이동 감도:
  보통 · 기존 감도 / 높음 · 권장 / 매우 높음
- 기준 배율에서 기존 약 2.5px 이동 대신 높음은 약 0.95px, 매우 높음은 약 0.65px부터 판단합니다.
  실제 임계값은 복제 화면 배율에 따라 조정됩니다. 게임에서 걷는 거리와 같은 수치는 아닙니다.
- 높음/매우 높음은 기준점에서 벗어난 상태가 2회 연속 확인되어야 초기화합니다.
  250ms 검사 주기이므로 작은 이동 후 약 0.25~0.5초의 확인 시간이 들 수 있습니다.
- 한 프레임만 흔들렸다 돌아온 경우는 무시하며, 계속 걷는 동안에도 누적 이동으로 초기화합니다.
- 정지 중 불필요한 초기화가 생기면 해당 화면 감도를 한 단계 낮출 수 있습니다.

60초 타이머와 룬 감지 분리
- '60초 타이머'를 꺼도 '룬 감지·알림'이 켜져 있으면 룬 검사를 계속합니다.
- 타이머가 꺼져 있어도 룬 LIVE 표시·테두리·도착 알림음이 동작합니다.
- 타이머를 껐다 켜도 진행 중인 룬 확인과 이미 감지한 룬 상태를 지우지 않습니다.
- '룬 감지·알림'을 끄면 룬 검사·표시·알림을 함께 끕니다. 캐릭터 타이머에는 영향이 없습니다.
- '타이머 HUD 표시'는 표시만 바꿉니다. 타이머 자체는 '60초 타이머'에서 끕니다.
- 꺼진 타이머는 '60초로 리셋'을 눌러도 다시 켜지지 않습니다.

웹툰·영상용 사이드뷰
- SIDE VIEW는 기본적으로 캐릭터/룬 감지와 타이머/알림이 모두 꺼진 감상용입니다.
  과거 프리셋의 다섯 번째 화면도 감상용으로 읽습니다. 네 게임 화면 설정은 유지합니다.
- 우클릭 → SIDE VIEW → 영상 설정 또는 웹툰 설정으로 엽니다.
- 상단 버튼:
  영상 / 웹툰: 각 모드의 연결 창, 사이드 폭, 자르기, 화면 비율을 따로 기억합니다.
  연결: 브라우저나 영상 재생 창을 선택합니다. 취소하면 이전 연결과 설정을 유지합니다.
  자르기: 현재 보이는 화면에서 드래그합니다. '전체 복원'은 모든 자르기를 해제하고 FIT로 돌아갑니다.
  비율: FIT(전체/비율 유지), CROP(잘라 채우기), FILL(늘여 채우기).
  원본: 연결한 창을 앞으로 불러 스크롤·재생을 직접 조작합니다.
  저장: 두 모드 설정을 함께 프리셋으로 저장합니다. 재실행 후에는 이 프리셋을 불러옵니다.
  접기: 연결·폭·자르기를 유지한 채 접습니다. 옆의 SIDE 버튼을 누르면 바로 복원합니다.
- 폭이 좁으면 일부 버튼은 상단의 더보기 화살표에 들어갑니다. 접기는 계속 표시됩니다.
- 원본 창 버튼을 누르면 멀티뷰의 맨 위 표시를 잠시 내립니다.
  멀티뷰를 다시 누르거나 Ctrl+Alt+P로 컨트롤 센터를 열면 원래의 맨 위 표시로 돌아옵니다.
- 복제 화면 자체에 스크롤이나 재생 키를 전달하지 않습니다. 원본 창에서 조작하세요.
- 메인 네 화면에 연결한 창을 사이드에 중복 연결하려 하면 기존 연결을 바꾸지 않고 안내합니다.
- 예전 슬롯 미러 기능도 메뉴에 남아 있습니다. 미러 상태의 원본 전환은 동작하지 않습니다.

화면 감지 조건
- 게임 원본과 멀티뷰를 최소화하지 말고, 미니맵이 실제 화면에 보이게 둡니다.
- 감지할 때 멀티뷰 투명도는 100%로 사용합니다.
- 각 게임 복제 화면 가로 650px 이상에서 제공된 캡처를 검증했습니다.
  사이드뷰를 켜면 메인 화면이 줄어드니 전체 창 크기도 맞춰 주세요.
- 자동 영역이 미니맵과 다르면 각 화면 우클릭 → 사냥 어시스트 → 미니맵/분석 영역 직접 지정.
  캐릭터 한 점만 잡지 말고 미니맵 지도 전체를 포함합니다.
- 다른 창이 검사 영역을 가리면 그 화면 검사를 중지합니다. 다시 보이면 재확인합니다.
- 룬은 같은 위치에서 여러 번 확인한 뒤 LIVE가 됩니다.
- 동영상 원본 최소화나 보호된 영상의 검은 화면은 재생 앱/DWM 동작의 영향을 받습니다.

검증 범위
- 실행 파일 컴파일 성공. 부드러운 휠 처리 검사 980개, 배치/비율 검사 48,229개,
  기존 타이머·룬 감지 검사 1,237개 통과, 실패 0.
- 반복 프레임과 여러 매개변수를 포함한 검사 수이며 실게임 실행 횟수가 아닙니다.
- 시간 기반 보간, 연속/미세 입력, 반대 방향 전환, 한계 크기에서 즉시 되돌리기,
  조절 취소, 부하로 프레임이 늦어지는 경우와 매 프레임 원본 비율을 검사했습니다.
- Windows DWM의 실제 표시와 물리 마우스 휠 조작감은 이 환경에서 실행하지 못했습니다.
- 기존 250ms 감지 주기와 캐릭터/룬 검사 엔진은 유지합니다.
- Windows에서 Tests\run_tests.bat으로 전체 자동 검사를 다시 실행할 수 있습니다.
