252 lines
6.7 KiB
C++
252 lines
6.7 KiB
C++
//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose: Defines options that are written to the registry.
|
|
//
|
|
//=============================================================================//
|
|
|
|
#ifndef OPTIONS_H
|
|
#define OPTIONS_H
|
|
#pragma once
|
|
|
|
|
|
#pragma warning(push, 1)
|
|
#pragma warning(disable:4701 4702 4530)
|
|
#include <fstream>
|
|
#pragma warning(pop)
|
|
#include <afxtempl.h>
|
|
|
|
|
|
class CGameConfig;
|
|
class KeyValues;
|
|
enum TextureAlignment_t;
|
|
|
|
|
|
class COptionsGeneral
|
|
{
|
|
public:
|
|
int nMaxCameras;
|
|
int iUndoLevels;
|
|
BOOL bLockingTextures;
|
|
BOOL bScaleLockingTextures;
|
|
TextureAlignment_t eTextureAlignment;
|
|
BOOL bLoadwinpos;
|
|
BOOL bIndependentwin;
|
|
BOOL bEnablePerforceIntegration;
|
|
BOOL bGroupWhileIgnore;
|
|
BOOL bStretchArches;
|
|
BOOL bShowHelpers;
|
|
BOOL bCheckVisibleMapErrors;
|
|
int iTimeBetweenSaves;
|
|
int iMaxAutosaveSpace;
|
|
int iMaxAutosavesPerMap;
|
|
BOOL bClosedCorrectly;
|
|
char szAutosaveDir[MAX_PATH];
|
|
BOOL bShowCollisionModels;
|
|
BOOL bShowDetailObjects;
|
|
BOOL bShowNoDrawBrushes;
|
|
BOOL bEnableAutosave;
|
|
BOOL bShowHiddenTargetsAsBroken;
|
|
BOOL bRadiusCulling;
|
|
};
|
|
|
|
|
|
class COptionsTextures
|
|
{
|
|
public:
|
|
CStringArray TextureFiles;
|
|
int nTextureFiles;
|
|
float fBrightness;
|
|
};
|
|
|
|
|
|
class COptionsColors
|
|
{
|
|
public:
|
|
|
|
bool bUseCustom; // Whether to use the custom colors or not.
|
|
bool bScaleAxisColor; // Whether to use the intensity slider to scale the axis color in the 2D view.
|
|
bool bScaleGridColor; // Whether to use the intensity slider to scale the grid color in the 2D view.
|
|
bool bScaleGridDotColor; // Whether to use the intensity slider to scale the dotted grid color in the 2D view.
|
|
bool bScaleGrid10Color; // Whether to use the intensity slider to scale the 10 grid color in the 2D view.
|
|
bool bScaleGrid1024Color; // Whether to use the intensity slider to scale the 1024 grid color in the 2D view.
|
|
|
|
COLORREF clrAxis; // The 2D view axis color.
|
|
COLORREF clrGrid; // The 2D view grid color.
|
|
COLORREF clrGridDot; // The 2D view dotted grid color.
|
|
COLORREF clrGrid10; // The 2D view grid color for every 10th line.
|
|
COLORREF clrGrid1024; // The 2D view grid color for every 1024 units line.
|
|
COLORREF clrBackground; // The 2D view background color.
|
|
COLORREF clrBrush; // The color of brushes.
|
|
COLORREF clrEntity; // The default color of point entities & brush entities, can be overridden by the FGD.
|
|
COLORREF clrSelection; // The color of selected objects.
|
|
COLORREF clrVertex; // The color of vertices.
|
|
COLORREF clrToolHandle; // The color of tool handles.
|
|
COLORREF clrToolBlock; // The color of the block tool.
|
|
COLORREF clrToolSelection; // The color of the selection tool.
|
|
COLORREF clrToolMorph; // The color of the morph tool.
|
|
COLORREF clrToolPath; // The color of the path tool.
|
|
COLORREF clrToolDrag; // The color of tool bounds while it is being dragged.
|
|
COLORREF clrModelCollisionWireframe; // The color of a model's collision wireframe
|
|
COLORREF clrModelCollisionWireframeDisabled; // The color of a model's collision wireframe when set to "Not Solid" via the entity properties
|
|
|
|
};
|
|
|
|
|
|
class COptionsView2D
|
|
{
|
|
public:
|
|
|
|
BOOL bCrosshairs;
|
|
BOOL bGroupCarve;
|
|
BOOL bScrollbars;
|
|
BOOL bRotateConstrain;
|
|
BOOL bDrawVertices;
|
|
BOOL bDrawModels;
|
|
BOOL bWhiteOnBlack;
|
|
BOOL bGridHigh1024;
|
|
BOOL bGridHigh10;
|
|
BOOL bHideSmallGrid;
|
|
BOOL bNudge;
|
|
BOOL bOrientPrimitives;
|
|
BOOL bAutoSelect;
|
|
BOOL bSelectbyhandles;
|
|
BOOL bKeepclonegroup;
|
|
BOOL bGridHigh64;
|
|
BOOL bCenteroncamera;
|
|
BOOL bUsegroupcolors;
|
|
BOOL bGridDots;
|
|
int iDefaultGrid;
|
|
int iGridIntensity;
|
|
int iGridHighSpec;
|
|
};
|
|
|
|
|
|
class COptionsView3D
|
|
{
|
|
public:
|
|
|
|
BOOL bHardware; // Whether to use hardware acceleration (disabled for OpenGL).
|
|
BOOL bReverseY; // Wether to reverse the mouse's Y axis when mouse looking.
|
|
BOOL bUseMouseLook; // Whether to use the engine's default movement controls.
|
|
int iBackPlane; // Distance to far clipping plane in world units.
|
|
int nModelDistance; // Distance in world units within which studio models render.
|
|
int nDetailDistance; // Distance in world units within which detail props render.
|
|
BOOL bAnimateModels; // Whether to animate studio models.
|
|
int nForwardSpeedMax; // Max forward speed in world units per second.
|
|
int nTimeToMaxSpeed; // Time to max forward speed in milliseconds.
|
|
BOOL bFilterTextures; // Whether to filter textures.
|
|
BOOL bReverseSelection; // Whether to animate studio models.
|
|
bool bPreviewModelFade; // Whether to preview model fade in the 3D view.
|
|
int nFadeMode; // Fade - Low, Med, High
|
|
float fFOV; // FOV of 3D Camera
|
|
int iViewInstancesMode; // View Instances mode, none, tinted, normal
|
|
};
|
|
|
|
|
|
class COptionsConfigs
|
|
{
|
|
public:
|
|
|
|
COptionsConfigs(void);
|
|
virtual ~COptionsConfigs(void);
|
|
|
|
CGameConfig *AddConfig(void);
|
|
|
|
int LoadGameConfigs();
|
|
void SaveGameConfigs();
|
|
bool ResetGameConfigs( bool bOverwrite );
|
|
|
|
inline int GetGameConfigCount();
|
|
inline CGameConfig *GetGameConfig(int nIndex);
|
|
|
|
// find a game config based on ID:
|
|
CGameConfig *FindConfig(DWORD dwID, int *piIndex = NULL);
|
|
CGameConfig *FindConfigForGame(const char *szGame);
|
|
|
|
int nConfigs;
|
|
CTypedPtrArray<CPtrArray, CGameConfig*> Configs;
|
|
CString m_strConfigDir;
|
|
|
|
private:
|
|
|
|
int LoadGameConfigsBlock( KeyValues *pBlock );
|
|
int ImportOldGameConfigs(const char *pszFileName);
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Functions for iterating the game configs.
|
|
//-----------------------------------------------------------------------------
|
|
int COptionsConfigs::GetGameConfigCount()
|
|
{
|
|
return nConfigs;
|
|
}
|
|
|
|
|
|
CGameConfig *COptionsConfigs::GetGameConfig(int nIndex)
|
|
{
|
|
return Configs.GetAt(nIndex);
|
|
}
|
|
|
|
|
|
class COptions
|
|
{
|
|
public:
|
|
|
|
COptions();
|
|
|
|
bool Init();
|
|
bool Read();
|
|
void SetDefaults();
|
|
void Write( BOOL fOverwrite, BOOL fSaveConfigs );
|
|
void SetClosedCorrectly(BOOL bClosed);
|
|
|
|
// This happens if it can't initialize the file system, or if they're missing gameinfo.txt.
|
|
// It forces them to choose or create a config that works.
|
|
bool RunConfigurationDialog();
|
|
|
|
void PerformChanges(DWORD = 0xffffffff);
|
|
|
|
// Accessors:
|
|
TextureAlignment_t GetTextureAlignment(void);
|
|
TextureAlignment_t SetTextureAlignment(TextureAlignment_t eTextureAlignment);
|
|
|
|
bool GetShowHelpers(void);
|
|
void SetShowHelpers(bool bShow);
|
|
|
|
BOOL SetLockingTextures(BOOL b);
|
|
BOOL IsLockingTextures(void);
|
|
|
|
BOOL SetScaleLockingTextures(BOOL b);
|
|
BOOL IsScaleLockingTextures(void);
|
|
|
|
// Attributes:
|
|
UINT uDaysSinceInstalled;
|
|
|
|
// Flags for PerformChanges:
|
|
enum
|
|
{
|
|
secTextures = 0x01,
|
|
secGeneral = 0x02,
|
|
secView2D = 0x04,
|
|
secView3D = 0x08,
|
|
secConfigs = 0x10
|
|
};
|
|
|
|
COptionsGeneral general;
|
|
COptionsView2D view2d;
|
|
COptionsView3D view3d;
|
|
COptionsTextures textures;
|
|
COptionsConfigs configs;
|
|
COptionsColors colors;
|
|
|
|
private:
|
|
|
|
void ReadColorSettings(void);
|
|
};
|
|
|
|
extern COptions Options;
|
|
|
|
|
|
#endif // OPTIONS_H
|