aboutsummaryrefslogtreecommitdiff
path: root/mp/src/utils/vbsp/manifest.h
blob: e7b801e1b516c9914dae251c836954e61108cc2b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
//=====================================================================================//

#ifndef __MANIFEST_H
#define __MANIFEST_H

#ifdef _WIN32
#pragma once
#endif

#include "boundbox.h"

//
// Each cordon is a named collection of bounding boxes.
//
struct Cordon_t
{
	inline Cordon_t()
	{
		m_bActive = false;
	}

	CUtlString m_szName;
	bool m_bActive;					// True means cull using this cordon when cordoning is enabled.
	CUtlVector<BoundBox> m_Boxes;
};

class CManifestMap
{
public:
	CManifestMap( void );
	char		m_RelativeMapFileName[ MAX_PATH ];
	bool		m_bTopLevelMap;
};

class CManifest
{
public:
	CManifest( void );

	static ChunkFileResult_t LoadManifestMapKeyCallback( const char *szKey, const char *szValue, CManifestMap *pManifestMap );
	static ChunkFileResult_t LoadManifestVMFCallback( CChunkFile *pFile, CManifest *pManifest );
	static ChunkFileResult_t LoadManifestMapsCallback( CChunkFile *pFile, CManifest *pManifest );
	static ChunkFileResult_t LoadCordonBoxCallback( CChunkFile *pFile, Cordon_t *pCordon );
	static ChunkFileResult_t LoadCordonBoxKeyCallback( const char *szKey, const char *szValue, BoundBox *pBox );
	static ChunkFileResult_t LoadCordonKeyCallback( const char *szKey, const char *szValue, Cordon_t *pCordon );
	static ChunkFileResult_t LoadCordonCallback( CChunkFile *pFile, CManifest *pManifest );
	static ChunkFileResult_t LoadCordonsKeyCallback( const char *pszKey, const char *pszValue, CManifest *pManifest );
	static ChunkFileResult_t LoadCordonsCallback( CChunkFile *pFile, CManifest *pManifest );
	static ChunkFileResult_t LoadManifestCordoningPrefsCallback( CChunkFile *pFile, CManifest *pManifest );

	bool			LoadSubMaps( CMapFile *pMapFile, const char *pszFileName );
	epair_t			*CreateEPair( char *pKey, char *pValue );
	bool			LoadVMFManifest( const char *pszFileName );
	const char		*GetInstancePath( ) { return m_InstancePath; }

	void			CordonWorld( );

private:
	bool			LoadVMFManifestUserPrefs( const char *pszFileName );


	CUtlVector< CManifestMap * >	m_Maps;
	char							m_InstancePath[ MAX_PATH ];
	bool							m_bIsCordoning;
	CUtlVector< Cordon_t >			m_Cordons;
	entity_t						*m_CordoningMapEnt;
};

#endif // #ifndef __MANIFEST_H