Game client codebase including: - CharacterActionControl: Character and creature management - GlobalScript: Network, items, skills, quests, utilities - RYLClient: Main client application with GUI and event handlers - Engine: 3D rendering engine (RYLGL) - MemoryManager: Custom memory allocation - Library: Third-party dependencies (DirectX, boost, etc.) - Tools: Development utilities 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1737 lines
51 KiB
C++
1737 lines
51 KiB
C++
// ClientSetupDlg.cpp : ±¸Çö ÆÄÀÏ
|
||
//
|
||
|
||
#include "stdafx.h"
|
||
#include "ClientSetup.h"
|
||
#include "ClientSetupDlg.h"
|
||
|
||
#include "..\\..\\Engine\\zalla3d scene class\\InitValue.h"
|
||
#include "..\\..\\Engine\\zalla3d scene class\\RenderOption.h"
|
||
#include "SystemInfo.h"
|
||
#include ".\clientsetupdlg.h"
|
||
|
||
#ifdef _DEBUG
|
||
#define new DEBUG_NEW
|
||
#endif
|
||
|
||
|
||
#define TAB_SYSTEM 0
|
||
#define TAB_GENERAL 1
|
||
#define TAB_ADVANCE 2
|
||
#define TAB_SPECIAL 3
|
||
|
||
using namespace SystemInfo;
|
||
|
||
// CClientSetupDlg ´ëÈ »óÀÚ
|
||
CSystemInfo *g_pSystemInfo = NULL;
|
||
|
||
|
||
|
||
CClientSetupDlg::CClientSetupDlg(CWnd* pParent /*=NULL*/)
|
||
: CDialog(CClientSetupDlg::IDD, pParent)
|
||
{
|
||
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
|
||
m_bInitWindow = FALSE;
|
||
}
|
||
|
||
void CClientSetupDlg::DoDataExchange(CDataExchange* pDX)
|
||
{
|
||
CDialog::DoDataExchange(pDX);
|
||
DDX_Control(pDX, IDC_COMBO_VIDEOCARD, m_cbVideoCard);
|
||
DDX_Control(pDX, IDC_COMBO_MODE, m_cbResolution);
|
||
DDX_Control(pDX, IDC_COMBO_COLOR, m_cbColor);
|
||
DDX_Control(pDX, IDC_COMBO_REFRESH, m_cbRefresh);
|
||
DDX_Control(pDX, IDC_COMBO_CHARSHADOW, m_cbCharShadow);
|
||
DDX_Control(pDX, IDC_COMBO_SCREENFILTER, m_cbScreenEffect);
|
||
DDX_Control(pDX, IDC_COMBO_LIGHTMAP, m_cbHouseShadow);
|
||
DDX_Control(pDX, IDC_COMBO_ABLETEXTURE, m_cbTextureQuailty);
|
||
DDX_Control(pDX, IDC_COMBO_RANGE, m_cbViewRange);
|
||
DDX_Control(pDX, IDC_COMBO_GRASSRENDERING, m_cbGrass);
|
||
DDX_Control(pDX, IDC_COMBO_QUALITY, m_cbQuality);
|
||
DDX_Control(pDX, IDC_CONTROLTAB, m_tcControlTab);
|
||
DDX_Control(pDX, IDC_COMBO_WATEREFFECT, m_cbWaterEffect);
|
||
DDX_Control(pDX, IDC_COMBO_GLOWEFFECT, m_cbGlowEffect);
|
||
DDX_Control(pDX, IDC_COMBO_WEATHEREFFECT, m_cbWeatherEffect);
|
||
DDX_Control(pDX, IDC_COMBO_WINDOWMODE, m_cbWindowMode);
|
||
DDX_Control(pDX, IDC_COMBO_LANGUAGE, m_cbLanguage);
|
||
DDX_Control(pDX, IDC_MULTISUPPORT, m_btMultiSupport);
|
||
}
|
||
|
||
BEGIN_MESSAGE_MAP(CClientSetupDlg, CDialog)
|
||
ON_WM_PAINT()
|
||
ON_WM_QUERYDRAGICON()
|
||
//}}AFX_MSG_MAP
|
||
ON_WM_DESTROY()
|
||
// ON_WM_CREATE()
|
||
ON_WM_MOUSEMOVE()
|
||
//ON_WM_NCMOUSEMOVE()
|
||
ON_CBN_SELCHANGE(IDC_COMBO_VIDEOCARD, OnCbnSelchangeComboVideocard)
|
||
ON_CBN_SELCHANGE(IDC_COMBO_MODE, OnCbnSelchangeComboMode)
|
||
//ON_CBN_SELCHANGE(IDC_COMBO2, OnCbnSelchangeCombo2)
|
||
ON_CBN_SELCHANGE(IDC_COMBO_COLOR, OnCbnSelchangeComboColor)
|
||
ON_BN_CLICKED(IDOK, OnBnClickedOk)
|
||
//ON_CBN_SELCHANGE(IDC_COMBO_QUALITY, OnCbnSelchangeComboQuality)
|
||
ON_CBN_SELCHANGE(IDC_COMBO_REFRESH, OnCbnSelchangeComboRefresh)
|
||
ON_NOTIFY(TCN_SELCHANGE, IDC_CONTROLTAB, OnTcnSelchangeControltab)
|
||
ON_CBN_SELCHANGE(IDC_COMBO_ABLETEXTURE, OnCbnSelchangeComboAbletexture)
|
||
ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
|
||
ON_CBN_SELCHANGE(IDC_COMBO_WINDOWMODE, OnCbnSelchangeComboWindowmode)
|
||
ON_STN_CLICKED(IDC_STATIC_WINDOWMODE, OnStnClickedStaticWindowmode)
|
||
END_MESSAGE_MAP()
|
||
|
||
|
||
extern HRESULT GetDXVersion( DWORD* pdwDirectXVersion, TCHAR* strDirectXVersion, int cchDirectXVersion );
|
||
|
||
|
||
// CClientSetupDlg ¸Þ½ÃÁö 󸮱â
|
||
BOOL CClientSetupDlg::OnInitDialog()
|
||
{
|
||
CDialog::OnInitDialog();
|
||
|
||
// ÀÌ ´ëÈ »óÀÚÀÇ ¾ÆÀÌÄÜÀ» ¼³Á¤ÇÕ´Ï´Ù. ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÁÖ Ã¢ÀÌ ´ëÈ »óÀÚ°¡ ¾Æ´Ò °æ¿ì¿¡´Â
|
||
// ÇÁ·¹ÀÓ¿öÅ©°¡ ÀÌ ÀÛ¾÷À» ÀÚµ¿À¸·Î ¼öÇàÇÕ´Ï´Ù.
|
||
SetIcon(m_hIcon, TRUE); // Å« ¾ÆÀÌÄÜÀ» ¼³Á¤ÇÕ´Ï´Ù.
|
||
SetIcon(m_hIcon, FALSE); // ÀÛÀº ¾ÆÀÌÄÜÀ» ¼³Á¤ÇÕ´Ï´Ù.
|
||
|
||
// TODO: ¿©±â¿¡ Ãß°¡ ÃʱâÈ ÀÛ¾÷À» Ãß°¡ÇÕ´Ï´Ù.
|
||
m_hResource = LoadLibrary("Resource.dll");
|
||
if(NULL == m_hResource)
|
||
{
|
||
CWnd::MessageBox("Load failed Resource Library.");
|
||
|
||
return FALSE;
|
||
}
|
||
|
||
m_iOldResolution = 0;
|
||
|
||
TCHAR strNation[MAX_PATH];
|
||
ZeroMemory(strNation, sizeof(strNation));
|
||
LoadString(m_hResource, IDS_LANGUAGE, strNation, 255);
|
||
|
||
// ÀÏ´ÜÀº ¸»·¹À̽þƸ¸ ¿¹¿Ü󸮸¦ ÇÕ´Ï´Ù. ÀÌ ÇüŰ¡ ¹Ù²ð °æ¿ì Ŭ¶óÀÌ¾ðÆ®¿Í ·±Ã³µµ ¼öÁ¤ÀÌ ÇÊ¿äÇÕ´Ï´Ù. (2004-11-30 by ·Îµò)
|
||
strncpy(m_strRegRoot, "Software\\ROW\\MP-Client", MAX_PATH);
|
||
|
||
g_pSystemInfo = new CSystemInfo;
|
||
|
||
// ½Ã½ºÅÛ Á¤º¸ ¾ò¾î¿À±â
|
||
{
|
||
TCHAR strText[100];
|
||
// Depth Bits ¼¼ÆÃ
|
||
LoadString(GetModuleHandle(NULL), IDS_MINDEPTHBITS, strText, 100);
|
||
g_pSystemInfo->SetDepthBits((unsigned long)atoi(strText));
|
||
// Stencil Bits ¼¼ÆÃ
|
||
LoadString(GetModuleHandle(NULL), IDS_MINSTENCILBITS, strText, 100);
|
||
g_pSystemInfo->SetStencilBits((unsigned long)atoi(strText));
|
||
|
||
g_pSystemInfo->GetWindowInfo();
|
||
g_pSystemInfo->GetMemoryInfo();
|
||
g_pSystemInfo->GetCPUInfo();
|
||
g_pSystemInfo->GetDiskInfo();
|
||
g_pSystemInfo->GetSoundCardInfo();
|
||
g_pSystemInfo->GetVideoCardInfo();
|
||
|
||
// ´ÙÀÌ·ºÆ® ¹öÁ¯ °Ë»ç
|
||
DWORD dwDirectXVersion = 0;
|
||
TCHAR strDirectXVersion[10];
|
||
|
||
HRESULT hr = GetDXVersion( &dwDirectXVersion, strDirectXVersion, 10 );
|
||
if(dwDirectXVersion < 0x00080001)
|
||
{
|
||
MessageBox(IDS_ERR_NOTDX8);
|
||
SendMessage(WM_CLOSE);
|
||
|
||
return FALSE;
|
||
}
|
||
|
||
g_pSystemInfo->EnumulationD3D();
|
||
g_pSystemInfo->GetAvailableDevice(800, 600);
|
||
|
||
CString szText;
|
||
// À©µµ¿ì ¹öÁ¯
|
||
// szText.Format("%s %s", g_pSystemInfo->m_strWindowName, g_pSystemInfo->m_strServiceVersion);
|
||
GetDlgItem(IDC_OS)->SetWindowText(g_pSystemInfo->GetWindowName());
|
||
|
||
// ¸Þ¸ð¸® ¿ë·®
|
||
szText.Format("%d MB (%d MB Free, %d MB FreePage)", (unsigned long)ceil(g_pSystemInfo->GetTotalPhysMem()),
|
||
g_pSystemInfo->GetAvailPhysMem(), g_pSystemInfo->GetAvailPages());
|
||
GetDlgItem(IDC_MEMORY)->SetWindowText(szText);
|
||
|
||
// CPU ¼Óµµ
|
||
GetDlgItem(IDC_CPUSPEED)->SetWindowText(g_pSystemInfo->GetCPUInfo(0));
|
||
|
||
// µð½ºÅ© Á¤º¸
|
||
szText.Format("%5.2f GB", g_pSystemInfo->GetHDDFreeSpace());
|
||
GetDlgItem(IDC_HDDCAP)->SetWindowText(szText);
|
||
|
||
// ´ÙÀÌ·ºÆ® ¹öÁ¯
|
||
if( SUCCEEDED(hr) )
|
||
{
|
||
if( dwDirectXVersion > 0 )
|
||
szText.Format("DirectX %s", strDirectXVersion);
|
||
else
|
||
szText.Format("DirectX not installed");
|
||
} else
|
||
{
|
||
szText.Format("Unknown version of DirectX installed");
|
||
}
|
||
GetDlgItem(IDC_DIRECTVERSION)->SetWindowText(szText);
|
||
// GetDlgItem(IDC_DIRECTVERSION)->SetWindowText(g_pDxDiagInfo->m_pSysInfo->m_szDirectXVersionLongEnglish);
|
||
|
||
// »ç¿îµå Ä«µå
|
||
GetDlgItem(IDC_SOUNDCARD)->SetWindowText(g_pSystemInfo->GetSoundCardName());
|
||
}
|
||
|
||
// ¼³Á¤ ÃʱâÈ
|
||
{
|
||
InitString();
|
||
|
||
// ±×¸² ÄÁÆ®·Ñ
|
||
srand((unsigned)time(NULL));
|
||
m_ctrlImage.Create(_T("my static"), WS_CHILD | WS_VISIBLE | SS_BITMAP | SS_CENTERIMAGE,
|
||
CRect(12,11,170,311), this);
|
||
m_ctrlImage.SetBitmap( ::LoadBitmap(m_hResource, MAKEINTRESOURCE(IDC_IMAGE01 + (rand() % 4))) );
|
||
|
||
// ¿É¼ÇÃʱâÈ
|
||
m_cbCharShadow.SetCurSel(1);
|
||
m_cbHouseShadow.SetCurSel(1);
|
||
m_cbViewRange.SetCurSel(1);
|
||
m_cbTextureQuailty.SetCurSel(1);
|
||
m_cbGrass.SetCurSel(1);
|
||
|
||
m_cbScreenEffect.SetCurSel(1);
|
||
m_cbWaterEffect.SetCurSel(1);
|
||
m_cbWeatherEffect.SetCurSel(1);
|
||
|
||
m_cbGlowEffect.SetCurSel(0);
|
||
m_cbQuality.SetCurSel(0);
|
||
m_cbWindowMode.SetCurSel(0);
|
||
|
||
#ifdef _RYL_LANGUAGE
|
||
m_cbLanguage.SetCurSel(0);
|
||
|
||
m_btMultiSupport.SetCheck(TRUE);
|
||
#endif
|
||
|
||
SetGraphicCard();
|
||
m_cbVideoCard.SetCurSel(0);
|
||
|
||
SetResolution();
|
||
m_cbResolution.SetCurSel(1);
|
||
|
||
SetColor();
|
||
m_cbColor.SetCurSel(1);
|
||
|
||
SetRefresh();
|
||
m_cbRefresh.SetCurSel(0);
|
||
|
||
|
||
m_bInitWindow = FALSE;
|
||
|
||
m_tcControlTab.SetCurSel(1);
|
||
SetTabControl();
|
||
|
||
UpdateData(FALSE);
|
||
}
|
||
|
||
// ÀÚµ¿ °Ë»ö
|
||
AutoDetect();
|
||
|
||
// ·¹Áö¿¡¼ ÀÐ¾î¼ ¼ÂÆÃ
|
||
{
|
||
HKEY hMPClientReg;
|
||
unsigned lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, m_strRegRoot, 0, KEY_READ, &hMPClientReg);
|
||
if(ERROR_SUCCESS == lResult)
|
||
{
|
||
unsigned long dwReadType, dwReadLens;
|
||
char strText[MAX_PATH] = "";
|
||
unsigned long dwWidth, dwHeight, dwRefresh, dwColor, dwWindowMode, dwLanguage, dwMultiSupport;
|
||
D3DFORMAT d3dFormat;
|
||
dwReadLens = MAX_PATH;
|
||
RegQueryValueEx(hMPClientReg, "Adapter", 0, &dwReadType, reinterpret_cast<unsigned char *>(strText), &dwReadLens);
|
||
|
||
dwReadLens = sizeof(unsigned long);
|
||
if(0 != RegQueryValueEx(hMPClientReg, "Width", 0, NULL, (LPBYTE)&dwWidth, &dwReadLens))
|
||
{
|
||
m_bInitWindow = TRUE;
|
||
}
|
||
|
||
if(0 != RegQueryValueEx(hMPClientReg, "Height", 0, NULL, (LPBYTE)&dwHeight, &dwReadLens))
|
||
{
|
||
m_bInitWindow = TRUE;
|
||
}
|
||
|
||
RegQueryValueEx(hMPClientReg, "Refresh", 0, NULL, (LPBYTE)&dwRefresh, &dwReadLens);
|
||
|
||
RegQueryValueEx(hMPClientReg, "WindowMode", 0, NULL, (LPBYTE)&dwWindowMode, &dwReadLens);
|
||
RegQueryValueEx(hMPClientReg, "Language", 0, NULL, (LPBYTE)&dwLanguage, &dwReadLens);
|
||
RegQueryValueEx(hMPClientReg, "MLSupport", 0, NULL, (LPBYTE)&dwMultiSupport, &dwReadLens);
|
||
|
||
// dwReadLens = sizeof(D3DFORMAT);
|
||
|
||
RegQueryValueEx(hMPClientReg, "Depth", 0, NULL, (LPBYTE)&dwColor, &dwReadLens);
|
||
d3dFormat = g_pSystemInfo->GetFormat(dwColor);
|
||
|
||
for(unsigned long i = 0; i < g_pSystemInfo->GetNumAdapters(); ++i)
|
||
{
|
||
if(!strcmp(strText, g_pSystemInfo->GetGraphicCardName(i)))
|
||
{
|
||
g_pSystemInfo->m_dwCurrentVideoCard = i;
|
||
m_cbVideoCard.SetCurSel(i);
|
||
|
||
g_pSystemInfo->GetAvailableDevice(800, 600);
|
||
|
||
break;
|
||
}
|
||
}
|
||
|
||
char strResolution[MAX_PATH], strColor[MAX_PATH], strRefresh[MAX_PATH];
|
||
unsigned dwNumRes, dwNumColor, dwNumRefresh;
|
||
g_pSystemInfo->SetSetting(dwWidth, dwHeight, d3dFormat, dwRefresh);
|
||
dwNumRes = g_pSystemInfo->m_dwCurrentResolution;
|
||
dwNumColor = g_pSystemInfo->m_dwCurrentColor;
|
||
dwNumRefresh = g_pSystemInfo->m_dwCurrentRefresh;
|
||
|
||
// ·¹Áö¿¡¼ ÀÐ¾î¼ ÇØ»óµµ ¼³Á¤
|
||
SetResolution();
|
||
g_pSystemInfo->m_dwCurrentResolution = dwNumRes;
|
||
g_pSystemInfo->GetResolutionByString("%d x %d", strResolution);
|
||
m_cbResolution.SetCurSel(m_cbResolution.FindString(0, strResolution));
|
||
m_iOldResolution = m_cbResolution.GetCurSel();
|
||
|
||
|
||
SetColor();
|
||
g_pSystemInfo->m_dwCurrentColor = dwNumColor;
|
||
g_pSystemInfo->GetColorByString("%d", strColor);
|
||
m_cbColor.SetCurSel(m_cbColor.FindString(0, strColor));
|
||
SetRefresh();
|
||
g_pSystemInfo->m_dwCurrentRefresh = dwNumRefresh;
|
||
g_pSystemInfo->GetRefreshByString("%d", strRefresh);
|
||
m_cbRefresh.SetCurSel(m_cbRefresh.FindString(0, strRefresh));
|
||
m_cbWindowMode.SetCurSel( dwWindowMode ) ;
|
||
#ifdef _RYL_LANGUAGE
|
||
m_cbLanguage.SetCurSel( dwLanguage );
|
||
|
||
m_btMultiSupport.SetCheck((int)dwMultiSupport);
|
||
#endif
|
||
|
||
if(CRenderOption::Load(hMPClientReg) == true)
|
||
{
|
||
m_cbCharShadow.SetCurSel(CRenderOption::m_CharacterProjectShadowTerrain);
|
||
m_cbHouseShadow.SetCurSel(CRenderOption::m_BuildingLightmap);
|
||
m_cbViewRange.SetCurSel(CRenderOption::m_ObjectLOD - 1);
|
||
m_cbTextureQuailty.SetCurSel(CRenderOption::m_TextureMethod);
|
||
m_cbGrass.SetCurSel(CRenderOption::m_GrassRendering);
|
||
|
||
m_cbScreenEffect.SetCurSel(CRenderOption::m_ScreenFilter);
|
||
m_cbWaterEffect.SetCurSel(CRenderOption::m_WaterBumpEnvRendering);
|
||
m_cbGlowEffect.SetCurSel(CRenderOption::m_bFullSceneEffect);
|
||
m_cbWeatherEffect.SetCurSel(CRenderOption::m_bWeather);
|
||
}
|
||
|
||
RegCloseKey(hMPClientReg);
|
||
|
||
UpdateData(FALSE);
|
||
}
|
||
}
|
||
|
||
m_cbQuality.SetCurSel(GetQualityBySetting());
|
||
|
||
m_dwOldWidth = g_pSystemInfo->GetCurrentWidth();
|
||
m_dwOldHeight = g_pSystemInfo->GetCurrentHeight();
|
||
|
||
return TRUE; // ÄÁÆ®·Ñ¿¡ ´ëÇÑ Æ÷Ä¿½º¸¦ ¼³Á¤ÇÏÁö ¾ÊÀ» °æ¿ì TRUE¸¦ ¹ÝȯÇÕ´Ï´Ù.
|
||
}
|
||
|
||
void CClientSetupDlg::MessageBox(UINT nID)
|
||
{
|
||
TCHAR strText[MAX_PATH];
|
||
ZeroMemory(strText, sizeof(strText));
|
||
LoadString(m_hResource, nID, strText, 255);
|
||
CWnd::MessageBox(strText);
|
||
}
|
||
|
||
void CClientSetupDlg::AutoDetect(void)
|
||
{
|
||
unsigned long dwPerformance = g_pSystemInfo->GetPerformance();
|
||
|
||
// »ç¾ç
|
||
m_cbQuality.SetCurSel(dwPerformance);
|
||
|
||
// ij¸¯ÅÍ ±×¸²ÀÚ : »ç¾ç
|
||
switch(dwPerformance)
|
||
{
|
||
case 2:
|
||
case 3:
|
||
m_cbCharShadow.SetCurSel(1);
|
||
break;
|
||
|
||
default:
|
||
m_cbCharShadow.SetCurSel(0);
|
||
break;
|
||
}
|
||
|
||
// ȸéÈ¿°ú : Vertex Shader 1.1 ÀÌ»ó, Pixel Shader 1.1 ÀÌ»ó
|
||
if(!g_pSystemInfo->GetAvailableShader(D3DPS_VERSION(1, 1), D3DVS_VERSION(1, 1)))
|
||
{
|
||
// m_cbScreenEffect.SetCurSel(0);
|
||
// m_cbWaterEffect.SetCurSel(0);
|
||
m_cbScreenEffect.SetCurSel(1);
|
||
m_cbWaterEffect.SetCurSel(1);
|
||
}
|
||
else
|
||
{
|
||
m_cbScreenEffect.SetCurSel(0);
|
||
m_cbWaterEffect.SetCurSel(0);
|
||
}
|
||
|
||
// ±Û·Î¿ì, ±âÈÄ È¿°ú : »ç¾ç
|
||
switch(dwPerformance)
|
||
{
|
||
case 2:
|
||
case 3:
|
||
// m_cbGlowEffect.SetCurSel(0);
|
||
// m_cbWeatherEffect.SetCurSel(0);
|
||
m_cbGlowEffect.SetCurSel(1);
|
||
m_cbWeatherEffect.SetCurSel(1);
|
||
break;
|
||
|
||
default:
|
||
m_cbGlowEffect.SetCurSel(0);
|
||
m_cbWeatherEffect.SetCurSel(0);
|
||
break;
|
||
}
|
||
|
||
// Áý ±×¸²ÀÚ : »ç¾ç, ¸Þ¸ð¸® ¿ë·®
|
||
if(g_pSystemInfo->IsAblePages(400))
|
||
{
|
||
switch(dwPerformance)
|
||
{
|
||
case 2:
|
||
case 3:
|
||
m_cbHouseShadow.SetCurSel(1);
|
||
break;
|
||
|
||
default:
|
||
m_cbHouseShadow.SetCurSel(0);
|
||
break;
|
||
}
|
||
} else
|
||
{
|
||
m_cbHouseShadow.SetCurSel(0);
|
||
}
|
||
|
||
// ÅØ½ºÃÄ Ä÷¸®Æ¼ : DXT3, ¸Þ¸ð¸® ¿ë·®
|
||
if(g_pSystemInfo->GetAvailableHiResTexture(256, 256) &&
|
||
g_pSystemInfo->GetAvailableCompressTexture(D3DFMT_DXT3) &&
|
||
g_pSystemInfo->IsAblePages(400))
|
||
{
|
||
m_cbTextureQuailty.SetCurSel(1);
|
||
} else
|
||
{
|
||
m_cbTextureQuailty.SetCurSel(0);
|
||
}
|
||
|
||
// ½Ã¾ß ¹üÀ§ : »ç¾ç
|
||
switch(dwPerformance)
|
||
{
|
||
case 2:
|
||
m_cbViewRange.SetCurSel(1);
|
||
break;
|
||
case 3:
|
||
m_cbViewRange.SetCurSel(2);
|
||
break;
|
||
|
||
default:
|
||
m_cbViewRange.SetCurSel(0);
|
||
break;
|
||
}
|
||
|
||
CRenderOption::m_GrassRenderRange = 9;
|
||
|
||
// Ç® : »ç¾ç
|
||
switch(dwPerformance)
|
||
{
|
||
case 2:
|
||
case 3:
|
||
CRenderOption::m_GrassRenderRange = 13;
|
||
m_cbGrass.SetCurSel(1);
|
||
break;
|
||
|
||
default:
|
||
m_cbGrass.SetCurSel(1);
|
||
break;
|
||
}
|
||
}
|
||
|
||
// ´ëÈ »óÀÚ¿¡ ÃÖ¼ÒÈ ´ÜÃ߸¦ Ãß°¡ÇÒ °æ¿ì ¾ÆÀÌÄÜÀ» ±×¸®·Á¸é
|
||
// ¾Æ·¡ Äڵ尡 ÇÊ¿äÇÕ´Ï´Ù. ¹®¼/ºä ¸ðµ¨À» »ç¿ëÇÏ´Â MFC ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ °æ¿ì¿¡´Â
|
||
// ÇÁ·¹ÀÓ¿öÅ©¿¡¼ ÀÌ ÀÛ¾÷À» ÀÚµ¿À¸·Î ¼öÇàÇÕ´Ï´Ù.
|
||
|
||
void CClientSetupDlg::OnPaint()
|
||
{
|
||
if (IsIconic())
|
||
{
|
||
CPaintDC dc(this); // ±×¸®±â¸¦ À§ÇÑ µð¹ÙÀ̽º ÄÁÅØ½ºÆ®
|
||
|
||
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
|
||
|
||
// Ŭ¶óÀÌ¾ðÆ® »ç°¢Çü¿¡¼ ¾ÆÀÌÄÜÀ» °¡¿îµ¥¿¡ ¸ÂÃä´Ï´Ù.
|
||
int cxIcon = GetSystemMetrics(SM_CXICON);
|
||
int cyIcon = GetSystemMetrics(SM_CYICON);
|
||
CRect rect;
|
||
GetClientRect(&rect);
|
||
int x = (rect.Width() - cxIcon + 1) / 2;
|
||
int y = (rect.Height() - cyIcon + 1) / 2;
|
||
|
||
// ¾ÆÀÌÄÜÀ» ±×¸³´Ï´Ù.
|
||
dc.DrawIcon(x, y, m_hIcon);
|
||
}
|
||
else
|
||
{
|
||
CDialog::OnPaint();
|
||
}
|
||
}
|
||
|
||
// »ç¿ëÀÚ°¡ ÃÖ¼ÒÈµÈ Ã¢À» ²ô´Â µ¿¾È¿¡ Ä¿¼°¡ Ç¥½ÃµÇµµ·Ï ½Ã½ºÅÛ¿¡¼
|
||
// ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù.
|
||
HCURSOR CClientSetupDlg::OnQueryDragIcon()
|
||
{
|
||
return static_cast<HCURSOR>(m_hIcon);
|
||
}
|
||
|
||
void CClientSetupDlg::OnDestroy()
|
||
{
|
||
CDialog::OnDestroy();
|
||
|
||
// TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
||
if(m_hResource)
|
||
{
|
||
FreeLibrary(m_hResource);
|
||
m_hResource = NULL;
|
||
}
|
||
|
||
delete g_pSystemInfo;
|
||
}
|
||
|
||
void CClientSetupDlg::OnMouseMove(UINT nFlags, CPoint point)
|
||
{
|
||
// TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº»°ªÀ» È£ÃâÇÕ´Ï´Ù.
|
||
|
||
RECT rcRect;
|
||
CPoint pPoint;
|
||
GetWindowRect(&rcRect);
|
||
pPoint.x = point.x + rcRect.left + 3;
|
||
pPoint.y = point.y + rcRect.top + 29;
|
||
|
||
static unsigned long dwOldFocus = 0;
|
||
unsigned long dwNewFocus = 0;
|
||
|
||
TCHAR strText[256];
|
||
|
||
CWnd *pWnd;
|
||
for(unsigned long i = 1000; i < 1023; ++i)
|
||
{
|
||
pWnd = GetDlgItem(i);
|
||
if(pWnd && pWnd->IsWindowVisible())
|
||
{
|
||
pWnd->GetWindowRect(&rcRect);
|
||
|
||
if(rcRect.left <= pPoint.x && pPoint.x <= rcRect.right && rcRect.top <= pPoint.y && pPoint.y <= rcRect.bottom)
|
||
{
|
||
dwNewFocus = i - 999;
|
||
break;
|
||
}
|
||
}
|
||
|
||
pWnd = GetDlgItem(i + 50);
|
||
if(pWnd && pWnd->IsWindowVisible())
|
||
{
|
||
pWnd->GetWindowRect(&rcRect);
|
||
|
||
if(rcRect.left <= pPoint.x && pPoint.x <= rcRect.right && rcRect.top <= pPoint.y && pPoint.y <= rcRect.bottom)
|
||
{
|
||
dwNewFocus = i - 999;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
if(dwNewFocus != dwOldFocus)
|
||
{
|
||
ZeroMemory(strText, sizeof(strText));
|
||
|
||
switch(dwNewFocus)
|
||
{
|
||
case 1: // ¿î¿µÃ¼Á¦
|
||
switch(g_pSystemInfo->GetAbleWindowVersion())
|
||
{
|
||
case 1:
|
||
LoadString(m_hResource, IDS_OS_WIN98, strText, 255);
|
||
break;
|
||
|
||
case 2:
|
||
LoadString(m_hResource, IDS_OS_WINME, strText, 255);
|
||
break;
|
||
|
||
case 3:
|
||
LoadString(m_hResource, IDS_OS_WIN2000, strText, 255);
|
||
break;
|
||
|
||
case 4:
|
||
LoadString(m_hResource, IDS_OS_WINXP, strText, 255);
|
||
break;
|
||
|
||
default:
|
||
LoadString(m_hResource, IDS_OS_ERROR, strText, 255);
|
||
break;
|
||
}
|
||
break;
|
||
|
||
case 2: // ¸Þ¸ð¸®
|
||
if(g_pSystemInfo->IsTotalPhysMem(256))
|
||
{
|
||
LoadString(m_hResource, IDS_MEM_OK, strText, 255);
|
||
} else
|
||
{
|
||
LoadString(m_hResource, IDS_MEM_ERROR, strText, 255);
|
||
}
|
||
break;
|
||
|
||
case 3: // CPU
|
||
LoadString(m_hResource, IDS_CPU_DESC, strText, 255);
|
||
break;
|
||
|
||
case 4: // Çϵå
|
||
{
|
||
if(g_pSystemInfo->GetHDDFreeSpace() > 2.0f)
|
||
{
|
||
LoadString(m_hResource, IDS_HDD_OK, strText, 255);
|
||
} else
|
||
{
|
||
LoadString(m_hResource, IDS_HDD_ERROR, strText, 255);
|
||
}
|
||
}
|
||
break;
|
||
|
||
case 5: // ´ÙÀÌ·ºÆ® ¹öÁ¯
|
||
{
|
||
DWORD dwDirectXVersion = 0;
|
||
TCHAR strDirectXVersion[10];
|
||
|
||
HRESULT hr = GetDXVersion( &dwDirectXVersion, strDirectXVersion, 10 );
|
||
if(dwDirectXVersion < 0x00080001)
|
||
{
|
||
LoadString(m_hResource, IDS_DIRECTX_OK, strText, 255);
|
||
} else
|
||
{
|
||
LoadString(m_hResource, IDS_DIRECTX_ERROR, strText, 255);
|
||
}
|
||
}
|
||
break;
|
||
|
||
case 6: // »ç¿îµåÄ«µå
|
||
if(strcmp("", g_pSystemInfo->GetSoundCardName()))
|
||
{
|
||
LoadString(m_hResource, IDS_SOUND_OK, strText, 255);
|
||
} else
|
||
{
|
||
LoadString(m_hResource, IDS_SOUND_ERROR, strText, 255);
|
||
}
|
||
break;
|
||
|
||
|
||
case 7: // ºñµð¿ÀÄ«µå
|
||
LoadString(m_hResource, IDS_VIDEO_DESC, strText, 255);
|
||
break;
|
||
|
||
case 8: // ÇØ»óµµ
|
||
LoadString(m_hResource, IDS_RESOLUTION_DESC, strText, 255);
|
||
break;
|
||
|
||
case 9: // Ä®¶ó
|
||
LoadString(m_hResource, IDS_COLOR_DESC, strText, 255);
|
||
break;
|
||
|
||
case 10: // Á֯ļö
|
||
LoadString(m_hResource, IDS_FREQ_DESC, strText, 255);
|
||
break;
|
||
|
||
case 11: // ¿É¼Ç
|
||
LoadString(m_hResource, IDS_GRAPHICOPTION_DESC, strText, 255);
|
||
break;
|
||
|
||
case 12: // °ÔÀÓÆ÷Æ®
|
||
LoadString(m_hResource, IDS_GAMEPORT_DESC, strText, 255);
|
||
break;
|
||
|
||
|
||
case 13: // ij¸¯ÅÍ ±×¸²ÀÚ
|
||
LoadString(m_hResource, IDS_CHARSHADOW_DESC, strText, 255);
|
||
break;
|
||
|
||
case 14: // Áý±×¸²ÀÚ
|
||
if(g_pSystemInfo->IsAblePages(400))
|
||
{
|
||
LoadString(m_hResource, IDS_HOUSESHADOW_DESC, strText, 255);
|
||
} else
|
||
{
|
||
LoadString(m_hResource, IDS_HOUSESHADOW_ERROR, strText, 255);
|
||
}
|
||
break;
|
||
|
||
case 15: // ½Ã¾ß¹üÀ§
|
||
LoadString(m_hResource, IDS_VIEWRANGE_DESC, strText, 255);
|
||
break;
|
||
|
||
case 16: // ÅØ½ºÃÄ Ä÷¸®Æ¼
|
||
if(g_pSystemInfo->GetAvailableHiResTexture(256, 256) &&
|
||
g_pSystemInfo->GetAvailableCompressTexture(D3DFMT_DXT3) &&
|
||
g_pSystemInfo->IsAblePages(400))
|
||
{
|
||
LoadString(m_hResource, IDS_TEXTURE_DESC, strText, 255);
|
||
} else
|
||
{
|
||
LoadString(m_hResource, IDS_TEXTURE_ERROR, strText, 255);
|
||
}
|
||
break;
|
||
|
||
case 17: // Ç®
|
||
LoadString(m_hResource, IDS_GRASS_DESC, strText, 255);
|
||
break;
|
||
|
||
|
||
case 18: // ȸéÈ¿°ú
|
||
if(!g_pSystemInfo->GetAvailableShader(D3DPS_VERSION(1, 1), D3DVS_VERSION(1, 1)))
|
||
{
|
||
LoadString(m_hResource, IDS_SCREENEFFECT_DESC, strText, 255);
|
||
} else
|
||
{
|
||
LoadString(m_hResource, IDS_SCREENEFFECT_ERROR, strText, 255);
|
||
}
|
||
break;
|
||
|
||
case 19: // ¹°È¿°ú
|
||
if(!g_pSystemInfo->GetAvailableShader(D3DPS_VERSION(1, 1), D3DVS_VERSION(1, 1)))
|
||
{
|
||
LoadString(m_hResource, IDS_WATEREFFECT_DESC, strText, 255);
|
||
} else
|
||
{
|
||
LoadString(m_hResource, IDS_WATEREFFECT_ERROR, strText, 255);
|
||
}
|
||
break;
|
||
|
||
case 20: // ±Û·Î¿ìÈ¿°ú
|
||
LoadString(m_hResource, IDS_GLOWEFFECT_DESC, strText, 255);
|
||
break;
|
||
|
||
case 21: // ±âÈÄÈ¿°ú
|
||
LoadString(m_hResource, IDS_WEATHEREFFECT_DESC, strText, 255);
|
||
break;
|
||
|
||
case 22: // À©µµ¿ì¸ðµå
|
||
LoadString(m_hResource, IDS_SCREEN_DESC, strText, 255);
|
||
break;
|
||
|
||
case 23: // ¾ð¾î
|
||
LoadString(m_hResource, IDS_LANGUAGE_DESC, strText, 255);
|
||
break;
|
||
}
|
||
|
||
GetDlgItem(IDC_DESC)->SetWindowText(strText);
|
||
|
||
dwOldFocus = dwNewFocus;
|
||
}
|
||
|
||
CDialog::OnMouseMove(nFlags, point);
|
||
}
|
||
|
||
BOOL CClientSetupDlg::SetGraphicCard(void)
|
||
{
|
||
m_cbVideoCard.ResetContent();
|
||
|
||
g_pSystemInfo->m_dwCurrentVideoCard = 0xFFFFFFFF;
|
||
|
||
for(unsigned int i = 0; i < g_pSystemInfo->GetNumAdapters(); ++i)
|
||
{
|
||
m_cbVideoCard.AddString(g_pSystemInfo->GetGraphicCardName(i));
|
||
if(g_pSystemInfo->m_dwCurrentVideoCard == 0xFFFFFFFF) g_pSystemInfo->m_dwCurrentVideoCard = i;
|
||
}
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
BOOL CClientSetupDlg::SetResolution(void)
|
||
{
|
||
m_cbResolution.ResetContent();
|
||
|
||
unsigned int i;
|
||
for(i = 0; i < g_pSystemInfo->m_Adapters[g_pSystemInfo->m_dwCurrentVideoCard].dwNumDevices; ++i)
|
||
{
|
||
if(g_pSystemInfo->m_d3dAvailableDevices[i].DeviceType == D3DDEVTYPE_HAL) break;
|
||
}
|
||
|
||
if(i == g_pSystemInfo->m_Adapters[g_pSystemInfo->m_dwCurrentVideoCard].dwNumDevices)
|
||
{
|
||
MessageBox(IDS_ERR_NOHW);
|
||
|
||
return FALSE;
|
||
} else
|
||
{
|
||
g_pSystemInfo->m_dwCurrentDevice = i;
|
||
}
|
||
|
||
g_pSystemInfo->m_dwCurrentResolution = 0xFFFFFFFF;
|
||
|
||
CString strText;
|
||
for(i = 0; i < g_pSystemInfo->m_d3dAvailableDevices[g_pSystemInfo->m_dwCurrentDevice].dwNumModes; i++)
|
||
{
|
||
strText.Format("%d x %d", g_pSystemInfo->m_d3dAvailableDevices[g_pSystemInfo->m_dwCurrentDevice].modes[i].Width,
|
||
g_pSystemInfo->m_d3dAvailableDevices[g_pSystemInfo->m_dwCurrentDevice].modes[i].Height);
|
||
m_cbResolution.AddString(strText);
|
||
|
||
if(g_pSystemInfo->m_dwCurrentResolution == 0xFFFFFFFF) g_pSystemInfo->m_dwCurrentResolution = i;
|
||
}
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
BOOL CClientSetupDlg::SetColor(void)
|
||
{
|
||
m_cbColor.ResetContent();
|
||
|
||
g_pSystemInfo->m_dwCurrentColor = 0xFFFFFFFF;
|
||
|
||
for(unsigned int i = 0; i < 10; ++i)
|
||
{
|
||
if(g_pSystemInfo->m_d3dAvailableDevices[g_pSystemInfo->m_dwCurrentDevice].modes[g_pSystemInfo->m_dwCurrentResolution].Format[i].Format != 0)
|
||
{
|
||
switch(g_pSystemInfo->m_d3dAvailableDevices[g_pSystemInfo->m_dwCurrentDevice].modes[g_pSystemInfo->m_dwCurrentResolution].Format[i].Format)
|
||
{
|
||
case D3DFMT_R5G6B5:
|
||
case D3DFMT_X1R5G5B5:
|
||
case D3DFMT_A1R5G5B5:
|
||
case D3DFMT_A4R4G4B4:
|
||
case D3DFMT_A8L8:
|
||
if(m_cbColor.FindString(0, "16") < 0)
|
||
m_cbColor.AddString("16");
|
||
break;
|
||
|
||
case D3DFMT_R8G8B8:
|
||
if(m_cbColor.FindString(0, "24") < 0)
|
||
m_cbColor.AddString("24");
|
||
break;
|
||
|
||
case D3DFMT_A8R8G8B8:
|
||
case D3DFMT_X8R8G8B8:
|
||
case D3DFMT_A8R3G3B2:
|
||
case D3DFMT_X4R4G4B4:
|
||
case D3DFMT_A2B10G10R10:
|
||
case D3DFMT_G16R16:
|
||
if(m_cbColor.FindString(0, "32") < 0)
|
||
m_cbColor.AddString("32");
|
||
break;
|
||
}
|
||
|
||
if(g_pSystemInfo->m_dwCurrentColor == 0xFFFFFFFF) g_pSystemInfo->m_dwCurrentColor = i;
|
||
}
|
||
}
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
BOOL CClientSetupDlg::SetRefresh(void)
|
||
{
|
||
m_cbRefresh.ResetContent();
|
||
|
||
g_pSystemInfo->m_dwCurrentRefresh = 0xFFFFFFFF;
|
||
|
||
CString strText;
|
||
for(unsigned long i = 0; i < 50; ++i)
|
||
{
|
||
if(g_pSystemInfo->m_d3dAvailableDevices[g_pSystemInfo->m_dwCurrentDevice].modes[g_pSystemInfo->m_dwCurrentResolution].Format[g_pSystemInfo->m_dwCurrentColor].dwRefresh[i] != 0)
|
||
{
|
||
strText.Format("%d Hz", g_pSystemInfo->m_d3dAvailableDevices[g_pSystemInfo->m_dwCurrentDevice].modes[g_pSystemInfo->m_dwCurrentResolution].Format[g_pSystemInfo->m_dwCurrentColor].dwRefresh[i]);
|
||
m_cbRefresh.AddString(strText);
|
||
|
||
if(g_pSystemInfo->m_dwCurrentRefresh == 0xFFFFFFFF) g_pSystemInfo->m_dwCurrentRefresh = i;
|
||
}
|
||
}
|
||
|
||
return TRUE;
|
||
}
|
||
void CClientSetupDlg::OnCbnSelchangeComboVideocard()
|
||
{
|
||
// TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
||
CString strCurrent;
|
||
|
||
m_cbVideoCard.GetLBText(m_cbVideoCard.GetCurSel(), strCurrent);
|
||
|
||
for(unsigned int i = 0; i < g_pSystemInfo->GetNumAdapters(); ++i)
|
||
{
|
||
if(!strCurrent.Compare(g_pSystemInfo->GetGraphicCardName(i)))
|
||
{
|
||
g_pSystemInfo->m_dwCurrentVideoCard = i;
|
||
break;
|
||
}
|
||
}
|
||
|
||
g_pSystemInfo->GetAvailableDevice(800, 600);
|
||
|
||
SetResolution();
|
||
m_cbResolution.SetCurSel(0);
|
||
m_iOldResolution = 0;
|
||
|
||
SetColor();
|
||
m_cbColor.SetCurSel(0);
|
||
SetRefresh();
|
||
m_cbRefresh.SetCurSel(0);
|
||
|
||
m_cbQuality.SetCurSel(GetQualityBySetting());
|
||
}
|
||
|
||
void CClientSetupDlg::OnCbnSelchangeComboMode()
|
||
{
|
||
// TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
||
CString strText, strCurrent;
|
||
|
||
m_cbResolution.GetLBText(m_cbResolution.GetCurSel(), strCurrent);
|
||
|
||
for(unsigned long i = 0; i < g_pSystemInfo->m_d3dAvailableDevices[g_pSystemInfo->m_dwCurrentDevice].dwNumModes; i++)
|
||
{
|
||
strText.Format("%d x %d", g_pSystemInfo->m_d3dAvailableDevices[g_pSystemInfo->m_dwCurrentDevice].modes[i].Width,
|
||
g_pSystemInfo->m_d3dAvailableDevices[g_pSystemInfo->m_dwCurrentDevice].modes[i].Height);
|
||
if(!strCurrent.Compare(strText))
|
||
{
|
||
g_pSystemInfo->m_dwCurrentResolution = i;
|
||
break;
|
||
}
|
||
}
|
||
|
||
SetColor();
|
||
m_cbColor.SetCurSel(0);
|
||
SetRefresh();
|
||
m_cbRefresh.SetCurSel(0);
|
||
|
||
m_cbQuality.SetCurSel(GetQualityBySetting());
|
||
}
|
||
|
||
void CClientSetupDlg::OnCbnSelchangeComboColor()
|
||
{
|
||
// TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
||
CString strText, strCurrent;
|
||
|
||
m_cbColor.GetLBText(m_cbColor.GetCurSel(), strCurrent);
|
||
|
||
for(unsigned int i = 0; i < 10; ++i)
|
||
{
|
||
if(g_pSystemInfo->m_d3dAvailableDevices[g_pSystemInfo->m_dwCurrentDevice].modes[g_pSystemInfo->m_dwCurrentResolution].Format[i].Format != 0)
|
||
{
|
||
switch(g_pSystemInfo->m_d3dAvailableDevices[g_pSystemInfo->m_dwCurrentDevice].modes[g_pSystemInfo->m_dwCurrentResolution].Format[i].Format)
|
||
{
|
||
case D3DFMT_R5G6B5:
|
||
case D3DFMT_X1R5G5B5:
|
||
case D3DFMT_A1R5G5B5:
|
||
case D3DFMT_A4R4G4B4:
|
||
case D3DFMT_A8L8:
|
||
strText = "16";
|
||
break;
|
||
|
||
case D3DFMT_R8G8B8:
|
||
strText = "24";
|
||
break;
|
||
|
||
case D3DFMT_A8R8G8B8:
|
||
case D3DFMT_X8R8G8B8:
|
||
case D3DFMT_A8R3G3B2:
|
||
case D3DFMT_X4R4G4B4:
|
||
case D3DFMT_A2B10G10R10:
|
||
case D3DFMT_G16R16:
|
||
strText = "32";
|
||
break;
|
||
}
|
||
|
||
if(!strCurrent.Compare(strText))
|
||
{
|
||
g_pSystemInfo->m_dwCurrentColor = i;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
SetRefresh();
|
||
m_cbRefresh.SetCurSel(0);
|
||
|
||
m_cbQuality.SetCurSel(GetQualityBySetting());
|
||
}
|
||
|
||
void CClientSetupDlg::WriteError(unsigned long dwErrorCode)
|
||
{
|
||
LPVOID lpMsgBuf;
|
||
CString strCaption;
|
||
if(!FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
||
NULL, dwErrorCode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
|
||
(LPTSTR) &lpMsgBuf, 0, NULL ))
|
||
{
|
||
// Handle the error.
|
||
strCaption.Format("ClientSetup Error (Code = %d)", GetLastError());
|
||
TCHAR strText[MAX_PATH];
|
||
ZeroMemory(strText, sizeof(strText));
|
||
LoadString(m_hResource, IDS_ERR_HANDLE, strText, 255);
|
||
CWnd::MessageBox(strText, strCaption);
|
||
} else
|
||
{
|
||
strCaption.Format("ClientSetup Error (Code = %d)", dwErrorCode);
|
||
CWnd::MessageBox((LPCTSTR)lpMsgBuf, strCaption);
|
||
}
|
||
|
||
LocalFree(lpMsgBuf);
|
||
}
|
||
|
||
BOOL CClientSetupDlg::CreateReg(HKEY hReg)
|
||
{
|
||
TCHAR strFile[MAX_PATH];
|
||
TCHAR strPath[MAX_PATH], strTemp[MAX_PATH];
|
||
|
||
strcpy(strFile, AfxGetApp()->m_pszExeName);
|
||
strcat(strFile, ".exe");
|
||
strcpy(strTemp, strdup(strFile));
|
||
strcpy(strFile, strlwr(strTemp));
|
||
|
||
GetModuleFileName(NULL, strPath, sizeof(strPath));
|
||
strcpy(strTemp, strPath);
|
||
strcpy(strTemp, strlwr(strTemp));
|
||
|
||
TCHAR *strCmp;
|
||
strCmp = strstr(strTemp, strFile);
|
||
int nResult = (int)(strCmp - strTemp - 1);
|
||
|
||
TCHAR strFolderValue[MAX_PATH];
|
||
strncpy(strFolderValue, strPath, nResult);
|
||
strFolderValue[nResult] = '\0';
|
||
|
||
TCHAR strFolder[100];
|
||
LoadString(m_hResource, IDS_FOLDER, strFolder, 100);
|
||
|
||
long lResult = RegSetValueEx(hReg, strFolder, 0, REG_SZ, (LPBYTE)strFolderValue, (unsigned long)strlen(strFolderValue));
|
||
if(ERROR_SUCCESS != lResult)
|
||
{
|
||
WriteError(lResult);
|
||
return FALSE;
|
||
}
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
void CClientSetupDlg::OnBnClickedOk()
|
||
{
|
||
// TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
||
UpdateData(TRUE);
|
||
|
||
HKEY hMPClientReg;
|
||
long lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, m_strRegRoot, 0, KEY_ALL_ACCESS, &hMPClientReg);
|
||
|
||
if(ERROR_SUCCESS != lResult)
|
||
{
|
||
if(ERROR_FILE_NOT_FOUND == lResult)
|
||
{
|
||
unsigned long dwDisp = 0;
|
||
lResult = RegCreateKeyEx(HKEY_LOCAL_MACHINE, m_strRegRoot, 0, NULL, REG_OPTION_NON_VOLATILE,
|
||
KEY_ALL_ACCESS, NULL, &hMPClientReg, &dwDisp);
|
||
if(ERROR_SUCCESS != lResult)
|
||
{
|
||
WriteError(lResult);
|
||
return;
|
||
}
|
||
|
||
if(FALSE == CreateReg(hMPClientReg))
|
||
{
|
||
RegCloseKey(hMPClientReg);
|
||
return;
|
||
} else
|
||
{
|
||
m_bInitWindow = TRUE;
|
||
}
|
||
} else
|
||
{
|
||
WriteError(lResult);
|
||
return;
|
||
}
|
||
}
|
||
|
||
// ºñµð¿ÀÄ«µå
|
||
char *strText;
|
||
strText = g_pSystemInfo->GetGraphicCardName(g_pSystemInfo->m_dwCurrentVideoCard);
|
||
RegSetValueEx(hMPClientReg, "Adapter", 0, REG_SZ, (LPBYTE)strText, (unsigned long)strlen(strText));
|
||
|
||
unsigned long dwValue;
|
||
|
||
// ÇØ»óµµ
|
||
dwValue = g_pSystemInfo->GetCurrentWidth();
|
||
RegSetValueEx(hMPClientReg, "Width", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = g_pSystemInfo->GetCurrentHeight();
|
||
RegSetValueEx(hMPClientReg, "Height", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
|
||
if(m_iOldResolution != g_pSystemInfo->m_dwCurrentResolution)
|
||
{
|
||
RegDeleteValue(hMPClientReg, "DlgControl");
|
||
RegDeleteValue(hMPClientReg, "SiegeTime");
|
||
RegDeleteValue(hMPClientReg, "QuickSlot");
|
||
RegDeleteValue(hMPClientReg, "Status");
|
||
RegDeleteValue(hMPClientReg, "Enchant");
|
||
RegDeleteValue(hMPClientReg, "Chat");
|
||
}
|
||
|
||
// »ö»ó
|
||
// dwValue = g_pSystemInfo->GetCurrentColor();
|
||
switch(g_pSystemInfo->GetCurrentColor())
|
||
{
|
||
case D3DFMT_R5G6B5:
|
||
case D3DFMT_X1R5G5B5:
|
||
case D3DFMT_A1R5G5B5:
|
||
case D3DFMT_A4R4G4B4:
|
||
case D3DFMT_A8L8:
|
||
dwValue = 16;
|
||
break;
|
||
|
||
case D3DFMT_R8G8B8:
|
||
dwValue = 24;
|
||
break;
|
||
|
||
case D3DFMT_A8R8G8B8:
|
||
case D3DFMT_X8R8G8B8:
|
||
case D3DFMT_A8R3G3B2:
|
||
case D3DFMT_X4R4G4B4:
|
||
case D3DFMT_A2B10G10R10:
|
||
case D3DFMT_G16R16:
|
||
dwValue = 32;
|
||
break;
|
||
|
||
default:
|
||
dwValue = 16;
|
||
break;
|
||
}
|
||
RegSetValueEx(hMPClientReg, "Depth", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
|
||
// Á֯ļö
|
||
dwValue = g_pSystemInfo->GetCurrentRefresh();
|
||
RegSetValueEx(hMPClientReg, "Refresh", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
|
||
// ¿øµµ¿ì ¸ðµå
|
||
dwValue = m_cbWindowMode.GetCurSel() ;
|
||
RegSetValueEx(hMPClientReg, "WindowMode", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
|
||
#ifdef _RYL_LANGUAGE
|
||
|
||
// ¾ð¾î ¸ðµå
|
||
dwValue = m_cbLanguage.GetCurSel() ;
|
||
RegSetValueEx(hMPClientReg, "Language", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
|
||
// ¸ÖƼ ·©±ÍÁö
|
||
dwValue = m_btMultiSupport.GetCheck();
|
||
RegSetValueEx(hMPClientReg, "MLSupport", 0, NULL, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
#endif
|
||
|
||
// InitValue ÀúÀå
|
||
{
|
||
CInitValue pInit;
|
||
pInit.m_lScreenX = g_pSystemInfo->GetCurrentWidth();
|
||
pInit.m_lScreenY = g_pSystemInfo->GetCurrentHeight();
|
||
|
||
CString strColor;
|
||
m_cbColor.GetLBText(m_cbColor.GetCurSel(), strColor);
|
||
pInit.m_lScreenColorDepth = atoi(strColor);
|
||
|
||
if(pInit.Save(hMPClientReg) == false)
|
||
{
|
||
MessageBox(IDS_ERR_INITVALUE);
|
||
}
|
||
}
|
||
|
||
// RenderOption ÀúÀå
|
||
{
|
||
CRenderOption::m_TerrainMultiDetalTexture = m_cbTextureQuailty.GetCurSel();
|
||
CRenderOption::m_GrassRendering = m_cbGrass.GetCurSel();
|
||
CRenderOption::m_RangeGrassRender = 0;
|
||
|
||
switch (m_cbViewRange.GetCurSel())
|
||
{
|
||
case 0:
|
||
CRenderOption::m_TerrainRange = 3;
|
||
CRenderOption::m_ObjectLOD = 1;
|
||
break;
|
||
|
||
case 1:
|
||
CRenderOption::m_TerrainRange = 5;
|
||
CRenderOption::m_ObjectLOD = 2;
|
||
break;
|
||
|
||
case 2:
|
||
CRenderOption::m_TerrainRange = 7;
|
||
CRenderOption::m_ObjectLOD = 3;
|
||
break;
|
||
}
|
||
|
||
CRenderOption::m_BuildingLightmap = m_cbHouseShadow.GetCurSel();
|
||
CRenderOption::m_CharacterProjectShadowTerrain = m_cbCharShadow.GetCurSel();
|
||
CRenderOption::m_CharacterProjectShadowBuilding = m_cbCharShadow.GetCurSel();
|
||
CRenderOption::m_TextureMethod = m_cbTextureQuailty.GetCurSel();
|
||
|
||
if(!g_pSystemInfo->GetAvailableShader(D3DPS_VERSION(1, 1), D3DVS_VERSION(1, 1)))
|
||
{
|
||
CRenderOption::m_ScreenFilter = m_cbScreenEffect.GetCurSel();
|
||
CRenderOption::m_WaterBumpEnvRendering = m_cbWaterEffect.GetCurSel();
|
||
// CRenderOption::m_bFullSceneEffect = m_cbGlowEffect.GetCurSel();
|
||
CRenderOption::m_bFullSceneEffect = 0;
|
||
} else
|
||
{
|
||
CRenderOption::m_ScreenFilter = 0;
|
||
CRenderOption::m_WaterBumpEnvRendering = 0;
|
||
CRenderOption::m_bFullSceneEffect = 0;
|
||
}
|
||
|
||
CRenderOption::m_bWeather = m_cbWeatherEffect.GetCurSel();
|
||
|
||
// ----------------------------------------------------------------------------------
|
||
// GeForce3 Option
|
||
|
||
CRenderOption::m_CharacterPerPixelLighting = 0;
|
||
CRenderOption::m_CharacterPerPixelSpecularLighting = 0;
|
||
CRenderOption::m_GrassAnimationUseVertexShader = 0;
|
||
|
||
|
||
CRenderOption::m_FullSceneAnti = 0;
|
||
CRenderOption::m_FullSceneSpecularGlare = 0;
|
||
CRenderOption::m_TreeAnimation = 1;
|
||
CRenderOption::m_CharacterPerPixelLighting = 0;
|
||
CRenderOption::m_CharacterPerPixelSpecularLighting = 0;
|
||
CRenderOption::m_CharacterSelfShadow = 0;
|
||
CRenderOption::m_DepthOfField = 0;
|
||
CRenderOption::m_FullSceneGlare = 0;
|
||
|
||
if(CRenderOption::Save(hMPClientReg) == false)
|
||
{
|
||
MessageBox(IDS_ERR_RENDEROPTION);
|
||
}
|
||
}
|
||
|
||
// °ÔÀÓ ÀÎÅÍÆäÀ̽º ÃʱâÈ
|
||
{
|
||
if(m_dwOldWidth != g_pSystemInfo->GetCurrentWidth() || m_dwOldHeight != g_pSystemInfo->GetCurrentHeight())
|
||
m_bInitWindow = TRUE;
|
||
|
||
if(m_bInitWindow)
|
||
{
|
||
unsigned long dwValue = 0;
|
||
|
||
RegSetValueEx(hMPClientReg, "Vertical", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
|
||
dwValue = 1;
|
||
RegSetValueEx(hMPClientReg, "ChatDlgType", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
|
||
dwValue = RYLMAINWINDOW::ALL_WINDOW;
|
||
RegSetValueEx(hMPClientReg, "VisibleFlag", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
/*
|
||
switch(g_pSystemInfo->GetCurrentWidth())
|
||
{
|
||
case 800:
|
||
{
|
||
dwValue = MAKELONG(555, 559); RegSetValueEx(hMPClientReg, "DlgControl", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(238, 560); RegSetValueEx(hMPClientReg, "QuickSlot", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(0, 559); RegSetValueEx(hMPClientReg, "Status", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(0, 116); RegSetValueEx(hMPClientReg, "Enchant", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(237, 438); RegSetValueEx(hMPClientReg, "Chat", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
}
|
||
break;
|
||
|
||
case 1024:
|
||
{
|
||
dwValue = MAKELONG(779, 727); RegSetValueEx(hMPClientReg, "DlgControl", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(461, 727); RegSetValueEx(hMPClientReg, "QuickSlot", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(0, 727); RegSetValueEx(hMPClientReg, "Status", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(0, 116); RegSetValueEx(hMPClientReg, "Enchant", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(461, 606); RegSetValueEx(hMPClientReg, "Chat", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
}
|
||
break;
|
||
|
||
case 1280:
|
||
{
|
||
dwValue = MAKELONG(1035, 919); RegSetValueEx(hMPClientReg, "DlgControl", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(0, 920); RegSetValueEx(hMPClientReg, "QuickSlot", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(0, 878); RegSetValueEx(hMPClientReg, "Status", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(0, 116); RegSetValueEx(hMPClientReg, "Enchant", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(472, 839); RegSetValueEx(hMPClientReg, "Chat", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
}
|
||
break;
|
||
|
||
case 1600:
|
||
{
|
||
dwValue = MAKELONG(1355, 1159); RegSetValueEx(hMPClientReg, "DlgControl", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(1037, 1159); RegSetValueEx(hMPClientReg, "QuickSlot", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(0, 1159); RegSetValueEx(hMPClientReg, "Status", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(0, 116); RegSetValueEx(hMPClientReg, "Enchant", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(0, 1079); RegSetValueEx(hMPClientReg, "Chat", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
}
|
||
break;
|
||
|
||
default:
|
||
{
|
||
dwValue = MAKELONG(555, 559); RegSetValueEx(hMPClientReg, "DlgControl", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(238, 560); RegSetValueEx(hMPClientReg, "QuickSlot", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(0, 559); RegSetValueEx(hMPClientReg, "Status", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(0, 116); RegSetValueEx(hMPClientReg, "Enchant", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
dwValue = MAKELONG(237, 438); RegSetValueEx(hMPClientReg, "Chat", 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(unsigned long));
|
||
}
|
||
break;
|
||
}
|
||
*/
|
||
}
|
||
}
|
||
|
||
RegCloseKey(hMPClientReg);
|
||
|
||
OnOK();
|
||
}
|
||
|
||
void CClientSetupDlg::OnBnClickedCancel()
|
||
{
|
||
// TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
||
// Minotaurs óÀ½ ¼Â¾÷ÀÌ¸é ¹«Á¶²« OK~
|
||
HKEY hKey = NULL;
|
||
|
||
BOOL bCheckSetup = FALSE;
|
||
|
||
if(
|
||
RegOpenKeyEx( HKEY_LOCAL_MACHINE, STR_CLIENT_REGISTRY_SUBKEY, 0, KEY_READ, &hKey ) !=
|
||
ERROR_SUCCESS )
|
||
{
|
||
MessageBox( IDS_ERR_NOTINSTALL );
|
||
PostQuitMessage(0);
|
||
EndDialog(0);
|
||
}
|
||
else
|
||
{
|
||
CInitValue ci;
|
||
ci.Init();
|
||
if( false == ci.Load( hKey ) )
|
||
{
|
||
bCheckSetup = TRUE;
|
||
}
|
||
|
||
if( false == CRenderOption::Load( hKey ) )
|
||
{
|
||
bCheckSetup = TRUE;
|
||
}
|
||
}
|
||
|
||
if(bCheckSetup)
|
||
OnBnClickedOk();
|
||
else
|
||
OnCancel();
|
||
}
|
||
|
||
//void CClientSetupDlg::OnCbnSelchangeComboQuality()
|
||
//{
|
||
// // TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
||
// SetSettingByQuality(m_cbQuality.GetCurSel());
|
||
//}
|
||
|
||
void CClientSetupDlg::OnCbnSelchangeComboRefresh()
|
||
{
|
||
// TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
||
CString strText, strCurrent;
|
||
|
||
m_cbRefresh.GetLBText(m_cbRefresh.GetCurSel(), strCurrent);
|
||
|
||
for(unsigned int i = 0; i < 50; ++i)
|
||
{
|
||
strText.Format("%d Hz", g_pSystemInfo->m_d3dAvailableDevices[g_pSystemInfo->m_dwCurrentDevice].modes[g_pSystemInfo->m_dwCurrentResolution].Format[g_pSystemInfo->m_dwCurrentColor].dwRefresh[i]);
|
||
if(!strCurrent.Compare(strText))
|
||
{
|
||
g_pSystemInfo->m_dwCurrentRefresh = i;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
void CClientSetupDlg::OnTcnSelchangeControltab(NMHDR *pNMHDR, LRESULT *pResult)
|
||
{
|
||
// TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
||
SetTabControl();
|
||
m_cbQuality.SetCurSel(GetQualityBySetting());
|
||
|
||
*pResult = 0;
|
||
}
|
||
|
||
void CClientSetupDlg::OnCbnSelchangeComboAbletexture()
|
||
{
|
||
// TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
||
}
|
||
|
||
void CClientSetupDlg::SetTabControl(void)
|
||
{
|
||
// ¼Óµµ¿¡´Â ¾È ÁÁÀº ÄÚµå switch¹®À¸·Î ó¸®ÇÏ´Â°Ô ´õ ¼Óµµ°¡ ºü¸£³ª, ¼Óµµ°¡ ÇÊ¿ä¾øÀ¸¹Ç·Î...
|
||
long lSel = m_tcControlTab.GetCurSel();
|
||
|
||
// ½Ã½ºÅÛ
|
||
GetDlgItem(IDC_STATIC_OS)->ShowWindow((lSel == TAB_SYSTEM)? SW_SHOW : SW_HIDE);
|
||
GetDlgItem(IDC_OS)->ShowWindow((lSel == TAB_SYSTEM)? SW_SHOW : SW_HIDE);
|
||
GetDlgItem(IDC_STATIC_MEMORY)->ShowWindow((lSel == TAB_SYSTEM)? SW_SHOW : SW_HIDE);
|
||
GetDlgItem(IDC_MEMORY)->ShowWindow((lSel == TAB_SYSTEM)? SW_SHOW : SW_HIDE);
|
||
GetDlgItem(IDC_STATIC_CPUSPEED)->ShowWindow((lSel == TAB_SYSTEM)? SW_SHOW : SW_HIDE);
|
||
GetDlgItem(IDC_CPUSPEED)->ShowWindow((lSel == TAB_SYSTEM)? SW_SHOW : SW_HIDE);
|
||
GetDlgItem(IDC_STATIC_HDDCAP)->ShowWindow((lSel == TAB_SYSTEM)? SW_SHOW : SW_HIDE);
|
||
GetDlgItem(IDC_HDDCAP)->ShowWindow((lSel == TAB_SYSTEM)? SW_SHOW : SW_HIDE);
|
||
GetDlgItem(IDC_STATIC_DIRECTVERSION)->ShowWindow((lSel == TAB_SYSTEM)? SW_SHOW : SW_HIDE);
|
||
GetDlgItem(IDC_DIRECTVERSION)->ShowWindow((lSel == TAB_SYSTEM)? SW_SHOW : SW_HIDE);
|
||
GetDlgItem(IDC_STATIC_SOUNDCARD)->ShowWindow((lSel == TAB_SYSTEM)? SW_SHOW : SW_HIDE);
|
||
GetDlgItem(IDC_SOUNDCARD)->ShowWindow((lSel == TAB_SYSTEM)? SW_SHOW : SW_HIDE);
|
||
|
||
// ±âº» ¿É¼Ç
|
||
GetDlgItem(IDC_STATIC_VIDEOCARD)->ShowWindow((lSel == TAB_GENERAL)? SW_SHOW : SW_HIDE);
|
||
m_cbVideoCard.ShowWindow((lSel == TAB_GENERAL)? SW_SHOW : SW_HIDE);
|
||
GetDlgItem(IDC_STATIC_RES)->ShowWindow((lSel == TAB_GENERAL)? SW_SHOW : SW_HIDE);
|
||
m_cbResolution.ShowWindow((lSel == TAB_GENERAL)? SW_SHOW : SW_HIDE);
|
||
GetDlgItem(IDC_STATIC_COLOR)->ShowWindow((lSel == TAB_GENERAL)? SW_SHOW : SW_HIDE);
|
||
m_cbColor.ShowWindow((lSel == TAB_GENERAL)? SW_SHOW : SW_HIDE);
|
||
GetDlgItem(IDC_STATIC_REFRESH)->ShowWindow((lSel == TAB_GENERAL)? SW_SHOW : SW_HIDE);
|
||
m_cbRefresh.ShowWindow((lSel == TAB_GENERAL)? SW_SHOW : SW_HIDE);
|
||
|
||
// GetDlgItem(IDC_STATIC_OPTIONSIMPLE)->ShowWindow((lSel == TAB_GENERAL)? SW_SHOW : SW_HIDE);
|
||
// m_cbQuality.ShowWindow((lSel == TAB_GENERAL)? SW_SHOW : SW_HIDE);
|
||
|
||
GetDlgItem(IDC_STATIC_WINDOWMODE)->ShowWindow((lSel == TAB_GENERAL)? SW_SHOW : SW_HIDE);
|
||
m_cbWindowMode.ShowWindow((lSel == TAB_GENERAL)? SW_SHOW : SW_HIDE);
|
||
|
||
#ifdef _RYL_LANGUAGE
|
||
GetDlgItem(IDC_STATIC_LANGUAGE)->ShowWindow((lSel == TAB_GENERAL)? SW_SHOW : SW_HIDE);
|
||
m_cbLanguage.ShowWindow((lSel == TAB_GENERAL)? SW_SHOW : SW_HIDE);
|
||
|
||
m_btMultiSupport.ShowWindow((lSel == TAB_GENERAL)? SW_SHOW : SW_HIDE);
|
||
#else
|
||
GetDlgItem(IDC_STATIC_LANGUAGE)->ShowWindow(SW_HIDE);
|
||
m_cbLanguage.ShowWindow(SW_HIDE);
|
||
|
||
m_btMultiSupport.ShowWindow(SW_HIDE);
|
||
#endif
|
||
|
||
|
||
// À©µµ¿ì¸ðµå Hide ÇÑ´Ù.
|
||
GetDlgItem(IDC_STATIC_WINDOWMODE)->ShowWindow(SW_HIDE);
|
||
m_cbWindowMode.ShowWindow(SW_HIDE);
|
||
|
||
// ¼¼ºÎ ¿É¼Ç
|
||
GetDlgItem(IDC_STATIC_CHARACTERSHADOW)->ShowWindow((lSel == TAB_ADVANCE)? SW_SHOW : SW_HIDE);
|
||
m_cbCharShadow.ShowWindow((lSel == TAB_ADVANCE)? SW_SHOW : SW_HIDE);
|
||
GetDlgItem(IDC_STATIC_HOUSESHADOW)->ShowWindow((lSel == TAB_ADVANCE)? SW_SHOW : SW_HIDE);
|
||
m_cbHouseShadow.ShowWindow((lSel == TAB_ADVANCE)? SW_SHOW : SW_HIDE);
|
||
GetDlgItem(IDC_STATIC_VIEWRANGE)->ShowWindow((lSel == TAB_ADVANCE)? SW_SHOW : SW_HIDE);
|
||
m_cbViewRange.ShowWindow((lSel == TAB_ADVANCE)? SW_SHOW : SW_HIDE);
|
||
GetDlgItem(IDC_STATIC_TEXTURE)->ShowWindow((lSel == TAB_ADVANCE)? SW_SHOW : SW_HIDE);
|
||
m_cbTextureQuailty.ShowWindow((lSel == TAB_ADVANCE)? SW_SHOW : SW_HIDE);
|
||
GetDlgItem(IDC_STATIC_GRASS)->ShowWindow((lSel == TAB_ADVANCE)? SW_SHOW : SW_HIDE);
|
||
m_cbGrass.ShowWindow((lSel == TAB_ADVANCE)? SW_SHOW : SW_HIDE);
|
||
|
||
// Ư¼ö È¿°ú
|
||
GetDlgItem(IDC_STATIC_SCREENFILTER)->ShowWindow((lSel == TAB_SPECIAL)? SW_SHOW : SW_HIDE);
|
||
m_cbScreenEffect.ShowWindow((lSel == TAB_SPECIAL)? SW_SHOW : SW_HIDE);
|
||
if(!g_pSystemInfo->GetAvailableShader(D3DPS_VERSION(1, 1), D3DVS_VERSION(1, 1)))
|
||
{
|
||
m_cbScreenEffect.EnableWindow();
|
||
} else
|
||
{
|
||
m_cbScreenEffect.SetCurSel(0);
|
||
m_cbScreenEffect.EnableWindow(FALSE);
|
||
}
|
||
GetDlgItem(IDC_STATIC_WATEREFFECT)->ShowWindow((lSel == TAB_SPECIAL)? SW_SHOW : SW_HIDE);
|
||
m_cbWaterEffect.ShowWindow((lSel == TAB_SPECIAL)? SW_SHOW : SW_HIDE);
|
||
if(!g_pSystemInfo->GetAvailableShader(D3DPS_VERSION(1, 1), D3DVS_VERSION(1, 1)))
|
||
{
|
||
m_cbWaterEffect.EnableWindow();
|
||
} else
|
||
{
|
||
m_cbWaterEffect.SetCurSel(0);
|
||
m_cbWaterEffect.EnableWindow(FALSE);
|
||
}
|
||
GetDlgItem(IDC_STATIC_GLOWEFFECT)->ShowWindow(SW_HIDE);
|
||
m_cbGlowEffect.ShowWindow(SW_HIDE);
|
||
if(!g_pSystemInfo->GetAvailableShader(D3DPS_VERSION(1, 1), D3DVS_VERSION(1, 1)))
|
||
{
|
||
m_cbGlowEffect.EnableWindow();
|
||
} else
|
||
{
|
||
m_cbGlowEffect.SetCurSel(0);
|
||
m_cbGlowEffect.EnableWindow(FALSE);
|
||
}
|
||
// GetDlgItem(IDC_STATIC_GLOWEFFECT)->ShowWindow((lSel == TAB_SPECIAL)? SW_SHOW : SW_HIDE);
|
||
// m_cbGlowEffect.ShowWindow((lSel == TAB_SPECIAL)? SW_SHOW : SW_HIDE);
|
||
GetDlgItem(IDC_STATIC_WEATHEREFFECT)->ShowWindow((lSel == TAB_SPECIAL)? SW_SHOW : SW_HIDE);
|
||
m_cbWeatherEffect.ShowWindow((lSel == TAB_SPECIAL)? SW_SHOW : SW_HIDE);
|
||
}
|
||
|
||
void CClientSetupDlg::InitString(void)
|
||
{
|
||
TCHAR strText[MAX_PATH], strLanguage[MAX_PATH];
|
||
|
||
LoadString(m_hResource, IDS_APP_TITLE, strText, 255); // ¾ÖÇø®ÄÉÀÌ¼Ç À̸§
|
||
LoadString(m_hResource, IDS_LANGUAGE, strLanguage, 255);
|
||
sprintf(strText, "%s (%s)", strText, strLanguage);
|
||
SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_NOTEXIST, strText, 255); // ¾øÀ½
|
||
m_cbCharShadow.AddString(strText);
|
||
m_cbScreenEffect.AddString(strText);
|
||
m_cbHouseShadow.AddString(strText);
|
||
m_cbGrass.AddString(strText);
|
||
m_cbWaterEffect.AddString(strText);
|
||
m_cbGlowEffect.AddString(strText);
|
||
m_cbWeatherEffect.AddString(strText);
|
||
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_EXIST, strText, 255); // ÀÖÀ½
|
||
m_cbCharShadow.AddString(strText);
|
||
m_cbScreenEffect.AddString(strText);
|
||
m_cbHouseShadow.AddString(strText);
|
||
m_cbGrass.AddString(strText);
|
||
m_cbWaterEffect.AddString(strText);
|
||
m_cbGlowEffect.AddString(strText);
|
||
m_cbWeatherEffect.AddString(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_FULLSCREEN, strText, 255); // Full screen
|
||
m_cbWindowMode.AddString(strText) ;
|
||
|
||
// LoadString(m_hResource, IDS_LOCAL_WINDOWMODE, strText, 255); // Window screen
|
||
// m_cbWindowMode.AddString(strText) ;
|
||
|
||
#ifdef _RYL_LANGUAGE
|
||
int iMaxLanguage = 7;
|
||
|
||
// ¾ð¾îÃß°¡
|
||
for(int i = 0; i < iMaxLanguage; ++i)
|
||
{
|
||
LoadString(m_hResource, IDS_LOCAL_LANGUAGE1+i, strText, 255); // Language1 (¿µ¾î)
|
||
m_cbLanguage.AddString(strText) ;
|
||
}
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_MULTILANGUAGESUPPORT, strText, 255); // ³·À½
|
||
m_btMultiSupport.SetWindowText(strText);
|
||
#endif
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_LOW, strText, 255); // ³·À½
|
||
m_cbTextureQuailty.AddString(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_HIGH, strText, 255); // ³ôÀ½
|
||
m_cbTextureQuailty.AddString(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_LOWSETTING, strText, 255); // ´Ü°Å¸®
|
||
m_cbViewRange.AddString(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_MEDIUMSETTING, strText, 255); // Á߰Ÿ®
|
||
m_cbViewRange.AddString(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_HIGHSETTING, strText, 255); // Àå°Å¸®
|
||
m_cbViewRange.AddString(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_CUSTOMSETTING, strText, 255); // »ç¿ëÀÚ ÁöÁ¤
|
||
m_cbQuality.AddString(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_LOWSETTING, strText, 255); // ÃÖ¼Ò »ç¾ç
|
||
m_cbQuality.AddString(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_MEDIUMSETTING, strText, 255); // Áß°£ »ç¾ç
|
||
m_cbQuality.AddString(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_HIGHSETTING, strText, 255); // ÃÖ°í »ç¾ç
|
||
m_cbQuality.AddString(strText);
|
||
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_OS, strText, 255); // ¿î¿µÃ¼Á¦
|
||
GetDlgItem(IDC_STATIC_OS)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_MEMORY, strText, 255); // ¸Þ¸ð¸®
|
||
GetDlgItem(IDC_STATIC_MEMORY)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_CPU, strText, 255); // CPU ¼Óµµ
|
||
GetDlgItem(IDC_STATIC_CPUSPEED)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_HDD, strText, 255); // ÇÏµå ¿ë·®
|
||
GetDlgItem(IDC_STATIC_HDDCAP)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_DIRECTX, strText, 255); // ´ÙÀÌ·ºÆ® ¹öÁ¯
|
||
GetDlgItem(IDC_STATIC_DIRECTVERSION)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_SOUNDCARD, strText, 255); // »ç¿îµå Ä«µå
|
||
GetDlgItem(IDC_STATIC_SOUNDCARD)->SetWindowText(strText);
|
||
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_VIDEOCARD, strText, 255); // ºñµð¿À Ä«µå
|
||
GetDlgItem(IDC_STATIC_VIDEOCARD)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_RESOLUTION, strText, 255); // ÇØ»óµµ
|
||
GetDlgItem(IDC_STATIC_RES)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_COLOR, strText, 255); // »ö±ò
|
||
GetDlgItem(IDC_STATIC_COLOR)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_REFRESH, strText, 255); // Á֯ļö
|
||
GetDlgItem(IDC_STATIC_REFRESH)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_SCREENMODE, strText, 255); // ½ºÅ©¸°¸ðµå
|
||
GetDlgItem(IDC_STATIC_WINDOWMODE)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_LANGUAGE, strText, 255); // ºñµð¿À Ä«µå
|
||
GetDlgItem(IDC_STATIC_LANGUAGE)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_QUALITY, strText, 255); // ±×·¡ÇÈ ¿É¼Ç
|
||
GetDlgItem(IDC_STATIC_OPTIONSIMPLE)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_CHARSHADOW, strText, 255); // ij¸¯ÅÍ ±×¸²ÀÚ
|
||
GetDlgItem(IDC_STATIC_CHARACTERSHADOW)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_HOUSESHADOW, strText, 255); // Áý ±×¸²ÀÚ
|
||
GetDlgItem(IDC_STATIC_HOUSESHADOW)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_VIEWRANGE, strText, 255); // ½Ã¾ß ¹üÀ§
|
||
GetDlgItem(IDC_STATIC_VIEWRANGE)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_TEXQUALITY, strText, 255); // ÅØ½ºÃÄ Ä÷¸®Æ¼
|
||
GetDlgItem(IDC_STATIC_TEXTURE)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_GRASS, strText, 255); // Ç®
|
||
GetDlgItem(IDC_STATIC_GRASS)->SetWindowText(strText);
|
||
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_SCREENEFFECT, strText, 255); // ȸé È¿°ú
|
||
GetDlgItem(IDC_STATIC_SCREENFILTER)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_WATEREFFECT, strText, 255); // ¹° È¿°ú
|
||
GetDlgItem(IDC_STATIC_WATEREFFECT)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_GLOWEFFECT, strText, 255); // ±Û·Î¿ì È¿°ú
|
||
GetDlgItem(IDC_STATIC_GLOWEFFECT)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_WEATHEREFFECT, strText, 255); // ±âÈÄ È¿°ú
|
||
GetDlgItem(IDC_STATIC_WEATHEREFFECT)->SetWindowText(strText);
|
||
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_SYSTEM, strText, 255); // ½Ã½ºÅÛ
|
||
m_tcControlTab.InsertItem(TAB_SYSTEM, strText, 0);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_GENERAL, strText, 255); // ±âº» ¿É¼Ç
|
||
m_tcControlTab.InsertItem(TAB_GENERAL, strText, 0);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_ADVANCE, strText, 255); // ¼¼ºÎ ¿É¼Ç
|
||
m_tcControlTab.InsertItem(TAB_ADVANCE, strText, 0);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_SPECIAL, strText, 255); // Ư¼ö È¿°ú
|
||
m_tcControlTab.InsertItem(TAB_SPECIAL, strText, 0);
|
||
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_OK, strText, 255); // È®ÀÎ ¹öư
|
||
GetDlgItem(IDOK)->SetWindowText(strText);
|
||
|
||
LoadString(m_hResource, IDS_LOCAL_CANCEL, strText, 255); // Ãë¼Ò ¹öư
|
||
GetDlgItem(IDCANCEL)->SetWindowText(strText);
|
||
}
|
||
|
||
static const unsigned long MAX_SETTING = 12;
|
||
// ÇØ»óµµX, ÇØ»óµµY, Ä®¶ó, ij¸¯Åͱ׸²ÀÚ, Áý±×¸²ÀÚ, ½Ã¾ß¹üÀ§, ÅØ½ºÃÄÄ÷¸®Æ¼, Ç®, ȸéÈ¿°ú, ¹°È¿°ú, ±Û·Î¿ì, ±âÈÄ
|
||
static unsigned long dwSetting[3][MAX_SETTING] =
|
||
{
|
||
{ 800, 600, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||
{ 1024, 768, 32, 1, 1, 1, 1, 1, 0, 0, 0, 0 },
|
||
{ 1280, 1024, 32, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
|
||
};
|
||
|
||
unsigned long CClientSetupDlg::GetQualityBySetting(void)
|
||
{
|
||
// ÇØ»óµµ Ž»ö
|
||
unsigned long dwPresentSetting[MAX_SETTING];
|
||
dwPresentSetting[0] = g_pSystemInfo->GetCurrentWidth();
|
||
dwPresentSetting[1] = g_pSystemInfo->GetCurrentHeight();
|
||
|
||
// »ö»ó
|
||
CString strCurrent;
|
||
m_cbColor.GetLBText(m_cbColor.GetCurSel(), strCurrent);
|
||
dwPresentSetting[2] = atoi(strCurrent);
|
||
|
||
dwPresentSetting[3] = m_cbCharShadow.GetCurSel();
|
||
dwPresentSetting[4] = m_cbHouseShadow.GetCurSel();
|
||
dwPresentSetting[5] = m_cbViewRange.GetCurSel();
|
||
dwPresentSetting[6] = m_cbTextureQuailty.GetCurSel();
|
||
dwPresentSetting[7] = m_cbGrass.GetCurSel();
|
||
dwPresentSetting[8] = m_cbScreenEffect.GetCurSel();
|
||
dwPresentSetting[9] = m_cbWaterEffect.GetCurSel();
|
||
dwPresentSetting[10] = m_cbGlowEffect.GetCurSel();
|
||
dwPresentSetting[11] = m_cbWeatherEffect.GetCurSel();
|
||
|
||
unsigned long i, j, dwQuality = 0; // 0Àº Ä¿½ºÅÒ
|
||
|
||
for(j = 0; j < 3; ++j)
|
||
{
|
||
for(i = 0; i < MAX_SETTING; ++i)
|
||
{
|
||
if(dwSetting[j][i] != dwPresentSetting[i]) break;
|
||
}
|
||
if(i == MAX_SETTING)
|
||
{
|
||
dwQuality = j + 1;
|
||
break;
|
||
}
|
||
}
|
||
|
||
return dwQuality;
|
||
}
|
||
|
||
void CClientSetupDlg::SetSettingByQuality(unsigned long dwQuality)
|
||
{
|
||
if(dwQuality == 0) return;
|
||
|
||
unsigned dwRQ = dwQuality - 1;
|
||
if(dwRQ > 2) return;
|
||
|
||
unsigned long dwWidth = dwSetting[dwRQ][0];
|
||
unsigned long dwHeight = dwSetting[dwRQ][1];
|
||
unsigned long dwRefresh = g_pSystemInfo->GetCurrentRefresh();
|
||
D3DFORMAT d3dFormat = g_pSystemInfo->GetFormat(dwSetting[dwRQ][2]);
|
||
|
||
char strResolution[MAX_PATH], strColor[MAX_PATH], strRefresh[MAX_PATH];
|
||
unsigned dwNumRes, dwNumColor, dwNumRefresh;
|
||
g_pSystemInfo->SetSetting(dwWidth, dwHeight, d3dFormat, dwRefresh);
|
||
dwNumRes = g_pSystemInfo->m_dwCurrentResolution;
|
||
dwNumColor = g_pSystemInfo->m_dwCurrentColor;
|
||
dwNumRefresh = g_pSystemInfo->m_dwCurrentRefresh;
|
||
|
||
SetResolution();
|
||
g_pSystemInfo->m_dwCurrentResolution = dwNumRes;
|
||
g_pSystemInfo->GetResolutionByString("%d x %d", strResolution);
|
||
m_cbResolution.SetCurSel(m_cbResolution.FindString(0, strResolution));
|
||
|
||
SetColor();
|
||
g_pSystemInfo->m_dwCurrentColor = dwNumColor;
|
||
g_pSystemInfo->GetColorByString("%d", strColor);
|
||
m_cbColor.SetCurSel(m_cbColor.FindString(0, strColor));
|
||
SetRefresh();
|
||
g_pSystemInfo->m_dwCurrentRefresh = dwNumRefresh;
|
||
g_pSystemInfo->GetRefreshByString("%d", strRefresh);
|
||
m_cbRefresh.SetCurSel(m_cbRefresh.FindString(0, strRefresh));
|
||
|
||
m_cbCharShadow.SetCurSel(dwSetting[dwRQ][3]);
|
||
m_cbHouseShadow.SetCurSel(dwSetting[dwRQ][4]);
|
||
m_cbViewRange.SetCurSel(dwSetting[dwRQ][5]);
|
||
m_cbTextureQuailty.SetCurSel(dwSetting[dwRQ][6]);
|
||
m_cbGrass.SetCurSel(dwSetting[dwRQ][7]);
|
||
m_cbScreenEffect.SetCurSel(dwSetting[dwRQ][8]);
|
||
m_cbWaterEffect.SetCurSel(dwSetting[dwRQ][9]);
|
||
m_cbGlowEffect.SetCurSel(dwSetting[dwRQ][10]);
|
||
m_cbWeatherEffect.SetCurSel(dwSetting[dwRQ][11]);
|
||
}
|
||
void CClientSetupDlg::OnCbnSelchangeComboWindowmode()
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
}
|
||
|
||
void CClientSetupDlg::OnStnClickedStaticWindowmode()
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
}
|