diff options
Diffstat (limited to 'tools/vcdblock/vcdblockdoc.h')
| -rw-r--r-- | tools/vcdblock/vcdblockdoc.h | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/tools/vcdblock/vcdblockdoc.h b/tools/vcdblock/vcdblockdoc.h new file mode 100644 index 0000000..51d6293 --- /dev/null +++ b/tools/vcdblock/vcdblockdoc.h @@ -0,0 +1,108 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//===========================================================================// + +#ifndef VCDBLOCKDOC_H +#define VCDBLOCKDOC_H + +#ifdef _WIN32 +#pragma once +#endif + + +#include "dme_controls/inotifyui.h" +#include "datamodel/dmehandle.h" +#include "datamodel/dmelement.h" + + +//----------------------------------------------------------------------------- +// Forward declarations +//----------------------------------------------------------------------------- +class IVcdBlockDocCallback; +class CVcdBlockDoc; +class CDmeVMFEntity; + + +//----------------------------------------------------------------------------- +// Contains all editable state +//----------------------------------------------------------------------------- +class CVcdBlockDoc : public IDmNotify +{ +public: + CVcdBlockDoc( IVcdBlockDocCallback *pCallback ); + ~CVcdBlockDoc(); + + // Inherited from INotifyUI + virtual void NotifyDataChanged( const char *pReason, int nNotifySource, int nNotifyFlags ); + + // Sets/Gets the file name + const char *GetBSPFileName(); + const char *GetVMFFileName(); + const char *GetEditFileName(); + void SetVMFFileName( const char *pFileName ); + void SetEditFileName( const char *pFileName ); + + // Dirty bits (has it changed since the last time it was saved?) + void SetDirty( bool bDirty ); + bool IsDirty() const; + + // Saves/loads from file + bool LoadFromFile( const char *pFileName ); + void SaveToFile( ); + + // Returns the root object + CDmElement *GetRootObject(); + + // Called when data changes (see INotifyUI for flags) + void OnDataChanged( const char *pReason, int nNotifySource, int nNotifyFlags ); + + // Create a text block the engine can parse containing the entity data to spawn + void ServerLevelInitPostEntity( void ); + + // Returns the entity list + CDmAttribute *GetEntityList(); + + // Adds a new info_target + void AddNewInfoTarget( void ); + void AddNewInfoTarget( const Vector &vecOrigin, const QAngle &angAngles ); + + // Deletes a commentary node + void DeleteInfoTarget( CDmeVMFEntity *pNode ); + + // Returns the commentary node at the specified location + CDmeVMFEntity *GetInfoTargetForLocation( Vector &vecOrigin, QAngle &angAbsAngles ); + + // Returns the info target that's closest to this line + CDmeVMFEntity *GetInfoTargetForLocation( Vector &vecStart, Vector &vecEnd ); + + // For element choice lists. Return false if it's an unknown choice list type + virtual bool GetStringChoiceList( const char *pChoiceListType, CDmElement *pElement, + const char *pAttributeName, bool bArrayElement, StringChoiceList_t &list ); + virtual bool GetElementChoiceList( const char *pChoiceListType, CDmElement *pElement, + const char *pAttributeName, bool bArrayElement, ElementChoiceList_t &list ); + + + void VerifyAllEdits( const CDmrElementArray<> &entityList ); + void InitializeFromServer( CDmrElementArray<> &entityList ); + + bool CopyEditsToVMF( void ); + + bool RememberPlayerPosition( void ); + +private: + IVcdBlockDocCallback *m_pCallback; + CDmeHandle< CDmElement > m_hVMFRoot; // VMF file + CDmeHandle< CDmElement > m_hEditRoot; // VMF Edits file + char m_pBSPFileName[512]; + char m_pVMFFileName[512]; + char m_pEditFileName[512]; + bool m_bDirty; +}; + + + +#endif // VCDBLOCKDOC_H |