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.
163 lines
5.2 KiB
163 lines
5.2 KiB
//========= 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
|