Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
264 lines
7.4 KiB
C++
264 lines
7.4 KiB
C++
// DlgStart.cpp : implementation file
|
||
//
|
||
|
||
#include "stdafx.h"
|
||
#include "WorldCreator.h"
|
||
#include "DlgStart.h"
|
||
#include "RenderOption.h"
|
||
#include "BaseDataDefine.h"
|
||
|
||
#include <EnumD3D.h>
|
||
#include ".\dlgstart.h"
|
||
#ifdef _DEBUG
|
||
#define new DEBUG_NEW
|
||
#undef THIS_FILE
|
||
static char THIS_FILE[] = __FILE__;
|
||
#endif
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// CDlgStart dialog
|
||
|
||
|
||
CDlgStart::CDlgStart(CWnd* pParent /*=NULL*/)
|
||
: CDialog(CDlgStart::IDD, pParent)
|
||
{
|
||
//{{AFX_DATA_INIT(CDlgStart)
|
||
m_bBuildingLightmap = TRUE;
|
||
m_bBSPLightmap = FALSE;
|
||
m_bBSPTerrainRendering = FALSE;
|
||
m_CharacterBuildingLighting = TRUE;
|
||
m_bCharacterLigting = TRUE;
|
||
m_bCharacterShadow = FALSE;
|
||
m_bCharacterSpecular = FALSE;
|
||
m_bFullSceneGlare = FALSE;
|
||
m_bGrassRendering = TRUE;
|
||
m_bMultiDetailTexture = TRUE;
|
||
m_bRangeGrass = FALSE;
|
||
m_bSpecularGlare = FALSE;
|
||
m_bTreeAnimation = TRUE;
|
||
m_bWaterBumpEnv = FALSE;
|
||
m_nGrassRange = 0;
|
||
m_nTerrainLSizeX = 0;
|
||
m_nTerrainLSizeY = 0;
|
||
m_nTextureSkipLevel = 0;
|
||
m_CharacterBuildingShadow = TRUE;
|
||
m_bAllObjectBump = FALSE;
|
||
m_bGF3OPTION = FALSE;
|
||
m_bRain = FALSE;
|
||
m_bWaterBump = FALSE;
|
||
m_bFullSceneEffect = FALSE;
|
||
//}}AFX_DATA_INIT
|
||
m_nSelectDevice=1;
|
||
}
|
||
|
||
|
||
void CDlgStart::DoDataExchange(CDataExchange* pDX)
|
||
{
|
||
CDialog::DoDataExchange(pDX);
|
||
//{{AFX_DATA_MAP(CDlgStart)
|
||
DDX_Control(pDX, IDC_COMBOZONE, m_ZoneSelect);
|
||
DDX_Control(pDX, IDC_COMBO_ADAPTER, m_adapter);
|
||
DDX_Control(pDX, IDC_COMBO_DEVICE, m_device);
|
||
DDX_Check(pDX, IDC_CHECK_BLDLIGHTMAP_OPTION, m_bBuildingLightmap);
|
||
DDX_Check(pDX, IDC_CHECK_BSPLIGHTMAP_OPTION, m_bBSPLightmap);
|
||
DDX_Check(pDX, IDC_CHECK_BSPTERRAIN_OPTION, m_bBSPTerrainRendering);
|
||
DDX_Check(pDX, IDC_CHECK_CHRBLDLIGHT_OPTION, m_CharacterBuildingLighting);
|
||
DDX_Check(pDX, IDC_CHECK_CHRLIGHTING_OPTION, m_bCharacterLigting);
|
||
DDX_Check(pDX, IDC_CHECK_CHRSHADOW_OPTION, m_bCharacterShadow);
|
||
DDX_Check(pDX, IDC_CHECK_CHRSPECULAR_OPTION, m_bCharacterSpecular);
|
||
DDX_Check(pDX, IDC_CHECK_GLARE_OPTION, m_bFullSceneGlare);
|
||
DDX_Check(pDX, IDC_CHECK_GRASS_OPTION, m_bGrassRendering);
|
||
DDX_Check(pDX, IDC_CHECK_MULTIDETAIL_OPTION, m_bMultiDetailTexture);
|
||
DDX_Check(pDX, IDC_CHECK_RANGEGRASS_OPTION, m_bRangeGrass);
|
||
DDX_Check(pDX, IDC_CHECK_SPECULARGLARE_OPTION, m_bSpecularGlare);
|
||
DDX_Check(pDX, IDC_CHECK_TREEANI_OPTION, m_bTreeAnimation);
|
||
DDX_Check(pDX, IDC_CHECK_WATERBUMPENV_OPTION, m_bWaterBumpEnv);
|
||
DDX_Text(pDX, IDC_EDIT_GRASSRANGE, m_nGrassRange);
|
||
DDX_Text(pDX, IDC_EDIT_LSIZEX, m_nTerrainLSizeX);
|
||
DDX_Text(pDX, IDC_EDIT_LSIZEY, m_nTerrainLSizeY);
|
||
DDX_Text(pDX, IDC_EDIT_TEXTURESKIPLEVEL, m_nTextureSkipLevel);
|
||
DDX_Check(pDX, IDC_CHECK_CHRINBLDSHADOW_OPTION, m_CharacterBuildingShadow);
|
||
DDX_Check(pDX, IDC_CHECK_PerPixelLight, m_bAllObjectBump);
|
||
DDX_Check(pDX, IDC_CHECK_GF3OPTION, m_bGF3OPTION);
|
||
DDX_Check(pDX, IDC_RAIN, m_bRain);
|
||
DDX_Check(pDX, IDC_WATER, m_bWaterBump);
|
||
DDX_Check(pDX, IDC_FULLSCENEEFFECT, m_bFullSceneEffect);
|
||
//}}AFX_DATA_MAP
|
||
}
|
||
|
||
|
||
BEGIN_MESSAGE_MAP(CDlgStart, CDialog)
|
||
//{{AFX_MSG_MAP(CDlgStart)
|
||
ON_CBN_SELCHANGE(IDC_COMBO_DEVICE, OnSelchangeComboDevice)
|
||
ON_EN_CHANGE(IDC_EDIT_TEXTURESKIPLEVEL, OnChangeEditTextureskiplevel)
|
||
ON_BN_CLICKED(IDC_CHECK_GF3OPTION, OnCheckGf3option)
|
||
//}}AFX_MSG_MAP
|
||
ON_BN_CLICKED(IDC_RAIN, OnBnClickedRain)
|
||
ON_BN_CLICKED(IDC_CHECK_PerPixelLight, OnBnClickedCheckPerpixellight)
|
||
END_MESSAGE_MAP()
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// CDlgStart message handlers
|
||
|
||
BOOL CDlgStart::OnInitDialog()
|
||
{
|
||
CDialog::OnInitDialog();
|
||
// TODO: Add extra initialization here
|
||
|
||
CEnumD3D::Enum();
|
||
/*
|
||
m_device.AddString();
|
||
CEnumD3D::m_Adapters[0].d3dAdapterIdentifier
|
||
*/
|
||
m_adapter.AddString(CEnumD3D::m_Adapters[0].d3dAdapterIdentifier.Description);
|
||
m_device.AddString(CEnumD3D::m_Adapters[0].devices[0].strDesc);
|
||
m_device.AddString(CEnumD3D::m_Adapters[0].devices[1].strDesc);
|
||
|
||
SetZoneList();
|
||
|
||
/*
|
||
for(int i=0;i<CEnumD3D::m_deviceinfo.num;i++)
|
||
{
|
||
m_device.AddString(CEnumD3D::m_deviceinfo[i]->strDesc);
|
||
}
|
||
*/
|
||
m_adapter.SetCurSel(0);
|
||
m_device.SetCurSel(0);
|
||
m_ZoneSelect.SetCurSel(0);
|
||
|
||
//m_ZoneValue = 0;
|
||
UpdateData(false);
|
||
|
||
return TRUE; // return TRUE unless you set the focus to a control
|
||
// EXCEPTION: OCX Property Pages should return FALSE
|
||
}
|
||
void CDlgStart::SetZoneList() {
|
||
char buf[50] = {0};
|
||
|
||
char path[256];
|
||
GetCurrentDirectory(256,path);
|
||
sprintf(path,"%s\\ZoneList.dat",path);
|
||
FILE *fp;
|
||
fp = fopen(path,"rt");
|
||
if(fp) {
|
||
while(!feof(fp)) {
|
||
memset(buf,0,sizeof(char) * 50);
|
||
fscanf(fp,"%s",buf);
|
||
m_ZoneSelect.AddString(buf);
|
||
}
|
||
fclose(fp);
|
||
}
|
||
else {
|
||
MessageBox(path,"Error",MB_OK);
|
||
m_ZoneSelect.AddString("Default");
|
||
|
||
}
|
||
|
||
GetCurrentDirectory(256,path);
|
||
sprintf(path,"%s\\CHRPATH.dat",path);
|
||
fp = fopen(path,"rt");
|
||
if(fp) {
|
||
fscanf(fp,"%s",WORLDCHRDIFF);
|
||
fscanf(fp,"%s",WORLDCHRBUM);
|
||
fscanf(fp,"%s",WORLDCHRENV);
|
||
|
||
fclose(fp);
|
||
}
|
||
|
||
}
|
||
void CDlgStart::OnSelchangeComboDevice()
|
||
{
|
||
UpdateData();
|
||
m_nSelectDevice=m_device.GetCurSel();
|
||
// TODO: Add your control notification handler code here
|
||
|
||
}
|
||
|
||
void CDlgStart::OnOK()
|
||
{
|
||
// TODO: Add extra validation here
|
||
UpdateData();
|
||
|
||
CRenderOption::m_AllObjectBump=m_bAllObjectBump;
|
||
CRenderOption::m_CharacterPerPixelLighting=m_bCharacterLigting;
|
||
CRenderOption::m_CharacterPerPixelSpecularLighting=m_bCharacterSpecular;
|
||
CRenderOption::m_BuildingLightmap=m_bBuildingLightmap;
|
||
CRenderOption::m_FullSceneGlare=m_bFullSceneGlare;
|
||
CRenderOption::m_FullSceneSpecularGlare=m_bSpecularGlare;
|
||
CRenderOption::m_RangeGrassRender=m_bRangeGrass;
|
||
CRenderOption::m_WaterBumpEnvRendering=m_bWaterBumpEnv;
|
||
CRenderOption::m_GrassRendering=m_bGrassRendering;
|
||
|
||
CRenderOption::m_TerrainMultiDetalTexture=m_bMultiDetailTexture;
|
||
CRenderOption::m_CharacterProjectShadowTerrain=m_CharacterBuildingShadow;
|
||
CRenderOption::m_CharacterProjectShadowBuilding=m_CharacterBuildingShadow;
|
||
CRenderOption::m_CharacterSelfShadow=m_bCharacterShadow;
|
||
CRenderOption::m_bRain = (bool)m_bRain;
|
||
CRenderOption::m_bWaterBump = m_bWaterBump;
|
||
CRenderOption::m_bFullSceneEffect = (bool)m_bFullSceneEffect;
|
||
|
||
char strZoneString[7] = {0};
|
||
|
||
int k = m_ZoneSelect.GetCurSel();
|
||
if(k == 0) //default
|
||
strcpy(CRenderOption::m_strBaseGraphicsDataPath,"");
|
||
else {
|
||
sprintf(strZoneString,"Zone%d",k);
|
||
strcpy(CRenderOption::m_strBaseGraphicsDataPath,strZoneString);
|
||
}
|
||
|
||
|
||
CDialog::OnOK();
|
||
}
|
||
|
||
void CDlgStart::OnChangeEditTextureskiplevel()
|
||
{
|
||
UpdateData();
|
||
// TODO: If this is a RICHEDIT control, the control will not
|
||
// send this notification unless you override the CDialog::OnInitDialog()
|
||
// function and call CRichEditCtrl().SetEventMask()
|
||
// with the ENM_CHANGE flag ORed into the mask.
|
||
|
||
// TODO: Add your control notification handler code here
|
||
|
||
}
|
||
|
||
void CDlgStart::OnCheckGf3option()
|
||
{
|
||
// TODO: Add your control notification handler code here
|
||
UpdateData();
|
||
if(m_bGF3OPTION)
|
||
{
|
||
m_bCharacterLigting = TRUE;
|
||
m_bCharacterSpecular = TRUE;
|
||
m_bFullSceneGlare = TRUE;
|
||
m_bRangeGrass = TRUE;
|
||
m_bSpecularGlare = TRUE;
|
||
m_bWaterBumpEnv = TRUE;
|
||
m_bAllObjectBump = TRUE;
|
||
m_bCharacterShadow = TRUE;
|
||
}
|
||
else
|
||
{
|
||
m_bCharacterLigting = FALSE;
|
||
m_bCharacterSpecular = FALSE;
|
||
m_bFullSceneGlare = FALSE;
|
||
m_bRangeGrass = FALSE;
|
||
m_bSpecularGlare = FALSE;
|
||
m_bWaterBumpEnv = FALSE;
|
||
m_bAllObjectBump = FALSE;
|
||
m_bCharacterShadow = FALSE;
|
||
}
|
||
UpdateData(FALSE);
|
||
}
|
||
|
||
void CDlgStart::OnBnClickedRain()
|
||
{
|
||
// TODO: <20><><EFBFBD> <20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
||
}
|
||
|
||
void CDlgStart::OnBnClickedCheckPerpixellight()
|
||
{
|
||
// TODO: <20><><EFBFBD> <20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
||
}
|