You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
254 lines
6.6 KiB
254 lines
6.6 KiB
//========= 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
|
|
|