diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /hammer/options.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'hammer/options.h')
| -rw-r--r-- | hammer/options.h | 252 |
1 files changed, 252 insertions, 0 deletions
diff --git a/hammer/options.h b/hammer/options.h new file mode 100644 index 0000000..df8093f --- /dev/null +++ b/hammer/options.h @@ -0,0 +1,252 @@ +//========= 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 <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 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<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); + + 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 |