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/manifest.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'hammer/manifest.h')
| -rw-r--r-- | hammer/manifest.h | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/hammer/manifest.h b/hammer/manifest.h new file mode 100644 index 0000000..b5a44de --- /dev/null +++ b/hammer/manifest.h @@ -0,0 +1,163 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=====================================================================================// + +#ifndef MANIFEST_H +#define MANIFEST_H +#pragma once + +#include "KeyValues.h" +#include "utlvector.h" +#include "MapDoc.h" + +class BoundBox; +class CSelection; +class CMapWorld; +class CManifestInstance; +typedef struct SManifestLoadPrefs TManifestLoadPrefs; + +class CManifestMap +{ +public: + CManifestMap( void ); + + bool IsEditable( void ); + + CMapDoc *m_Map; + CString m_RelativeMapFileName, m_AbsoluteMapFileName; + CString m_FriendlyName; + bool m_bTopLevelMap; + bool m_bReadOnly; + bool m_bIsVersionControlled; + bool m_bCheckedOut; + bool m_bDefaultCheckin; + int m_InternalID; + CManifestInstance *m_Entity; + + // user prefs ( which don't impact the bsp process ) + bool m_bVisible; + bool m_bPrimaryMap; + bool m_bProtected; +}; + + +class CManifestInstance : public CMapEntity +{ +public: + DECLARE_MAPCLASS( CManifestInstance, CMapEntity ) + + CManifestInstance( void ); + CManifestInstance( CManifestMap *pManifestMap ); + + virtual bool IsEditable( void ); + CManifestMap *GetManifestMap( void ) { return m_pManifestMap; } + +private: + CManifestMap *m_pManifestMap; +}; + + +class CManifest : public CMapDoc +{ + friend class CManifestCheckin; + +protected: + DECLARE_DYNCREATE(CManifest) + +public: + CManifest( void ); + ~CManifest( void ); + + static ChunkFileResult_t LoadKeyInfoCallback( const char *szKey, const char *szValue, CManifest *pDoc ); + static ChunkFileResult_t LoadManifestInfoCallback( CChunkFile *pFile, CManifest *pDoc ); + static ChunkFileResult_t LoadKeyCallback( const char *szKey, const char *szValue, CManifestMap *pManifestMap ); + static ChunkFileResult_t LoadManifestVMFCallback( CChunkFile *pFile, CManifest *pDoc ); + static ChunkFileResult_t LoadManifestMapsCallback( CChunkFile *pFile, CManifest *pDoc ); + static ChunkFileResult_t LoadKeyPrefsCallback( const char *szKey, const char *szValue, TManifestLoadPrefs *pManifestLoadPrefs ); + static ChunkFileResult_t LoadManifestVMFPrefsCallback( CChunkFile *pFile, CManifest *pDoc ); + static ChunkFileResult_t LoadManifestMapsPrefsCallback( CChunkFile *pFile, CManifest *pDoc ); + static ChunkFileResult_t LoadManifestCordoningPrefsCallback( CChunkFile *pFile, CManifest *pDoc ); + + bool Load( const char *pszFileName ); + bool Save( const char *pszFileName, bool bForce ); + bool IsValid( void ) { return m_bIsValid; } + + virtual void Initialize( void ); + virtual void Update( void ); + virtual void SetModifiedFlag( BOOL bModified = TRUE ); + virtual bool IsManifest( void ) { return true; } + + void GetFullMapPath( const char *pManifestMapFileName, char *pOutputPath ); + + void SetManifestPrefsModifiedFlag( bool bModified = true ); + int GetNumMaps( void ) { return m_Maps.Count(); } + CManifestMap *GetMap( int index ) { return m_Maps[ index ]; } + CManifestMap *FindMap( CMapDoc *pMap ); + CManifestMap *FindMapByID( int InternalID ); + void SetPrimaryMap( CManifestMap *pManifestMap ); + CManifestMap *GetPrimaryMap( void ) { return m_pPrimaryMap; } + void SetVisibility( CManifestMap *pManifestMap, bool bIsVisible ); + + void MoveSelectionToSubmap( CManifestMap *pManifestMap, bool CenterContents ); + CManifestMap *MoveSelectionToNewSubmap( CString &FriendlyName, CString &FileName, bool CenterContents ); + CManifestMap *CreateNewMap( const char *AbsoluteFileName, const char *RelativeFileName, bool bSetID ); + CManifestMap *AddNewSubmap( CString &FriendlyName, CString &FileName ); + bool AddExistingMap( const char *pszFileName, bool bFromInstance ); + bool AddExistingMap( void ); + bool RemoveSubMap( CManifestMap *pManifestMap ); + + bool CheckOut( ); + bool AddToVersionControl( ); + void CheckFileStatus( ); + + CSelection *GetSelection( void ) { return m_pSelection; } + void ClearSelection( void ); + + virtual void UpdateInstanceMap( CMapDoc *pInstanceMapDoc ); + virtual void AddObjectToWorld(CMapClass *pObject, CMapClass *pParent = NULL); + + CMapWorld *GetManifestWorld( void ) { return m_ManifestWorld; } + + bool m_bReadOnly; + bool m_bIsVersionControlled; + bool m_bCheckedOut; + bool m_bDefaultCheckin; + +protected: + virtual BOOL OnOpenDocument(LPCTSTR lpszPathName); + virtual BOOL OnSaveDocument(LPCTSTR lpszPathName); + virtual void DeleteContents( void ); + +private: + void AddManifestObjectToWorld( CMapClass *pObject, CMapClass *pParent = NULL ); + void RemoveManifestObjectFromWorld( CMapClass *pObject, bool bRemoveChildren ); + bool LoadVMFManifest( const char *pszFileName ); + bool LoadVMFManifestUserPrefs( const char *pszFileName ); + bool SaveVMFManifest( const char *pszFileName ); + bool SaveVMFManifestMaps( const char *pszFileName ); + bool SaveVMFManifestUserPrefs( const char *pszFileName ); + + int m_NextInternalID; + bool m_bIsValid; + bool m_bRelocateSave; + CUtlVector< CManifestMap * > m_Maps; + CManifestMap *m_pPrimaryMap; + char m_ManifestDir[ MAX_PATH ]; + CMenu m_ManifestMenu; + CMapWorld *m_ManifestWorld; + bool m_bManifestChanged, m_bManifestUserPrefsChanged; + CHistory *m_pSaveUndo; + CHistory *m_pSaveRedo; + +protected: + //{{AFX_MSG(CMapDoc) + afx_msg void OnFileSaveAs(); + //}}AFX_MSG + +public: + DECLARE_MESSAGE_MAP() +}; + +#endif // #define MANIFEST_H
\ No newline at end of file |