From 952c5c128f9efaea89d41d882c4ea3ade7df4591 Mon Sep 17 00:00:00 2001 From: zakk Date: Fri, 26 Aug 2005 04:48:05 +0000 Subject: Itsa me, quake3io! git-svn-id: svn://svn.icculus.org/quake3/trunk@2 edf5b092-35ff-0310-97b2-ce42778d08ea --- q3radiant/PrefsDlg.cpp | 578 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 578 insertions(+) create mode 100755 q3radiant/PrefsDlg.cpp (limited to 'q3radiant/PrefsDlg.cpp') 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(); +} -- cgit v1.2.3