//========= Copyright 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 #pragma warning(pop) #include 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 bGroupWhileIgnore; BOOL bStretchArches; BOOL bShowHelpers; BOOL bCheckVisibleMapErrors; int iTimeBetweenSaves; int iMaxAutosaveSpace; int iMaxAutosavesPerMap; BOOL bClosedCorrectly; char szAutosaveDir[MAX_PATH]; BOOL bUseVGUIModelBrowser; 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. float fFOV; // FOV of 3D Camera float fLightConeLength; // Multiplier for light_spot cone length }; 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 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); bool IsVGUIModelBrowserEnabled(); // 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