#pragma once

namespace PMConst
{
    // 패치 타입
    extern LPCTSTR PatchType;

    extern CString PatchType_Part1;
    extern CString PatchType_BattleLohan;
    extern CString PatchType_Part2;
    extern CString PatchType_Part2Test;
    extern CString PatchType_Part2Malay;

    // 자동패치 관련
    extern LPCTSTR AP_OldPkg;
    extern LPCTSTR AP_NewClient;
    extern LPCTSTR AP_NewPkg;
    extern LPCTSTR AP_MaxPkg;
    extern LPCTSTR AP_FTPAddr;
    extern LPCTSTR AP_FTPPort;
    extern LPCTSTR AP_FTPPassive;
    extern LPCTSTR AP_PkgPosType;

    extern UINT AP_SETTING_ENABLE;  // 세팅을 바꿀 수 있게 하는 메시지 ID
    extern UINT AP_SETTING_DISABLE; // 세팅을 바꿀 수 없게 하는 메시지 ID    

    // 수동패치 관련
    extern LPCTSTR MP_Folder;
    extern LPCTSTR MP_SFXFile;
    extern LPCTSTR MP_MinVer;
    
    extern UINT MP_SETTING_ENABLE;      // 세팅을 바꿀 수 있게 하는 메시지 ID
    extern UINT MP_SETTING_DISABLE;     // 세팅을 바꿀 수 없게 하는 메시지 ID

    // 프로그리스 바 타이머 ID
    extern UINT AP_PROGRESS_TIMER_ID;
    extern UINT MP_PROGRESS_TIMER_ID;

    // 프로그리스 바 갱신 시간
    extern DWORD PROGRESS_TIMER_UPDATE_TIME;

    // 문자열 데이터를 초기화한다.
    void InitializeStrings();
    
    // 패치 타입이 Part1 이면 버전을 100씩 빼 준다.
    void AdjustVersionInfoByPatchType(LPCTSTR szPatchType, DWORD& dwMinver, DWORD dwMaxver);

    // 패치 종류로부터 RYL이 설치된 레지스트리 키, 읽어올 값 이름을 얻어온다.
    bool GetRYLInstalledRegKey(LPCTSTR szPatchType, 
        CString& szInstalledRegKey, CString& szValueName);
}