MAPLE HUNT MULTIVIEW v0.3.3 - SAFETY LOCKED
========================

목적
- Windows DWM Thumbnail API로 외부 창을 실시간 복제
- 복제창 4개를 프로그램 하나에서 1x4 / 2x2로 관리
- 웹 사냥 타이머와 같은 계열의 '화면 픽셀 감지'만 사용
- 게임 프로세스 메모리 읽기/쓰기, DLL 인젝션, 패킷, 자동 키/마우스 입력 없음

안전 구조 잠금 (v0.3)
- build.bat 실행 시 safety_check.ps1을 먼저 실행
- 메모리/인젝션/후킹/패킷/자동입력 관련 API가 소스에 들어오면 빌드 자체를 중단
- P/Invoke는 dwmapi.dll / user32.dll / gdi32.dll만 허용
- 원본 PID는 GetWindowThreadProcessId의 정렬 키로만 사용하며 Process 핸들을 열지 않음
- 상세 기준: SAFETY_MODEL_KO.txt

이번 버전 핵심
1. 완전 프레임리스
   - 흰색 윈도우 제목표시줄 없음
   - 평소에는 게임 화면 + 최소 HUD만 표시
   - 우클릭 메뉴 / F2 컨트롤 센터로 설정

2. 4클라 멀티뷰
   - 기본 레이아웃: 2x2 (사용자가 보여준 실제 배치 기준)
   - 1x4 / 2개 좌우 / 1개 전환 가능
   - 슬롯마다 서로 다른 원본 창 연결
   - 원본 창별 크롭 가능
   - 원본 창이 재실행되면 저장한 프로세스/클래스/순번으로 자동 재연결 시도

3. 슬롯별 60초 사냥 타이머
   - 슬롯마다 독립 60초 타이머
   - 복제 화면 좌측 상단 미니맵 영역을 자동 분석
   - 노란 캐릭터 마커 이동 감지 시 해당 슬롯만 60초 리셋
   - 타이머는 각 슬롯 우측 상단의 작은 HUD로 표시

4. 룬 감지
   - 보라 계열 룬 마커를 화면 픽셀로 감지
   - 안정적으로 연속 감지된 경우에만 룬 상태 확정
   - 첫 감지 시 Windows 알림음 1회
   - 룬이 있는 슬롯만 얇은 보라색 LIVE 테두리 애니메이션
   - 게임 입력이나 자동 처리 기능은 없음 (알려주기만 함)

5. 미니맵 영역
   - 기본: 자동 (사용자가 보내준 실제 MapleStory UI에서 미니맵 본체가 위치한 좌측 상단 비율 영역으로 보정)
   - 해상도/창 크기가 바뀌어도 비율 기반으로 따라감
   - 특이한 UI 배치에서는 우클릭 -> 사냥 어시스트 -> 미니맵/분석 영역 직접 지정
   - 직접 지정 화면에서 보라색 박스를 드래그하면 됨

6. 프리셋
   - 창 위치/크기
   - 2x2/1x4 레이아웃
   - 슬롯 1~4 원본창 매칭
   - 슬롯별 크롭
   - 타이머 ON/OFF
   - 룬 알림 ON/OFF
   - 타이머 HUD 표시
   - 자동/수동 미니맵 분석 영역
   - 항상 위 / 투명도 / 클릭 통과 / 위치 잠금
   위 설정을 한 번에 저장하고 복원

빌드
- Windows에서 build.bat 더블클릭
- 같은 폴더에 MapleHuntMultiView.exe 생성
- 별도 NuGet 패키지 없음
- .NET Framework 4.x C# 컴파일러 사용

기본 사용
1. MapleHuntMultiView.exe 실행
2. F2 -> 컨트롤 센터
3. SLOT 1~4 각각 '창 연결'
4. 기본 미니맵 AUTO 상태로 먼저 테스트
5. 필요하면 슬롯별 '미니맵 AUTO' 버튼 -> 화면에서 직접 영역 지정
6. 원하는 위치/크기로 배치
7. 우클릭 -> 프리셋 -> 현재 구성 저장

프레임리스 조작
- 좌클릭 드래그: 전체 멀티뷰 이동
- 가장자리 6px: 전체 멀티뷰 크기 조절
- 우클릭: 빠른 설정 메뉴
- F2: 컨트롤 센터
- ESC: 종료

전역 단축키
- Ctrl+Alt+O : 클릭 통과 ON/OFF
- Ctrl+Alt+L : 위치/크기 잠금 ON/OFF
- Ctrl+Alt+P : 컨트롤 센터

프리셋 파일
%APPDATA%\MapleHuntMultiView\presets.json

프리셋 바로 실행
MapleHuntMultiView.exe --preset "메이플 4클라"

감지 참고
- 픽셀 분석은 복제되어 보이는 화면의 미니맵 ROI를 약 250ms 간격으로 확인함
- 원본 게임에 키/마우스 입력을 보내지 않음
- 복제창 투명도를 너무 낮추면 화면 색이 배경과 섞여 감지 정확도가 떨어질 수 있으므로 100% 권장
- 자동 미니맵 ROI는 사용자가 보내준 4클라 2x2 스크린샷의 실제 미니맵 위치를 기준으로 보정됨
- 캐릭터/룬 색상이나 미니맵 테마가 크게 달라진 경우 직접 분석 영역 지정으로 보정 가능

현재 검증 범위
- Linux 작업환경에서 소스 구조/정적 점검 완료
- Windows DWM/화면 캡처/실제 MapleStory 창에서의 동작은 사용 PC에서 build.bat로 빌드 후 최종 실기 확인 필요

스크린샷 기반 보정
- 사용자가 보내준 2048x1157 4클라 2x2 화면을 4개 슬롯으로 나눠 동일한 색상/컴포넌트 로직을 검증함
- 자동 ROI에서 4개 슬롯 모두 캐릭터 마커 후보를 하나씩 안정적으로 분리함
- 해당 프레임에서는 룬 오검출 후보 0개 확인
- 상세: VALIDATION.txt


[v0.3.1]
- 안전검사는 실제 build.bat에 포함되는 C# 소스만 검사합니다.
- 예전 버전을 같은 폴더에 덮어풀어 WindowModel.cs 같은 잔여 파일이 있어도 오탐으로 빌드가 중단되지 않습니다.
- 실행 파일에 포함되는 소스의 안전 제한은 그대로 유지됩니다.


[v0.3.2 UI 안정화]
- 프레임리스 창을 드래그 리사이즈할 때 이전 슬롯 테두리가 반복 잔상처럼 누적되던 문제 수정
- 메인 폼은 ResizeRedraw + 즉시 Invalidate로 항상 새 크기에 맞춰 다시 그림
- HUD layered window는 Form.Bounds로 늘리지 않고 UpdateLayeredWindow에서 위치/크기/비트맵을 원자적으로 갱신
- 창 연결/크롭/미니맵 영역/프리셋 삭제 팝업 표시 중 HUD를 일시 숨겨 SLOT 카드가 팝업 위를 덮지 않음
- 모달 팝업은 메인 창의 TopMost 상태를 상속하고 BringToFront/Activate 처리
- 컨트롤 센터가 열린 동안에도 HUD를 일시 숨겨 설정 UI 가독성 보장


[v0.3.3 독립 브랜드 전환]
- 실행 파일명: MapleHuntMultiView.exe
- 프로젝트/솔루션/namespace: MapleHuntMultiView
- 프리셋 저장 위치: %APPDATA%\MapleHuntMultiView\presets.json
- Windows 파일 속성의 제품명/설명도 Maple Hunt MultiView로 통일
- 제3자 프로그램명/브랜드/서명에 의존하지 않는 독립 배포 구조로 정리
