PrefsDlg.cpp (23518B)
1 /* 2 =========================================================================== 3 Copyright (C) 1999-2005 Id Software, Inc. 4 5 This file is part of Quake III Arena source code. 6 7 Quake III Arena source code is free software; you can redistribute it 8 and/or modify it under the terms of the GNU General Public License as 9 published by the Free Software Foundation; either version 2 of the License, 10 or (at your option) any later version. 11 12 Quake III Arena source code is distributed in the hope that it will be 13 useful, but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with Foobar; if not, write to the Free Software 19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 20 =========================================================================== 21 */ 22 // PrefsDlg.cpp : implementation file 23 // 24 25 #include "stdafx.h" 26 #include "PrefsDlg.h" 27 #include "shlobj.h" 28 29 #ifdef _DEBUG 30 #define new DEBUG_NEW 31 #undef THIS_FILE 32 static char THIS_FILE[] = __FILE__; 33 #endif 34 35 #define PREF_SECTION "Prefs" 36 #define INTERNAL_SECTION "Internals" 37 #define MOUSE_KEY "MouseButtons" 38 #define WINDOW_KEY "QE4StyleWindows" 39 #define LAYOUT_KEY "WindowLayout" 40 #define Q2_KEY "Quake2Dir" 41 #define RUNQ2_KEY "RunQuake2Run" 42 #define TLOCK_KEY "TextureLock" 43 #define RLOCK_KEY "RotateLock" 44 #define LOADLAST_KEY "LoadLast" 45 #define LOADLASTMAP_KEY "LoadLastMap" 46 #define LASTPROJ_KEY "LastProject" 47 #define LASTMAP_KEY "LastMap" 48 #define RUN_KEY "RunBefore" 49 #define _3DFX_KEY "Use3Dfx" 50 #define FACE_KEY "NewFaceGrab" 51 #define BSP_KEY "InternalBSP" 52 #define RCLICK_KEY "NewRightClick" 53 #define VERTEX_KEY "NewVertex" 54 #define AUTOSAVE_KEY "Autosave" 55 #define AUTOSAVETIME_KEY "AutosaveMinutes" 56 #define PAK_KEY "UsePAK" 57 #define NEWAPPLY_KEY "ApplyDismissesSurface" 58 #define HACK_KEY "Gatewayescapehack" 59 #define TEXTURE_KEY "NewTextureWindowStuff" 60 #define TINYBRUSH_KEY "CleanTinyBrushes" 61 #define TINYSIZE_KEY "CleanTinyBrusheSize" 62 #define SNAPSHOT_KEY "Snapshots" 63 #define PAKFILE_KEY "PAKFile" 64 #define STATUS_KEY "StatusPointSize" 65 #define MOVESPEED_KEY "MoveSpeed" 66 #define ANGLESPEED_KEY "AngleSpeed" 67 #define SETGAME_KEY "UseSetGame" 68 #define CAMXYUPDATE_KEY "CamXYUpdate" 69 #define LIGHTDRAW_KEY "NewLightStyle" 70 #define WHATGAME_KEY "WhichGame" 71 #define CUBICCLIP_KEY "CubicClipping" 72 #define CUBICSCALE_KEY "CubicScale" 73 #define ALTEDGE_KEY "ALTEdgeDrag" 74 #define TEXTUREBAR_KEY "UseTextureBar" 75 #define FACECOLORS_KEY "FaceColors" 76 #define QE4PAINT_KEY "QE4Paint" 77 #define SNAPT_KEY "SnapT" 78 #define XZVIS_KEY "XZVIS" 79 #define YZVIS_KEY "YZVIS" 80 #define ZVIS_KEY "ZVIS" 81 #define SIZEPAINT_KEY "SizePainting" 82 #define DLLENTITIES_KEY "DLLEntities" 83 #define WIDETOOLBAR_KEY "WideToolBar" 84 #define NOCLAMP_KEY "NoClamp" 85 #define PREFAB_KEY "PrefabPath" 86 #define USERINI_KEY "UserINIPath" 87 #define ROTATION_KEY "Rotation" 88 #define SGIOPENGL_KEY "SGIOpenGL" 89 #define BUGGYICD_KEY "BuggyICD" 90 #define HICOLOR_KEY "HiColorTextures" 91 #define CHASEMOUSE_KEY "ChaseMouse" 92 #define ENTITYSHOW_KEY "EntityShow" 93 #define TEXTURESCALE_KEY "TextureScale" 94 #define TEXTURESCROLLBAR_KEY "TextureScrollbar" 95 #define DISPLAYLISTS_KEY "UseDisplayLists" 96 #define NORMALIZECOLORS_KEY "NormalizeColors" 97 #define SHADERS_KEY "UseShaders" 98 #define SWITCHCLIP_KEY "SwitchClipKey" 99 #define SELWHOLEENTS_KEY "SelectWholeEntitiesKey" 100 #define TEXTURESUBSET_KEY "UseTextureSubsetLoading" 101 #define TEXTUREQUALITY_KEY "TextureQuality" 102 #define SHOWSHADERS_KEY "ShowShaders" 103 #define SHADERTEST_KEY "ShaderTest" 104 #define GLLIGHTING_KEY "UseGLLighting" 105 #define LOADSHADERS_KEY "LoadShaders" 106 #define NOSTIPPLE_KEY "NoStipple" 107 #define UNDOLEVELS_KEY "UndoLevels" 108 109 #define MOUSE_DEF 1 110 #define WINDOW_DEF 0 111 #define Q2_DEF "c:\\quake2\\quake2.exe" 112 #define Q3_DEF "c:\\Program Files\\Quake III Arena\\quake3.exe" 113 #define PAKFILE_DEF "c:\\quake2\\baseq2\\pak0.pak" 114 #define RUNQ2_DEF 0 115 #define TLOCK_DEF 1 116 #define LOADLAST_DEF 1 117 #define RUN_DEF 0 118 119 ///////////////////////////////////////////////////////////////////////////// 120 // CPrefsDlg dialog 121 122 123 CPrefsDlg::CPrefsDlg(CWnd* pParent /*=NULL*/) 124 : CDialog(CPrefsDlg::IDD, pParent) 125 { 126 //{{AFX_DATA_INIT(CPrefsDlg) 127 m_strQuake2 = _T("c:\\quake3\\"); 128 m_nMouse = 1; 129 m_nView = 0; 130 m_bLoadLast = FALSE; 131 m_bFace = FALSE; 132 m_bInternalBSP = FALSE; 133 m_bRightClick = FALSE; 134 m_bRunQuake = FALSE; 135 m_bSetGame = FALSE; 136 m_bVertex = FALSE; 137 m_bAutoSave = TRUE; 138 m_bNewApplyHandling = FALSE; 139 m_strAutoSave = _T("5"); 140 m_bPAK = FALSE; 141 m_bLoadLastMap = FALSE; 142 m_bTextureWindow = FALSE; 143 m_bSnapShots = FALSE; 144 m_fTinySize = 0.5; 145 m_bCleanTiny = FALSE; 146 m_strPAKFile = _T("c:\\quake2\\baseq2\\pak0.pak"); 147 m_nStatusSize = 10; 148 m_bCamXYUpdate = FALSE; 149 m_bNewLightDraw = FALSE; 150 m_strPrefabPath = _T(""); 151 m_nWhatGame = 0; 152 m_strWhatGame = _T("Quake3"); 153 m_bALTEdge = FALSE; 154 m_bTextureBar = FALSE; 155 m_bFaceColors = FALSE; 156 m_bQE4Painting = TRUE; 157 m_bSnapTToGrid = FALSE; 158 m_bXZVis = FALSE; 159 m_bYZVis = FALSE; 160 m_bZVis = FALSE; 161 m_bSizePaint = FALSE; 162 m_bDLLEntities = FALSE; 163 m_bWideToolbar = TRUE; 164 m_bNoClamp = FALSE; 165 m_strUserPath = _T(""); 166 m_nRotation = 0; 167 m_bSGIOpenGL = FALSE; 168 m_bBuggyICD = FALSE; 169 m_bHiColorTextures = TRUE; 170 m_bChaseMouse = FALSE; 171 m_bTextureScrollbar = TRUE; 172 m_bDisplayLists = TRUE; 173 m_bShowShaders = FALSE; 174 m_nShader = -1; 175 m_bNoStipple = FALSE; 176 //}}AFX_DATA_INIT 177 //LoadPrefs(); 178 m_bSelectCurves = TRUE; 179 m_bSelectTerrain = TRUE; 180 m_nEntityShowState = 0; 181 m_nTextureScale = 2; 182 m_bSwitchClip = FALSE; 183 m_bSelectWholeEntities = TRUE; 184 m_nTextureQuality = 3; 185 m_bShowShaders = TRUE; 186 m_bGLLighting = FALSE; 187 m_nShader = 0; 188 m_nUndoLevels = 64; 189 } 190 191 192 193 194 void CPrefsDlg::DoDataExchange(CDataExchange* pDX) 195 { 196 CDialog::DoDataExchange(pDX); 197 //{{AFX_DATA_MAP(CPrefsDlg) 198 DDX_Control(pDX, IDC_SPIN_UNDO, m_wndUndoSpin); 199 DDX_Control(pDX, IDC_SPIN_POINTSIZE, m_wndFontSpin); 200 DDX_Control(pDX, IDC_SLIDER_TEXTUREQUALITY, m_wndTexturequality); 201 DDX_Control(pDX, IDC_COMBO_WHATGAME, m_wndWhatGame); 202 DDX_Control(pDX, IDC_SLIDER_CAMSPEED, m_wndCamSpeed); 203 DDX_Control(pDX, IDC_SPIN_AUTOSAVE, m_wndSpin); 204 DDX_Text(pDX, IDC_EDIT_QUAKE2, m_strQuake2); 205 DDX_Radio(pDX, IDC_RADIO_MOUSE, m_nMouse); 206 DDX_Radio(pDX, IDC_RADIO_VIEWTYPE, m_nView); 207 DDX_Check(pDX, IDC_CHECK_LOADLAST, m_bLoadLast); 208 DDX_Check(pDX, IDC_CHECK_FACE, m_bFace); 209 DDX_Check(pDX, IDC_CHECK_INTERNALBSP, m_bInternalBSP); 210 DDX_Check(pDX, IDC_CHECK_RIGHTCLICK, m_bRightClick); 211 DDX_Check(pDX, IDC_CHECK_RUNQUAKE, m_bRunQuake); 212 DDX_Check(pDX, IDC_CHECK_SETGAME, m_bSetGame); 213 DDX_Check(pDX, IDC_CHECK_VERTEX, m_bVertex); 214 DDX_Check(pDX, IDC_CHECK_AUTOSAVE, m_bAutoSave); 215 DDX_Text(pDX, IDC_EDIT_AUTOSAVE, m_strAutoSave); 216 DDX_Check(pDX, IDC_CHECK_PAK, m_bPAK); 217 DDX_Check(pDX, IDC_CHECK_LOADLASTMAP, m_bLoadLastMap); 218 DDX_Check(pDX, IDC_CHECK_TEXTUREWINDOW, m_bTextureWindow); 219 DDX_Check(pDX, IDC_CHECK_SNAPSHOTS, m_bSnapShots); 220 DDX_Text(pDX, IDC_EDIT_PAKFILE, m_strPAKFile); 221 DDX_Text(pDX, IDC_EDIT_STATUSPOINTSIZE, m_nStatusSize); 222 DDV_MinMaxInt(pDX, m_nStatusSize, 2, 14); 223 DDX_Check(pDX, IDC_CHECK_CAMXYUPDATE, m_bCamXYUpdate); 224 DDX_Check(pDX, IDC_CHECK_LIGHTDRAW, m_bNewLightDraw); 225 DDX_Text(pDX, IDC_EDIT_PREFABPATH, m_strPrefabPath); 226 DDX_CBString(pDX, IDC_COMBO_WHATGAME, m_strWhatGame); 227 DDX_Check(pDX, IDC_CHECK_ALTDRAG, m_bALTEdge); 228 DDX_Check(pDX, IDC_CHECK_TEXTURETOOLBAR, m_bTextureBar); 229 DDX_Check(pDX, IDC_CHECK_FACECOLOR, m_bFaceColors); 230 DDX_Check(pDX, IDC_CHECK_QE4PAINTING, m_bQE4Painting); 231 DDX_Check(pDX, IDC_CHECK_SNAPT, m_bSnapTToGrid); 232 DDX_Check(pDX, IDC_CHECK_SIZEPAINT, m_bSizePaint); 233 DDX_Check(pDX, IDC_CHECK_DLLENTITIES, m_bDLLEntities); 234 DDX_Check(pDX, IDC_CHECK_WIDETOOLBAR, m_bWideToolbar); 235 DDX_Check(pDX, IDC_CHECK_NOCLAMP, m_bNoClamp); 236 DDX_Text(pDX, IDC_EDIT_USERPATH, m_strUserPath); 237 DDX_Text(pDX, IDC_EDIT_ROTATION, m_nRotation); 238 DDX_Check(pDX, IDC_CHECK_SGIOPENGL, m_bSGIOpenGL); 239 DDX_Check(pDX, IDC_CHECK_BUGGYICD, m_bBuggyICD); 240 DDX_Check(pDX, IDC_CHECK_HICOLOR, m_bHiColorTextures); 241 DDX_Check(pDX, IDC_CHECK_MOUSECHASE, m_bChaseMouse); 242 DDX_Check(pDX, IDC_CHECK_TEXTURESCROLLBAR, m_bTextureScrollbar); 243 DDX_Check(pDX, IDC_CHECK_DISPLAYLISTS, m_bDisplayLists); 244 DDX_CBIndex(pDX, IDC_COMBO_SHADERS, m_nShader); 245 DDX_Check(pDX, IDC_CHECK_NOSTIPPLE, m_bNoStipple); 246 DDX_Text(pDX, IDC_EDIT_UNDOLEVELS, m_nUndoLevels); 247 DDV_MinMaxInt(pDX, m_nUndoLevels, 1, 64); 248 //}}AFX_DATA_MAP 249 } 250 251 252 BEGIN_MESSAGE_MAP(CPrefsDlg, CDialog) 253 //{{AFX_MSG_MAP(CPrefsDlg) 254 ON_BN_CLICKED(IDC_BTN_BROWSE, OnBtnBrowse) 255 ON_BN_CLICKED(IDC_BTN_BROWSEPAK, OnBtnBrowsepak) 256 ON_BN_CLICKED(IDC_BTN_BROWSEPREFAB, OnBtnBrowseprefab) 257 ON_BN_CLICKED(IDC_BTN_BROWSEUSERINI, OnBtnBrowseuserini) 258 ON_CBN_SELCHANGE(IDC_COMBO_WHATGAME, OnSelchangeComboWhatgame) 259 //}}AFX_MSG_MAP 260 END_MESSAGE_MAP() 261 262 ///////////////////////////////////////////////////////////////////////////// 263 // CPrefsDlg message handlers 264 265 void CPrefsDlg::OnBtnBrowse() 266 { 267 UpdateData(TRUE); 268 CFileDialog dlg(true, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Executables (*.exe)|*.exe||", this); 269 if (dlg.DoModal() == IDOK) 270 { 271 m_strQuake2 = dlg.GetPathName(); 272 UpdateData(FALSE); 273 } 274 } 275 276 BOOL CPrefsDlg::OnInitDialog() 277 { 278 CDialog::OnInitDialog(); 279 m_wndSpin.SetRange(1,60); 280 m_wndCamSpeed.SetRange(10, 800); 281 m_wndCamSpeed.SetPos(m_nMoveSpeed); 282 283 this->m_wndTexturequality.SetRange(0, 3); 284 this->m_wndTexturequality.SetPos(m_nTextureQuality); 285 286 m_wndFontSpin.SetRange(4,24); 287 m_wndUndoSpin.SetRange(1,64); 288 289 m_wndWhatGame.AddString("Quake2"); 290 m_wndWhatGame.AddString("Quake3"); 291 292 GetDlgItem(IDC_CHECK_HICOLOR)->EnableWindow(TRUE); 293 GetDlgItem(IDC_CHECK_NOCLAMP)->EnableWindow(TRUE); 294 295 //GetDlgItem(IDC_CHECK_NOCLAMP)->EnableWindow(FALSE); 296 297 m_wndWhatGame.SelectString(-1,m_strWhatGame); 298 if (strstr(m_strWhatGame, "Quake3") != NULL) 299 { 300 GetDlgItem(IDC_EDIT_PAKFILE)->EnableWindow(FALSE); 301 GetDlgItem(IDC_BTN_BROWSEPAK)->EnableWindow(FALSE); 302 GetDlgItem(IDC_CHECK_INTERNALBSP)->EnableWindow(FALSE); 303 } 304 else 305 { 306 GetDlgItem(IDC_EDIT_PAKFILE)->EnableWindow(TRUE); 307 GetDlgItem(IDC_BTN_BROWSEPAK)->EnableWindow(TRUE); 308 GetDlgItem(IDC_CHECK_INTERNALBSP)->EnableWindow(TRUE); 309 } 310 311 return TRUE; // return TRUE unless you set the focus to a control 312 // EXCEPTION: OCX Property Pages should return FALSE 313 } 314 315 void CPrefsDlg::OnOK() 316 { 317 m_nMoveSpeed = m_wndCamSpeed.GetPos(); 318 m_nAngleSpeed = (float)m_nMoveSpeed * 0.50; 319 this->m_nTextureQuality = m_wndTexturequality.GetPos(); 320 SavePrefs(); 321 322 if (g_pParentWnd) 323 g_pParentWnd->SetGridStatus(); 324 Sys_UpdateWindows(W_ALL); 325 Undo_SetMaxSize(m_nUndoLevels); 326 CDialog::OnOK(); 327 } 328 329 void CPrefsDlg::LoadPrefs() 330 { 331 CString strBuff; 332 CString strPrefab = g_strAppPath; 333 AddSlash(strPrefab); 334 strPrefab += "Prefabs\\"; 335 336 m_nMouse = AfxGetApp()->GetProfileInt(PREF_SECTION, MOUSE_KEY, MOUSE_DEF); 337 if (m_nMouse == 0) 338 m_nMouseButtons = 2; 339 else 340 m_nMouseButtons = 3; 341 342 m_nView = AfxGetApp()->GetProfileInt(PREF_SECTION, WINDOW_KEY, WINDOW_DEF); 343 m_strQuake2 = AfxGetApp()->GetProfileString(PREF_SECTION, Q2_KEY, Q2_DEF); 344 m_bRunQuake = AfxGetApp()->GetProfileInt(PREF_SECTION, RUNQ2_KEY, RUNQ2_DEF); 345 m_bTextureLock = AfxGetApp()->GetProfileInt(PREF_SECTION, TLOCK_KEY, TLOCK_DEF); 346 m_bRotateLock = AfxGetApp()->GetProfileInt(PREF_SECTION, RLOCK_KEY, TLOCK_DEF); 347 m_strLastProject = AfxGetApp()->GetProfileString(PREF_SECTION, LASTPROJ_KEY, ""); 348 m_strLastMap = AfxGetApp()->GetProfileString(PREF_SECTION, LASTMAP_KEY, ""); 349 m_bLoadLast = AfxGetApp()->GetProfileInt(PREF_SECTION, LOADLAST_KEY, LOADLAST_DEF); 350 m_bRunBefore = AfxGetApp()->GetProfileInt(INTERNAL_SECTION, RUN_KEY, RUN_DEF); 351 //m_b3Dfx = AfxGetApp()->GetProfileInt(PREF_SECTION, _3DFX_KEY, 0); 352 m_bFace = AfxGetApp()->GetProfileInt(PREF_SECTION, FACE_KEY, 1); 353 m_bInternalBSP = AfxGetApp()->GetProfileInt(PREF_SECTION, BSP_KEY, 0); 354 m_bRightClick = AfxGetApp()->GetProfileInt(PREF_SECTION, RCLICK_KEY, 1); 355 m_bVertex = AfxGetApp()->GetProfileInt(PREF_SECTION, VERTEX_KEY, 1); 356 m_bAutoSave = AfxGetApp()->GetProfileInt(PREF_SECTION, AUTOSAVE_KEY, 1); 357 m_bPAK = AfxGetApp()->GetProfileInt(PREF_SECTION, PAK_KEY, 1); 358 m_bNewApplyHandling = AfxGetApp()->GetProfileInt(PREF_SECTION, NEWAPPLY_KEY, 0); 359 m_bLoadLastMap = AfxGetApp()->GetProfileInt(PREF_SECTION, LOADLASTMAP_KEY, 0); 360 m_bGatewayHack = AfxGetApp()->GetProfileInt(PREF_SECTION, HACK_KEY, 0); 361 m_bTextureWindow = AfxGetApp()->GetProfileInt(PREF_SECTION, TEXTURE_KEY, 0); 362 m_bCleanTiny = AfxGetApp()->GetProfileInt(PREF_SECTION, TINYBRUSH_KEY, 0); 363 strBuff = AfxGetApp()->GetProfileString(PREF_SECTION, TINYSIZE_KEY, "0.5"); 364 m_fTinySize = atof(strBuff); 365 m_nAutoSave = AfxGetApp()->GetProfileInt(PREF_SECTION, AUTOSAVETIME_KEY, 5); 366 m_strAutoSave.Format("%i", m_nAutoSave); 367 m_bSnapShots = AfxGetApp()->GetProfileInt(PREF_SECTION, SNAPSHOT_KEY, 0); 368 m_strPAKFile = AfxGetApp()->GetProfileString(PREF_SECTION, PAKFILE_KEY, PAKFILE_DEF); 369 m_nStatusSize = AfxGetApp()->GetProfileInt(PREF_SECTION, STATUS_KEY, 10); 370 m_nMoveSpeed = AfxGetApp()->GetProfileInt(PREF_SECTION, MOVESPEED_KEY, 400); 371 m_nAngleSpeed = AfxGetApp()->GetProfileInt(PREF_SECTION, ANGLESPEED_KEY, 300); 372 m_bSetGame = AfxGetApp()->GetProfileInt(PREF_SECTION, SETGAME_KEY, 0); 373 m_bCamXYUpdate = AfxGetApp()->GetProfileInt(PREF_SECTION, CAMXYUPDATE_KEY, 1); 374 m_bNewLightDraw = AfxGetApp()->GetProfileInt(PREF_SECTION, LIGHTDRAW_KEY, 1); 375 m_bCubicClipping = AfxGetApp()->GetProfileInt(PREF_SECTION, CUBICCLIP_KEY, 1); 376 m_nCubicScale = AfxGetApp()->GetProfileInt(PREF_SECTION, CUBICSCALE_KEY, 13); 377 m_bALTEdge = AfxGetApp()->GetProfileInt(PREF_SECTION, ALTEDGE_KEY, 0); 378 m_bTextureBar = AfxGetApp()->GetProfileInt(PREF_SECTION, TEXTUREBAR_KEY, 0); 379 m_strWhatGame = AfxGetApp()->GetProfileString(PREF_SECTION, WHATGAME_KEY, "Quake3"); 380 m_bFaceColors = AfxGetApp()->GetProfileInt(PREF_SECTION, FACECOLORS_KEY, 0); 381 m_bQE4Painting = AfxGetApp()->GetProfileInt(PREF_SECTION, QE4PAINT_KEY, 1); 382 m_bSnapTToGrid = AfxGetApp()->GetProfileInt(PREF_SECTION, SNAPT_KEY, 0); 383 m_bXZVis = AfxGetApp()->GetProfileInt(PREF_SECTION, XZVIS_KEY, 0); 384 m_bYZVis = AfxGetApp()->GetProfileInt(PREF_SECTION, YZVIS_KEY, 0); 385 m_bZVis = AfxGetApp()->GetProfileInt(PREF_SECTION, ZVIS_KEY, 1); 386 m_bSizePaint = AfxGetApp()->GetProfileInt(PREF_SECTION, SIZEPAINT_KEY, 0); 387 m_bDLLEntities = AfxGetApp()->GetProfileInt(PREF_SECTION, DLLENTITIES_KEY, 0); 388 m_bWideToolbar = AfxGetApp()->GetProfileInt(PREF_SECTION, WIDETOOLBAR_KEY, 1); 389 m_bNoClamp = AfxGetApp()->GetProfileInt(PREF_SECTION, NOCLAMP_KEY, 0); 390 m_strPrefabPath = AfxGetApp()->GetProfileString(PREF_SECTION, PREFAB_KEY, strPrefab); 391 m_strUserPath = AfxGetApp()->GetProfileString(PREF_SECTION, USERINI_KEY, ""); 392 m_nRotation = AfxGetApp()->GetProfileInt(PREF_SECTION, ROTATION_KEY, 45); 393 m_bSGIOpenGL = AfxGetApp()->GetProfileInt(PREF_SECTION, SGIOPENGL_KEY, 0); 394 m_bBuggyICD = AfxGetApp()->GetProfileInt(PREF_SECTION, BUGGYICD_KEY, 0); 395 m_bHiColorTextures = AfxGetApp()->GetProfileInt(PREF_SECTION, HICOLOR_KEY, 1); 396 m_bChaseMouse = AfxGetApp()->GetProfileInt(PREF_SECTION, CHASEMOUSE_KEY, 1); 397 m_nEntityShowState = AfxGetApp()->GetProfileInt(PREF_SECTION, ENTITYSHOW_KEY, 0); 398 m_nTextureScale = AfxGetApp()->GetProfileInt(PREF_SECTION, TEXTURESCALE_KEY, 50); 399 m_bTextureScrollbar = AfxGetApp()->GetProfileInt(PREF_SECTION, TEXTURESCROLLBAR_KEY, TRUE); 400 m_bDisplayLists = AfxGetApp()->GetProfileInt(PREF_SECTION, DISPLAYLISTS_KEY, TRUE); 401 m_bSwitchClip = AfxGetApp()->GetProfileInt(PREF_SECTION, SWITCHCLIP_KEY, TRUE); 402 m_bSelectWholeEntities = AfxGetApp()->GetProfileInt(PREF_SECTION, SELWHOLEENTS_KEY, TRUE); 403 m_nTextureQuality = AfxGetApp()->GetProfileInt(PREF_SECTION, TEXTUREQUALITY_KEY, 6); 404 m_bShowShaders = AfxGetApp()->GetProfileInt(PREF_SECTION, SHOWSHADERS_KEY, TRUE); 405 m_bGLLighting = AfxGetApp()->GetProfileInt(PREF_SECTION, GLLIGHTING_KEY, FALSE); 406 m_nShader = AfxGetApp()->GetProfileInt(PREF_SECTION, LOADSHADERS_KEY, 0); 407 m_bNoStipple = AfxGetApp()->GetProfileInt(PREF_SECTION, NOSTIPPLE_KEY, 0); 408 m_nUndoLevels = AfxGetApp()->GetProfileInt(PREF_SECTION, UNDOLEVELS_KEY, 0); 409 410 if (m_bRunBefore == FALSE) 411 { 412 SetGamePrefs(); 413 } 414 } 415 416 417 void CPrefsDlg::SavePrefs() 418 { 419 if (GetSafeHwnd()) 420 UpdateData(TRUE); 421 AfxGetApp()->WriteProfileInt(PREF_SECTION, MOUSE_KEY, m_nMouse); 422 if (m_nMouse == 0) 423 m_nMouseButtons = 2; 424 else 425 m_nMouseButtons = 3; 426 AfxGetApp()->WriteProfileInt(PREF_SECTION, WINDOW_KEY, m_nView); 427 AfxGetApp()->WriteProfileString(PREF_SECTION, Q2_KEY, m_strQuake2); 428 AfxGetApp()->WriteProfileInt(PREF_SECTION, RUNQ2_KEY, m_bRunQuake); 429 AfxGetApp()->WriteProfileInt(PREF_SECTION, TLOCK_KEY, m_bTextureLock); 430 AfxGetApp()->WriteProfileInt(PREF_SECTION, RLOCK_KEY, m_bRotateLock); 431 AfxGetApp()->WriteProfileInt(PREF_SECTION, LOADLAST_KEY, m_bLoadLast); 432 AfxGetApp()->WriteProfileString(PREF_SECTION, LASTPROJ_KEY, m_strLastProject); 433 AfxGetApp()->WriteProfileString(PREF_SECTION, LASTMAP_KEY, m_strLastMap); 434 AfxGetApp()->WriteProfileInt(INTERNAL_SECTION, RUN_KEY, m_bRunBefore); 435 //AfxGetApp()->WriteProfileInt(PREF_SECTION, _3DFX_KEY, m_b3Dfx); 436 AfxGetApp()->WriteProfileInt(PREF_SECTION, FACE_KEY, m_bFace); 437 AfxGetApp()->WriteProfileInt(PREF_SECTION, BSP_KEY, m_bInternalBSP); 438 AfxGetApp()->WriteProfileInt(PREF_SECTION, RCLICK_KEY, m_bRightClick); 439 AfxGetApp()->WriteProfileInt(PREF_SECTION, VERTEX_KEY, m_bVertex); 440 AfxGetApp()->WriteProfileInt(PREF_SECTION, AUTOSAVE_KEY, m_bAutoSave); 441 AfxGetApp()->WriteProfileInt(PREF_SECTION, PAK_KEY, m_bPAK); 442 AfxGetApp()->WriteProfileInt(PREF_SECTION, LOADLASTMAP_KEY, m_bLoadLastMap); 443 AfxGetApp()->WriteProfileInt(PREF_SECTION, TEXTURE_KEY, m_bTextureWindow); 444 m_nAutoSave = atoi(m_strAutoSave); 445 AfxGetApp()->WriteProfileInt(PREF_SECTION, AUTOSAVETIME_KEY, m_nAutoSave); 446 AfxGetApp()->WriteProfileInt(PREF_SECTION, SNAPSHOT_KEY, m_bSnapShots); 447 AfxGetApp()->WriteProfileString(PREF_SECTION, PAKFILE_KEY, m_strPAKFile); 448 AfxGetApp()->WriteProfileInt(PREF_SECTION, STATUS_KEY, m_nStatusSize); 449 AfxGetApp()->WriteProfileInt(PREF_SECTION, SETGAME_KEY, m_bSetGame); 450 AfxGetApp()->WriteProfileInt(PREF_SECTION, CAMXYUPDATE_KEY, m_bCamXYUpdate); 451 AfxGetApp()->WriteProfileInt(PREF_SECTION, LIGHTDRAW_KEY, m_bNewLightDraw); 452 AfxGetApp()->WriteProfileInt(PREF_SECTION, MOVESPEED_KEY, m_nMoveSpeed); 453 AfxGetApp()->WriteProfileInt(PREF_SECTION, ANGLESPEED_KEY, m_nAngleSpeed); 454 AfxGetApp()->WriteProfileInt(PREF_SECTION, CUBICCLIP_KEY, m_bCubicClipping); 455 AfxGetApp()->WriteProfileInt(PREF_SECTION, CUBICSCALE_KEY, m_nCubicScale); 456 AfxGetApp()->WriteProfileInt(PREF_SECTION, ALTEDGE_KEY, m_bALTEdge); 457 AfxGetApp()->WriteProfileInt(PREF_SECTION, TEXTUREBAR_KEY, m_bTextureBar); 458 AfxGetApp()->WriteProfileInt(PREF_SECTION, FACECOLORS_KEY, m_bFaceColors); 459 AfxGetApp()->WriteProfileString(PREF_SECTION, WHATGAME_KEY, m_strWhatGame); 460 AfxGetApp()->WriteProfileInt(PREF_SECTION, QE4PAINT_KEY, m_bQE4Painting); 461 AfxGetApp()->WriteProfileInt(PREF_SECTION, SNAPT_KEY, m_bSnapTToGrid); 462 AfxGetApp()->WriteProfileInt(PREF_SECTION, XZVIS_KEY, m_bXZVis); 463 AfxGetApp()->WriteProfileInt(PREF_SECTION, YZVIS_KEY, m_bYZVis); 464 AfxGetApp()->WriteProfileInt(PREF_SECTION, ZVIS_KEY, m_bZVis); 465 AfxGetApp()->WriteProfileInt(PREF_SECTION, SIZEPAINT_KEY, m_bSizePaint); 466 AfxGetApp()->WriteProfileInt(PREF_SECTION, DLLENTITIES_KEY, m_bDLLEntities); 467 AfxGetApp()->WriteProfileInt(PREF_SECTION, WIDETOOLBAR_KEY, m_bWideToolbar); 468 AfxGetApp()->WriteProfileInt(PREF_SECTION, NOCLAMP_KEY, m_bNoClamp); 469 AfxGetApp()->WriteProfileString(PREF_SECTION, PREFAB_KEY, m_strPrefabPath); 470 AfxGetApp()->WriteProfileString(PREF_SECTION, USERINI_KEY, m_strUserPath); 471 AfxGetApp()->WriteProfileInt(PREF_SECTION, ROTATION_KEY, m_nRotation); 472 AfxGetApp()->WriteProfileInt(PREF_SECTION, SGIOPENGL_KEY, m_bSGIOpenGL); 473 AfxGetApp()->WriteProfileInt(PREF_SECTION, BUGGYICD_KEY, m_bBuggyICD); 474 AfxGetApp()->WriteProfileInt(PREF_SECTION, HICOLOR_KEY, m_bHiColorTextures); 475 AfxGetApp()->WriteProfileInt(PREF_SECTION, CHASEMOUSE_KEY, m_bChaseMouse); 476 AfxGetApp()->WriteProfileInt(PREF_SECTION, ENTITYSHOW_KEY, m_nEntityShowState); 477 AfxGetApp()->WriteProfileInt(PREF_SECTION, TEXTURESCALE_KEY, m_nTextureScale); 478 AfxGetApp()->WriteProfileInt(PREF_SECTION, TEXTURESCROLLBAR_KEY, m_bTextureScrollbar); 479 AfxGetApp()->WriteProfileInt(PREF_SECTION, DISPLAYLISTS_KEY, m_bDisplayLists); 480 AfxGetApp()->WriteProfileInt(PREF_SECTION, SWITCHCLIP_KEY, m_bSwitchClip); 481 AfxGetApp()->WriteProfileInt(PREF_SECTION, SELWHOLEENTS_KEY, m_bSelectWholeEntities); 482 AfxGetApp()->WriteProfileInt(PREF_SECTION, TEXTUREQUALITY_KEY, m_nTextureQuality); 483 AfxGetApp()->WriteProfileInt(PREF_SECTION, SHOWSHADERS_KEY, m_bShowShaders); 484 AfxGetApp()->WriteProfileInt(PREF_SECTION, GLLIGHTING_KEY, m_bGLLighting); 485 AfxGetApp()->WriteProfileInt(PREF_SECTION, LOADSHADERS_KEY, m_nShader); 486 AfxGetApp()->WriteProfileInt(PREF_SECTION, NOSTIPPLE_KEY, m_bNoStipple); 487 AfxGetApp()->WriteProfileInt(PREF_SECTION, UNDOLEVELS_KEY, m_nUndoLevels); 488 } 489 490 491 492 void CPrefsDlg::OnBtnBrowsepak() 493 { 494 UpdateData(TRUE); 495 CFileDialog dlg(true, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "PAK files (*.pak)|*.pak||", this); 496 if (dlg.DoModal() == IDOK) 497 { 498 m_strPAKFile = dlg.GetPathName(); 499 UpdateData(FALSE); 500 } 501 } 502 503 void CPrefsDlg::OnBtnBrowseprefab() 504 { 505 UpdateData(TRUE); 506 BROWSEINFO bi; 507 CString strPath; 508 char* p = strPath.GetBuffer(MAX_PATH+1); 509 bi.hwndOwner = GetSafeHwnd(); 510 bi.pidlRoot = NULL; 511 bi.pszDisplayName = p; 512 bi.lpszTitle = "Load textures from path"; 513 bi.ulFlags = 0; 514 bi.lpfn = NULL; 515 bi.lParam = NULL; 516 bi.iImage = 0; 517 LPITEMIDLIST pidlBrowse; 518 pidlBrowse = SHBrowseForFolder(&bi); 519 if (pidlBrowse) 520 { 521 SHGetPathFromIDList(pidlBrowse, p); 522 strPath.ReleaseBuffer(); 523 AddSlash(strPath); 524 m_strPrefabPath = strPath; 525 UpdateData(FALSE); 526 } 527 } 528 529 void CPrefsDlg::OnBtnBrowseuserini() 530 { 531 UpdateData(TRUE); 532 CFileDialog dlg(true, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "INI files (*.ini)|*.ini||", this); 533 if (dlg.DoModal() == IDOK) 534 { 535 m_strUserPath = dlg.GetPathName(); 536 UpdateData(FALSE); 537 } 538 } 539 540 void CPrefsDlg::OnSelchangeComboWhatgame() 541 { 542 int n = m_wndWhatGame.GetCurSel(); 543 if (n >= 0) 544 { 545 m_wndWhatGame.GetLBText(n, m_strWhatGame); 546 } 547 SetGamePrefs(); 548 } 549 550 void CPrefsDlg::SetGamePrefs() 551 { 552 if (strstr(m_strWhatGame, "Quake3") != NULL) 553 { 554 m_bHiColorTextures = TRUE; 555 m_bWideToolbar = TRUE; 556 m_strPAKFile = "PK3 files are loaded from the baseq3 path"; 557 m_bInternalBSP = FALSE; 558 if (GetSafeHwnd()) 559 { 560 GetDlgItem(IDC_EDIT_PAKFILE)->EnableWindow(FALSE); 561 GetDlgItem(IDC_BTN_BROWSEPAK)->EnableWindow(FALSE); 562 GetDlgItem(IDC_CHECK_INTERNALBSP)->EnableWindow(FALSE); 563 } 564 } 565 else 566 { 567 m_bHiColorTextures = FALSE; 568 m_bWideToolbar = FALSE; 569 m_strPAKFile = PAKFILE_DEF; 570 if (GetSafeHwnd()) 571 { 572 GetDlgItem(IDC_EDIT_PAKFILE)->EnableWindow(TRUE); 573 GetDlgItem(IDC_BTN_BROWSEPAK)->EnableWindow(TRUE); 574 GetDlgItem(IDC_CHECK_INTERNALBSP)->EnableWindow(TRUE); 575 } 576 } 577 SavePrefs(); 578 }