aboutsummaryrefslogtreecommitdiffstats
path: root/q3radiant/PrefsDlg.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'q3radiant/PrefsDlg.cpp')
-rwxr-xr-xq3radiant/PrefsDlg.cpp578
1 files changed, 578 insertions, 0 deletions
diff --git a/q3radiant/PrefsDlg.cpp b/q3radiant/PrefsDlg.cpp
new file mode 100755
index 0000000..df67f1f
--- /dev/null
+++ b/q3radiant/PrefsDlg.cpp
@@ -0,0 +1,578 @@
+/*
+===========================================================================
+Copyright (C) 1999-2005 Id Software, Inc.
+
+This file is part of Quake III Arena source code.
+
+Quake III Arena source code is free software; you can redistribute it
+and/or modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of the License,
+or (at your option) any later version.
+
+Quake III Arena source code is distributed in the hope that it will be
+useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Foobar; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+===========================================================================
+*/
+// PrefsDlg.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "PrefsDlg.h"
+#include "shlobj.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+#define PREF_SECTION "Prefs"
+#define INTERNAL_SECTION "Internals"
+#define MOUSE_KEY "MouseButtons"
+#define WINDOW_KEY "QE4StyleWindows"
+#define LAYOUT_KEY "WindowLayout"
+#define Q2_KEY "Quake2Dir"
+#define RUNQ2_KEY "RunQuake2Run"
+#define TLOCK_KEY "TextureLock"
+#define RLOCK_KEY "RotateLock"
+#define LOADLAST_KEY "LoadLast"
+#define LOADLASTMAP_KEY "LoadLastMap"
+#define LASTPROJ_KEY "LastProject"
+#define LASTMAP_KEY "LastMap"
+#define RUN_KEY "RunBefore"
+#define _3DFX_KEY "Use3Dfx"
+#define FACE_KEY "NewFaceGrab"
+#define BSP_KEY "InternalBSP"
+#define RCLICK_KEY "NewRightClick"
+#define VERTEX_KEY "NewVertex"
+#define AUTOSAVE_KEY "Autosave"
+#define AUTOSAVETIME_KEY "AutosaveMinutes"
+#define PAK_KEY "UsePAK"
+#define NEWAPPLY_KEY "ApplyDismissesSurface"
+#define HACK_KEY "Gatewayescapehack"
+#define TEXTURE_KEY "NewTextureWindowStuff"
+#define TINYBRUSH_KEY "CleanTinyBrushes"
+#define TINYSIZE_KEY "CleanTinyBrusheSize"
+#define SNAPSHOT_KEY "Snapshots"
+#define PAKFILE_KEY "PAKFile"
+#define STATUS_KEY "StatusPointSize"
+#define MOVESPEED_KEY "MoveSpeed"
+#define ANGLESPEED_KEY "AngleSpeed"
+#define SETGAME_KEY "UseSetGame"
+#define CAMXYUPDATE_KEY "CamXYUpdate"
+#define LIGHTDRAW_KEY "NewLightStyle"
+#define WHATGAME_KEY "WhichGame"
+#define CUBICCLIP_KEY "CubicClipping"
+#define CUBICSCALE_KEY "CubicScale"
+#define ALTEDGE_KEY "ALTEdgeDrag"
+#define TEXTUREBAR_KEY "UseTextureBar"
+#define FACECOLORS_KEY "FaceColors"
+#define QE4PAINT_KEY "QE4Paint"
+#define SNAPT_KEY "SnapT"
+#define XZVIS_KEY "XZVIS"
+#define YZVIS_KEY "YZVIS"
+#define ZVIS_KEY "ZVIS"
+#define SIZEPAINT_KEY "SizePainting"
+#define DLLENTITIES_KEY "DLLEntities"
+#define WIDETOOLBAR_KEY "WideToolBar"
+#define NOCLAMP_KEY "NoClamp"
+#define PREFAB_KEY "PrefabPath"
+#define USERINI_KEY "UserINIPath"
+#define ROTATION_KEY "Rotation"
+#define SGIOPENGL_KEY "SGIOpenGL"
+#define BUGGYICD_KEY "BuggyICD"
+#define HICOLOR_KEY "HiColorTextures"
+#define CHASEMOUSE_KEY "ChaseMouse"
+#define ENTITYSHOW_KEY "EntityShow"
+#define TEXTURESCALE_KEY "TextureScale"
+#define TEXTURESCROLLBAR_KEY "TextureScrollbar"
+#define DISPLAYLISTS_KEY "UseDisplayLists"
+#define NORMALIZECOLORS_KEY "NormalizeColors"
+#define SHADERS_KEY "UseShaders"
+#define SWITCHCLIP_KEY "SwitchClipKey"
+#define SELWHOLEENTS_KEY "SelectWholeEntitiesKey"
+#define TEXTURESUBSET_KEY "UseTextureSubsetLoading"
+#define TEXTUREQUALITY_KEY "TextureQuality"
+#define SHOWSHADERS_KEY "ShowShaders"
+#define SHADERTEST_KEY "ShaderTest"
+#define GLLIGHTING_KEY "UseGLLighting"
+#define LOADSHADERS_KEY "LoadShaders"
+#define NOSTIPPLE_KEY "NoStipple"
+#define UNDOLEVELS_KEY "UndoLevels"
+
+#define MOUSE_DEF 1
+#define WINDOW_DEF 0
+#define Q2_DEF "c:\\quake2\\quake2.exe"
+#define Q3_DEF "c:\\Program Files\\Quake III Arena\\quake3.exe"
+#define PAKFILE_DEF "c:\\quake2\\baseq2\\pak0.pak"
+#define RUNQ2_DEF 0
+#define TLOCK_DEF 1
+#define LOADLAST_DEF 1
+#define RUN_DEF 0
+
+/////////////////////////////////////////////////////////////////////////////
+// CPrefsDlg dialog
+
+
+CPrefsDlg::CPrefsDlg(CWnd* pParent /*=NULL*/)
+ : CDialog(CPrefsDlg::IDD, pParent)
+{
+ //{{AFX_DATA_INIT(CPrefsDlg)
+ m_strQuake2 = _T("c:\\quake3\\");
+ m_nMouse = 1;
+ m_nView = 0;
+ m_bLoadLast = FALSE;
+ m_bFace = FALSE;
+ m_bInternalBSP = FALSE;
+ m_bRightClick = FALSE;
+ m_bRunQuake = FALSE;
+ m_bSetGame = FALSE;
+ m_bVertex = FALSE;
+ m_bAutoSave = TRUE;
+ m_bNewApplyHandling = FALSE;
+ m_strAutoSave = _T("5");
+ m_bPAK = FALSE;
+ m_bLoadLastMap = FALSE;
+ m_bTextureWindow = FALSE;
+ m_bSnapShots = FALSE;
+ m_fTinySize = 0.5;
+ m_bCleanTiny = FALSE;
+ m_strPAKFile = _T("c:\\quake2\\baseq2\\pak0.pak");
+ m_nStatusSize = 10;
+ m_bCamXYUpdate = FALSE;
+ m_bNewLightDraw = FALSE;
+ m_strPrefabPath = _T("");
+ m_nWhatGame = 0;
+ m_strWhatGame = _T("Quake3");
+ m_bALTEdge = FALSE;
+ m_bTextureBar = FALSE;
+ m_bFaceColors = FALSE;
+ m_bQE4Painting = TRUE;
+ m_bSnapTToGrid = FALSE;
+ m_bXZVis = FALSE;
+ m_bYZVis = FALSE;
+ m_bZVis = FALSE;
+ m_bSizePaint = FALSE;
+ m_bDLLEntities = FALSE;
+ m_bWideToolbar = TRUE;
+ m_bNoClamp = FALSE;
+ m_strUserPath = _T("");
+ m_nRotation = 0;
+ m_bSGIOpenGL = FALSE;
+ m_bBuggyICD = FALSE;
+ m_bHiColorTextures = TRUE;
+ m_bChaseMouse = FALSE;
+ m_bTextureScrollbar = TRUE;
+ m_bDisplayLists = TRUE;
+ m_bShowShaders = FALSE;
+ m_nShader = -1;
+ m_bNoStipple = FALSE;
+ //}}AFX_DATA_INIT
+ //LoadPrefs();
+ m_bSelectCurves = TRUE;
+ m_bSelectTerrain = TRUE;
+ m_nEntityShowState = 0;
+ m_nTextureScale = 2;
+ m_bSwitchClip = FALSE;
+ m_bSelectWholeEntities = TRUE;
+ m_nTextureQuality = 3;
+ m_bShowShaders = TRUE;
+ m_bGLLighting = FALSE;
+ m_nShader = 0;
+ m_nUndoLevels = 64;
+}
+
+
+
+
+void CPrefsDlg::DoDataExchange(CDataExchange* pDX)
+{
+ CDialog::DoDataExchange(pDX);
+ //{{AFX_DATA_MAP(CPrefsDlg)
+ DDX_Control(pDX, IDC_SPIN_UNDO, m_wndUndoSpin);
+ DDX_Control(pDX, IDC_SPIN_POINTSIZE, m_wndFontSpin);
+ DDX_Control(pDX, IDC_SLIDER_TEXTUREQUALITY, m_wndTexturequality);
+ DDX_Control(pDX, IDC_COMBO_WHATGAME, m_wndWhatGame);
+ DDX_Control(pDX, IDC_SLIDER_CAMSPEED, m_wndCamSpeed);
+ DDX_Control(pDX, IDC_SPIN_AUTOSAVE, m_wndSpin);
+ DDX_Text(pDX, IDC_EDIT_QUAKE2, m_strQuake2);
+ DDX_Radio(pDX, IDC_RADIO_MOUSE, m_nMouse);
+ DDX_Radio(pDX, IDC_RADIO_VIEWTYPE, m_nView);
+ DDX_Check(pDX, IDC_CHECK_LOADLAST, m_bLoadLast);
+ DDX_Check(pDX, IDC_CHECK_FACE, m_bFace);
+ DDX_Check(pDX, IDC_CHECK_INTERNALBSP, m_bInternalBSP);
+ DDX_Check(pDX, IDC_CHECK_RIGHTCLICK, m_bRightClick);
+ DDX_Check(pDX, IDC_CHECK_RUNQUAKE, m_bRunQuake);
+ DDX_Check(pDX, IDC_CHECK_SETGAME, m_bSetGame);
+ DDX_Check(pDX, IDC_CHECK_VERTEX, m_bVertex);
+ DDX_Check(pDX, IDC_CHECK_AUTOSAVE, m_bAutoSave);
+ DDX_Text(pDX, IDC_EDIT_AUTOSAVE, m_strAutoSave);
+ DDX_Check(pDX, IDC_CHECK_PAK, m_bPAK);
+ DDX_Check(pDX, IDC_CHECK_LOADLASTMAP, m_bLoadLastMap);
+ DDX_Check(pDX, IDC_CHECK_TEXTUREWINDOW, m_bTextureWindow);
+ DDX_Check(pDX, IDC_CHECK_SNAPSHOTS, m_bSnapShots);
+ DDX_Text(pDX, IDC_EDIT_PAKFILE, m_strPAKFile);
+ DDX_Text(pDX, IDC_EDIT_STATUSPOINTSIZE, m_nStatusSize);
+ DDV_MinMaxInt(pDX, m_nStatusSize, 2, 14);
+ DDX_Check(pDX, IDC_CHECK_CAMXYUPDATE, m_bCamXYUpdate);
+ DDX_Check(pDX, IDC_CHECK_LIGHTDRAW, m_bNewLightDraw);
+ DDX_Text(pDX, IDC_EDIT_PREFABPATH, m_strPrefabPath);
+ DDX_CBString(pDX, IDC_COMBO_WHATGAME, m_strWhatGame);
+ DDX_Check(pDX, IDC_CHECK_ALTDRAG, m_bALTEdge);
+ DDX_Check(pDX, IDC_CHECK_TEXTURETOOLBAR, m_bTextureBar);
+ DDX_Check(pDX, IDC_CHECK_FACECOLOR, m_bFaceColors);
+ DDX_Check(pDX, IDC_CHECK_QE4PAINTING, m_bQE4Painting);
+ DDX_Check(pDX, IDC_CHECK_SNAPT, m_bSnapTToGrid);
+ DDX_Check(pDX, IDC_CHECK_SIZEPAINT, m_bSizePaint);
+ DDX_Check(pDX, IDC_CHECK_DLLENTITIES, m_bDLLEntities);
+ DDX_Check(pDX, IDC_CHECK_WIDETOOLBAR, m_bWideToolbar);
+ DDX_Check(pDX, IDC_CHECK_NOCLAMP, m_bNoClamp);
+ DDX_Text(pDX, IDC_EDIT_USERPATH, m_strUserPath);
+ DDX_Text(pDX, IDC_EDIT_ROTATION, m_nRotation);
+ DDX_Check(pDX, IDC_CHECK_SGIOPENGL, m_bSGIOpenGL);
+ DDX_Check(pDX, IDC_CHECK_BUGGYICD, m_bBuggyICD);
+ DDX_Check(pDX, IDC_CHECK_HICOLOR, m_bHiColorTextures);
+ DDX_Check(pDX, IDC_CHECK_MOUSECHASE, m_bChaseMouse);
+ DDX_Check(pDX, IDC_CHECK_TEXTURESCROLLBAR, m_bTextureScrollbar);
+ DDX_Check(pDX, IDC_CHECK_DISPLAYLISTS, m_bDisplayLists);
+ DDX_CBIndex(pDX, IDC_COMBO_SHADERS, m_nShader);
+ DDX_Check(pDX, IDC_CHECK_NOSTIPPLE, m_bNoStipple);
+ DDX_Text(pDX, IDC_EDIT_UNDOLEVELS, m_nUndoLevels);
+ DDV_MinMaxInt(pDX, m_nUndoLevels, 1, 64);
+ //}}AFX_DATA_MAP
+}
+
+
+BEGIN_MESSAGE_MAP(CPrefsDlg, CDialog)
+ //{{AFX_MSG_MAP(CPrefsDlg)
+ ON_BN_CLICKED(IDC_BTN_BROWSE, OnBtnBrowse)
+ ON_BN_CLICKED(IDC_BTN_BROWSEPAK, OnBtnBrowsepak)
+ ON_BN_CLICKED(IDC_BTN_BROWSEPREFAB, OnBtnBrowseprefab)
+ ON_BN_CLICKED(IDC_BTN_BROWSEUSERINI, OnBtnBrowseuserini)
+ ON_CBN_SELCHANGE(IDC_COMBO_WHATGAME, OnSelchangeComboWhatgame)
+ //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CPrefsDlg message handlers
+
+void CPrefsDlg::OnBtnBrowse()
+{
+ UpdateData(TRUE);
+ CFileDialog dlg(true, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Executables (*.exe)|*.exe||", this);
+ if (dlg.DoModal() == IDOK)
+ {
+ m_strQuake2 = dlg.GetPathName();
+ UpdateData(FALSE);
+ }
+}
+
+BOOL CPrefsDlg::OnInitDialog()
+{
+ CDialog::OnInitDialog();
+ m_wndSpin.SetRange(1,60);
+ m_wndCamSpeed.SetRange(10, 800);
+ m_wndCamSpeed.SetPos(m_nMoveSpeed);
+
+ this->m_wndTexturequality.SetRange(0, 3);
+ this->m_wndTexturequality.SetPos(m_nTextureQuality);
+
+ m_wndFontSpin.SetRange(4,24);
+ m_wndUndoSpin.SetRange(1,64);
+
+ m_wndWhatGame.AddString("Quake2");
+ m_wndWhatGame.AddString("Quake3");
+
+ GetDlgItem(IDC_CHECK_HICOLOR)->EnableWindow(TRUE);
+ GetDlgItem(IDC_CHECK_NOCLAMP)->EnableWindow(TRUE);
+
+ //GetDlgItem(IDC_CHECK_NOCLAMP)->EnableWindow(FALSE);
+
+ m_wndWhatGame.SelectString(-1,m_strWhatGame);
+ if (strstr(m_strWhatGame, "Quake3") != NULL)
+ {
+ GetDlgItem(IDC_EDIT_PAKFILE)->EnableWindow(FALSE);
+ GetDlgItem(IDC_BTN_BROWSEPAK)->EnableWindow(FALSE);
+ GetDlgItem(IDC_CHECK_INTERNALBSP)->EnableWindow(FALSE);
+ }
+ else
+ {
+ GetDlgItem(IDC_EDIT_PAKFILE)->EnableWindow(TRUE);
+ GetDlgItem(IDC_BTN_BROWSEPAK)->EnableWindow(TRUE);
+ GetDlgItem(IDC_CHECK_INTERNALBSP)->EnableWindow(TRUE);
+ }
+
+ return TRUE; // return TRUE unless you set the focus to a control
+ // EXCEPTION: OCX Property Pages should return FALSE
+}
+
+void CPrefsDlg::OnOK()
+{
+ m_nMoveSpeed = m_wndCamSpeed.GetPos();
+ m_nAngleSpeed = (float)m_nMoveSpeed * 0.50;
+ this->m_nTextureQuality = m_wndTexturequality.GetPos();
+ SavePrefs();
+
+ if (g_pParentWnd)
+ g_pParentWnd->SetGridStatus();
+ Sys_UpdateWindows(W_ALL);
+ Undo_SetMaxSize(m_nUndoLevels);
+ CDialog::OnOK();
+}
+
+void CPrefsDlg::LoadPrefs()
+{
+ CString strBuff;
+ CString strPrefab = g_strAppPath;
+ AddSlash(strPrefab);
+ strPrefab += "Prefabs\\";
+
+ m_nMouse = AfxGetApp()->GetProfileInt(PREF_SECTION, MOUSE_KEY, MOUSE_DEF);
+ if (m_nMouse == 0)
+ m_nMouseButtons = 2;
+ else
+ m_nMouseButtons = 3;
+
+ m_nView = AfxGetApp()->GetProfileInt(PREF_SECTION, WINDOW_KEY, WINDOW_DEF);
+ m_strQuake2 = AfxGetApp()->GetProfileString(PREF_SECTION, Q2_KEY, Q2_DEF);
+ m_bRunQuake = AfxGetApp()->GetProfileInt(PREF_SECTION, RUNQ2_KEY, RUNQ2_DEF);
+ m_bTextureLock = AfxGetApp()->GetProfileInt(PREF_SECTION, TLOCK_KEY, TLOCK_DEF);
+ m_bRotateLock = AfxGetApp()->GetProfileInt(PREF_SECTION, RLOCK_KEY, TLOCK_DEF);
+ m_strLastProject = AfxGetApp()->GetProfileString(PREF_SECTION, LASTPROJ_KEY, "");
+ m_strLastMap = AfxGetApp()->GetProfileString(PREF_SECTION, LASTMAP_KEY, "");
+ m_bLoadLast = AfxGetApp()->GetProfileInt(PREF_SECTION, LOADLAST_KEY, LOADLAST_DEF);
+ m_bRunBefore = AfxGetApp()->GetProfileInt(INTERNAL_SECTION, RUN_KEY, RUN_DEF);
+ //m_b3Dfx = AfxGetApp()->GetProfileInt(PREF_SECTION, _3DFX_KEY, 0);
+ m_bFace = AfxGetApp()->GetProfileInt(PREF_SECTION, FACE_KEY, 1);
+ m_bInternalBSP = AfxGetApp()->GetProfileInt(PREF_SECTION, BSP_KEY, 0);
+ m_bRightClick = AfxGetApp()->GetProfileInt(PREF_SECTION, RCLICK_KEY, 1);
+ m_bVertex = AfxGetApp()->GetProfileInt(PREF_SECTION, VERTEX_KEY, 1);
+ m_bAutoSave = AfxGetApp()->GetProfileInt(PREF_SECTION, AUTOSAVE_KEY, 1);
+ m_bPAK = AfxGetApp()->GetProfileInt(PREF_SECTION, PAK_KEY, 1);
+ m_bNewApplyHandling = AfxGetApp()->GetProfileInt(PREF_SECTION, NEWAPPLY_KEY, 0);
+ m_bLoadLastMap = AfxGetApp()->GetProfileInt(PREF_SECTION, LOADLASTMAP_KEY, 0);
+ m_bGatewayHack = AfxGetApp()->GetProfileInt(PREF_SECTION, HACK_KEY, 0);
+ m_bTextureWindow = AfxGetApp()->GetProfileInt(PREF_SECTION, TEXTURE_KEY, 0);
+ m_bCleanTiny = AfxGetApp()->GetProfileInt(PREF_SECTION, TINYBRUSH_KEY, 0);
+ strBuff = AfxGetApp()->GetProfileString(PREF_SECTION, TINYSIZE_KEY, "0.5");
+ m_fTinySize = atof(strBuff);
+ m_nAutoSave = AfxGetApp()->GetProfileInt(PREF_SECTION, AUTOSAVETIME_KEY, 5);
+ m_strAutoSave.Format("%i", m_nAutoSave);
+ m_bSnapShots = AfxGetApp()->GetProfileInt(PREF_SECTION, SNAPSHOT_KEY, 0);
+ m_strPAKFile = AfxGetApp()->GetProfileString(PREF_SECTION, PAKFILE_KEY, PAKFILE_DEF);
+ m_nStatusSize = AfxGetApp()->GetProfileInt(PREF_SECTION, STATUS_KEY, 10);
+ m_nMoveSpeed = AfxGetApp()->GetProfileInt(PREF_SECTION, MOVESPEED_KEY, 400);
+ m_nAngleSpeed = AfxGetApp()->GetProfileInt(PREF_SECTION, ANGLESPEED_KEY, 300);
+ m_bSetGame = AfxGetApp()->GetProfileInt(PREF_SECTION, SETGAME_KEY, 0);
+ m_bCamXYUpdate = AfxGetApp()->GetProfileInt(PREF_SECTION, CAMXYUPDATE_KEY, 1);
+ m_bNewLightDraw = AfxGetApp()->GetProfileInt(PREF_SECTION, LIGHTDRAW_KEY, 1);
+ m_bCubicClipping = AfxGetApp()->GetProfileInt(PREF_SECTION, CUBICCLIP_KEY, 1);
+ m_nCubicScale = AfxGetApp()->GetProfileInt(PREF_SECTION, CUBICSCALE_KEY, 13);
+ m_bALTEdge = AfxGetApp()->GetProfileInt(PREF_SECTION, ALTEDGE_KEY, 0);
+ m_bTextureBar = AfxGetApp()->GetProfileInt(PREF_SECTION, TEXTUREBAR_KEY, 0);
+ m_strWhatGame = AfxGetApp()->GetProfileString(PREF_SECTION, WHATGAME_KEY, "Quake3");
+ m_bFaceColors = AfxGetApp()->GetProfileInt(PREF_SECTION, FACECOLORS_KEY, 0);
+ m_bQE4Painting = AfxGetApp()->GetProfileInt(PREF_SECTION, QE4PAINT_KEY, 1);
+ m_bSnapTToGrid = AfxGetApp()->GetProfileInt(PREF_SECTION, SNAPT_KEY, 0);
+ m_bXZVis = AfxGetApp()->GetProfileInt(PREF_SECTION, XZVIS_KEY, 0);
+ m_bYZVis = AfxGetApp()->GetProfileInt(PREF_SECTION, YZVIS_KEY, 0);
+ m_bZVis = AfxGetApp()->GetProfileInt(PREF_SECTION, ZVIS_KEY, 1);
+ m_bSizePaint = AfxGetApp()->GetProfileInt(PREF_SECTION, SIZEPAINT_KEY, 0);
+ m_bDLLEntities = AfxGetApp()->GetProfileInt(PREF_SECTION, DLLENTITIES_KEY, 0);
+ m_bWideToolbar = AfxGetApp()->GetProfileInt(PREF_SECTION, WIDETOOLBAR_KEY, 1);
+ m_bNoClamp = AfxGetApp()->GetProfileInt(PREF_SECTION, NOCLAMP_KEY, 0);
+ m_strPrefabPath = AfxGetApp()->GetProfileString(PREF_SECTION, PREFAB_KEY, strPrefab);
+ m_strUserPath = AfxGetApp()->GetProfileString(PREF_SECTION, USERINI_KEY, "");
+ m_nRotation = AfxGetApp()->GetProfileInt(PREF_SECTION, ROTATION_KEY, 45);
+ m_bSGIOpenGL = AfxGetApp()->GetProfileInt(PREF_SECTION, SGIOPENGL_KEY, 0);
+ m_bBuggyICD = AfxGetApp()->GetProfileInt(PREF_SECTION, BUGGYICD_KEY, 0);
+ m_bHiColorTextures = AfxGetApp()->GetProfileInt(PREF_SECTION, HICOLOR_KEY, 1);
+ m_bChaseMouse = AfxGetApp()->GetProfileInt(PREF_SECTION, CHASEMOUSE_KEY, 1);
+ m_nEntityShowState = AfxGetApp()->GetProfileInt(PREF_SECTION, ENTITYSHOW_KEY, 0);
+ m_nTextureScale = AfxGetApp()->GetProfileInt(PREF_SECTION, TEXTURESCALE_KEY, 50);
+ m_bTextureScrollbar = AfxGetApp()->GetProfileInt(PREF_SECTION, TEXTURESCROLLBAR_KEY, TRUE);
+ m_bDisplayLists = AfxGetApp()->GetProfileInt(PREF_SECTION, DISPLAYLISTS_KEY, TRUE);
+ m_bSwitchClip = AfxGetApp()->GetProfileInt(PREF_SECTION, SWITCHCLIP_KEY, TRUE);
+ m_bSelectWholeEntities = AfxGetApp()->GetProfileInt(PREF_SECTION, SELWHOLEENTS_KEY, TRUE);
+ m_nTextureQuality = AfxGetApp()->GetProfileInt(PREF_SECTION, TEXTUREQUALITY_KEY, 6);
+ m_bShowShaders = AfxGetApp()->GetProfileInt(PREF_SECTION, SHOWSHADERS_KEY, TRUE);
+ m_bGLLighting = AfxGetApp()->GetProfileInt(PREF_SECTION, GLLIGHTING_KEY, FALSE);
+ m_nShader = AfxGetApp()->GetProfileInt(PREF_SECTION, LOADSHADERS_KEY, 0);
+ m_bNoStipple = AfxGetApp()->GetProfileInt(PREF_SECTION, NOSTIPPLE_KEY, 0);
+ m_nUndoLevels = AfxGetApp()->GetProfileInt(PREF_SECTION, UNDOLEVELS_KEY, 0);
+
+ if (m_bRunBefore == FALSE)
+ {
+ SetGamePrefs();
+ }
+}
+
+
+void CPrefsDlg::SavePrefs()
+{
+ if (GetSafeHwnd())
+ UpdateData(TRUE);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, MOUSE_KEY, m_nMouse);
+ if (m_nMouse == 0)
+ m_nMouseButtons = 2;
+ else
+ m_nMouseButtons = 3;
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, WINDOW_KEY, m_nView);
+ AfxGetApp()->WriteProfileString(PREF_SECTION, Q2_KEY, m_strQuake2);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, RUNQ2_KEY, m_bRunQuake);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, TLOCK_KEY, m_bTextureLock);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, RLOCK_KEY, m_bRotateLock);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, LOADLAST_KEY, m_bLoadLast);
+ AfxGetApp()->WriteProfileString(PREF_SECTION, LASTPROJ_KEY, m_strLastProject);
+ AfxGetApp()->WriteProfileString(PREF_SECTION, LASTMAP_KEY, m_strLastMap);
+ AfxGetApp()->WriteProfileInt(INTERNAL_SECTION, RUN_KEY, m_bRunBefore);
+ //AfxGetApp()->WriteProfileInt(PREF_SECTION, _3DFX_KEY, m_b3Dfx);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, FACE_KEY, m_bFace);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, BSP_KEY, m_bInternalBSP);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, RCLICK_KEY, m_bRightClick);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, VERTEX_KEY, m_bVertex);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, AUTOSAVE_KEY, m_bAutoSave);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, PAK_KEY, m_bPAK);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, LOADLASTMAP_KEY, m_bLoadLastMap);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, TEXTURE_KEY, m_bTextureWindow);
+ m_nAutoSave = atoi(m_strAutoSave);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, AUTOSAVETIME_KEY, m_nAutoSave);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, SNAPSHOT_KEY, m_bSnapShots);
+ AfxGetApp()->WriteProfileString(PREF_SECTION, PAKFILE_KEY, m_strPAKFile);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, STATUS_KEY, m_nStatusSize);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, SETGAME_KEY, m_bSetGame);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, CAMXYUPDATE_KEY, m_bCamXYUpdate);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, LIGHTDRAW_KEY, m_bNewLightDraw);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, MOVESPEED_KEY, m_nMoveSpeed);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, ANGLESPEED_KEY, m_nAngleSpeed);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, CUBICCLIP_KEY, m_bCubicClipping);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, CUBICSCALE_KEY, m_nCubicScale);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, ALTEDGE_KEY, m_bALTEdge);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, TEXTUREBAR_KEY, m_bTextureBar);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, FACECOLORS_KEY, m_bFaceColors);
+ AfxGetApp()->WriteProfileString(PREF_SECTION, WHATGAME_KEY, m_strWhatGame);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, QE4PAINT_KEY, m_bQE4Painting);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, SNAPT_KEY, m_bSnapTToGrid);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, XZVIS_KEY, m_bXZVis);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, YZVIS_KEY, m_bYZVis);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, ZVIS_KEY, m_bZVis);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, SIZEPAINT_KEY, m_bSizePaint);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, DLLENTITIES_KEY, m_bDLLEntities);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, WIDETOOLBAR_KEY, m_bWideToolbar);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, NOCLAMP_KEY, m_bNoClamp);
+ AfxGetApp()->WriteProfileString(PREF_SECTION, PREFAB_KEY, m_strPrefabPath);
+ AfxGetApp()->WriteProfileString(PREF_SECTION, USERINI_KEY, m_strUserPath);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, ROTATION_KEY, m_nRotation);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, SGIOPENGL_KEY, m_bSGIOpenGL);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, BUGGYICD_KEY, m_bBuggyICD);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, HICOLOR_KEY, m_bHiColorTextures);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, CHASEMOUSE_KEY, m_bChaseMouse);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, ENTITYSHOW_KEY, m_nEntityShowState);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, TEXTURESCALE_KEY, m_nTextureScale);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, TEXTURESCROLLBAR_KEY, m_bTextureScrollbar);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, DISPLAYLISTS_KEY, m_bDisplayLists);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, SWITCHCLIP_KEY, m_bSwitchClip);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, SELWHOLEENTS_KEY, m_bSelectWholeEntities);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, TEXTUREQUALITY_KEY, m_nTextureQuality);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, SHOWSHADERS_KEY, m_bShowShaders);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, GLLIGHTING_KEY, m_bGLLighting);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, LOADSHADERS_KEY, m_nShader);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, NOSTIPPLE_KEY, m_bNoStipple);
+ AfxGetApp()->WriteProfileInt(PREF_SECTION, UNDOLEVELS_KEY, m_nUndoLevels);
+}
+
+
+
+void CPrefsDlg::OnBtnBrowsepak()
+{
+ UpdateData(TRUE);
+ CFileDialog dlg(true, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "PAK files (*.pak)|*.pak||", this);
+ if (dlg.DoModal() == IDOK)
+ {
+ m_strPAKFile = dlg.GetPathName();
+ UpdateData(FALSE);
+ }
+}
+
+void CPrefsDlg::OnBtnBrowseprefab()
+{
+ UpdateData(TRUE);
+ BROWSEINFO bi;
+ CString strPath;
+ char* p = strPath.GetBuffer(MAX_PATH+1);
+ bi.hwndOwner = GetSafeHwnd();
+ bi.pidlRoot = NULL;
+ bi.pszDisplayName = p;
+ bi.lpszTitle = "Load textures from path";
+ bi.ulFlags = 0;
+ bi.lpfn = NULL;
+ bi.lParam = NULL;
+ bi.iImage = 0;
+ LPITEMIDLIST pidlBrowse;
+ pidlBrowse = SHBrowseForFolder(&bi);
+ if (pidlBrowse)
+ {
+ SHGetPathFromIDList(pidlBrowse, p);
+ strPath.ReleaseBuffer();
+ AddSlash(strPath);
+ m_strPrefabPath = strPath;
+ UpdateData(FALSE);
+ }
+}
+
+void CPrefsDlg::OnBtnBrowseuserini()
+{
+ UpdateData(TRUE);
+ CFileDialog dlg(true, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "INI files (*.ini)|*.ini||", this);
+ if (dlg.DoModal() == IDOK)
+ {
+ m_strUserPath = dlg.GetPathName();
+ UpdateData(FALSE);
+ }
+}
+
+void CPrefsDlg::OnSelchangeComboWhatgame()
+{
+ int n = m_wndWhatGame.GetCurSel();
+ if (n >= 0)
+ {
+ m_wndWhatGame.GetLBText(n, m_strWhatGame);
+ }
+ SetGamePrefs();
+}
+
+void CPrefsDlg::SetGamePrefs()
+{
+ if (strstr(m_strWhatGame, "Quake3") != NULL)
+ {
+ m_bHiColorTextures = TRUE;
+ m_bWideToolbar = TRUE;
+ m_strPAKFile = "PK3 files are loaded from the baseq3 path";
+ m_bInternalBSP = FALSE;
+ if (GetSafeHwnd())
+ {
+ GetDlgItem(IDC_EDIT_PAKFILE)->EnableWindow(FALSE);
+ GetDlgItem(IDC_BTN_BROWSEPAK)->EnableWindow(FALSE);
+ GetDlgItem(IDC_CHECK_INTERNALBSP)->EnableWindow(FALSE);
+ }
+ }
+ else
+ {
+ m_bHiColorTextures = FALSE;
+ m_bWideToolbar = FALSE;
+ m_strPAKFile = PAKFILE_DEF;
+ if (GetSafeHwnd())
+ {
+ GetDlgItem(IDC_EDIT_PAKFILE)->EnableWindow(TRUE);
+ GetDlgItem(IDC_BTN_BROWSEPAK)->EnableWindow(TRUE);
+ GetDlgItem(IDC_CHECK_INTERNALBSP)->EnableWindow(TRUE);
+ }
+ }
+ SavePrefs();
+}