diff --git a/CLAUDE.md b/CLAUDE.md index e32a8c5..63e68d9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -11,7 +11,7 @@ C:\Users\98kim\sdk\go1.25.1\bin\go.exe build -ldflags="-H windowsgui -s -w -X ma ## Tech Stack -- **Go** 4파일 구조 (`main.go`, `ui.go`, `download.go`, `protocol.go`) +- **Go** 6파일 구조 (`main.go`, `win32.go`, `ui.go`, `download.go`, `protocol.go`, `game.go`) - **Win32 API** — `user32.dll`, `gdi32.dll`, `comctl32.dll`, `uxtheme.dll`, `shell32.dll` - `golang.org/x/sys/windows` + `windows/registry` @@ -22,14 +22,16 @@ C:\Users\98kim\sdk\go1.25.1\bin\go.exe build -ldflags="-H windowsgui -s -w -X ma ## Architecture -역할별 4파일 구조: +역할별 6파일 구조: | 파일 | 담당 | |---|---| | `main.go` | 진입점(`main`), 단일 인스턴스, `handleURI`, version | -| `ui.go` | Win32 DLL/proc 선언, WndProc, progress window, DPI, font, msgBox | +| `win32.go` | Win32 상수, DLL/proc 선언, 구조체 | +| `ui.go` | WndProc, progress window, DPI, font, msgBox | | `download.go` | HTTP 클라이언트, 다운로드/추출/해시, `ensureGame`, `ensureLauncher` | | `protocol.go` | 상수, URI 프로토콜 등록/해제, `redeemTicket`, `fetchServerInfo` | +| `game.go` | `handleURI`, 게임 실행 흐름 | 주요 함수: - **`downloadWithProgress()`** — Win32 메시지 루프 직접 운영. 반드시 메인 고루틴에서 호출 (`runtime.LockOSThread`).