diff options
Diffstat (limited to 'hammer/gameconfig.h')
| -rw-r--r-- | hammer/gameconfig.h | 254 |
1 files changed, 254 insertions, 0 deletions
diff --git a/hammer/gameconfig.h b/hammer/gameconfig.h new file mode 100644 index 0000000..1939b6f --- /dev/null +++ b/hammer/gameconfig.h @@ -0,0 +1,254 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#ifndef GAMECONFIG_H +#define GAMECONFIG_H +#ifdef _WIN32 +#pragma once +#endif + +#pragma warning(push, 1) +#pragma warning(disable:4701 4702 4530) +#include <fstream> +#pragma warning(pop) +#include "fgdlib/HelperInfo.h" +#include "TokenReader.h" +#include "fgdlib/gamedata.h" +#include "GamePalette.h" +#include "IEditorTexture.h" +#include "utlvector.h" + + +class MDkeyvalue; +class KeyValues; + + +#define MAX_DIRECTORY_SIZE 32 + + +enum MAPFORMAT +{ + mfQuake = 0, + mfHexen2, + mfQuake2, + mfHalfLife, + mfHalfLife2, +}; + +struct MatExlcusions_s +{ + char szDirectory[MAX_PATH]; // Where we store the material exclusion directories + bool bUserGenerated; // If the user specified this ( default: false -- FGD defined ) +}; + +class CGameConfig +{ +public: + + CGameConfig(); + + static CGameConfig *GetActiveGame(void); + static void SetActiveGame(CGameConfig *pGame); + + inline TEXTUREFORMAT GetTextureFormat(void); + inline void SetTextureFormat(TEXTUREFORMAT eFormat); + + inline float GetDefaultTextureScale(void); + inline void SetDefaultTextureScale(float fScale); + + inline int GetDefaultLightmapScale(void); + inline void SetDefaultLightmapScale(int nScale); + + inline const char *GetCordonTexture(void); + inline void SetCordonTexture(const char *szCordonTexture); + + inline void GetSteamExe(CString &str); + inline void GetSteamDir(CString &str); + inline void GetSteamUserDir(CString &str); + inline void GetSteamAppID(CString &str); + + inline MAPFORMAT GetMapFormat(); + + CUtlVector< MatExlcusions_s > m_MaterialExclusions; + + DWORD dwID; // assigned on load + + char szName[128]; + int nGDFiles; + MAPFORMAT mapformat; + + char szExecutable[128]; + char szDefaultPoint[128]; + char szDefaultSolid[128]; + char szBSP[128]; + char szLIGHT[128]; + char szVIS[128]; + char m_szGameExeDir[128]; + char szMapDir[128]; + char szBSPDir[128]; + char m_szModDir[128]; + int m_MaterialExcludeCount; + + CStringArray GDFiles; + GameData GD; // gamedata files loaded + CGamePalette Palette; + + BOOL Import(std::fstream &, float fVersion); + + bool Load(KeyValues *pkv); + bool Save(KeyValues *pkv); + + void Save(std::fstream &); + bool Save(const char *pszFileName, const char *pszSection); + void CopyFrom(CGameConfig *pConfig); + void LoadGDFiles(void); + + void ParseGameInfo(); + + // Accessor methods to get at the mod + the game (*not* full paths) + const char *GetMod(); + const char *GetGame(); + +protected: + TEXTUREFORMAT textureformat; + float m_fDefaultTextureScale; + int m_nDefaultLightmapScale; + char m_szCordonTexture[MAX_PATH]; + + // These settings are loaded from GameInfo.txt: + char m_szSteamDir[MAX_PATH]; // The full path to steam.exe + char m_szSteamUserDir[MAX_PATH]; // The full path to the users's directory under SteamApps + char m_szSteamAppID[32]; // The app id to add to the command line when launching the game via Steam. +}; + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +MAPFORMAT CGameConfig::GetMapFormat() +{ + return mapformat; +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +TEXTUREFORMAT CGameConfig::GetTextureFormat(void) +{ + return(textureformat); +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CGameConfig::SetTextureFormat(TEXTUREFORMAT eFormat) +{ + textureformat = eFormat; +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +const char *CGameConfig::GetCordonTexture(void) +{ + return(m_szCordonTexture); +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CGameConfig::SetCordonTexture(const char *szCordonTexture) +{ + Q_strncpy( m_szCordonTexture, szCordonTexture, sizeof( m_szCordonTexture ) ); +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +int CGameConfig::GetDefaultLightmapScale(void) +{ + return(m_nDefaultLightmapScale); +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CGameConfig::SetDefaultLightmapScale(int nScale) +{ + m_nDefaultLightmapScale = nScale; +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +float CGameConfig::GetDefaultTextureScale(void) +{ + return(m_fDefaultTextureScale); +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CGameConfig::SetDefaultTextureScale(float fScale) +{ + m_fDefaultTextureScale = fScale; +} + + +//----------------------------------------------------------------------------- +// Purpose: Returns the full path to steam.exe, found by searching up from +// whatever directory hammer is in. +//----------------------------------------------------------------------------- +void CGameConfig::GetSteamDir(CString &str) +{ + str = m_szSteamDir; +} + + +//----------------------------------------------------------------------------- +// Purpose: Returns the full path to steam.exe, found by searching up from +// whatever directory hammer is in. +//----------------------------------------------------------------------------- +void CGameConfig::GetSteamExe(CString &str) +{ + GetSteamDir(str); + str += "\\steam.exe"; +} + + +//----------------------------------------------------------------------------- +// Purpose: Returns the full path to steam.exe, found by searching up from +// whatever directory hammer is in. +//----------------------------------------------------------------------------- +void CGameConfig::GetSteamUserDir(CString &str) +{ + str = m_szSteamUserDir; +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CGameConfig::GetSteamAppID(CString &str) +{ + str = m_szSteamAppID; +} + + +extern GameData *pGD; +extern CGameConfig *g_pGameConfig; +extern float g_MAX_MAP_COORD; +extern float g_MIN_MAP_COORD; + + +#endif // GAMECONFIG_H |