summaryrefslogtreecommitdiff
path: root/hammer/gameconfig.h
diff options
context:
space:
mode:
Diffstat (limited to 'hammer/gameconfig.h')
-rw-r--r--hammer/gameconfig.h254
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