//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
//=============================================================================

#ifndef TOOLDEMOFILE_H
#define TOOLDEMOFILE_H
#ifdef _WIN32
#pragma once
#endif

#include "mathlib/vector.h"
#include "tier0/platform.h"
#include "utlvector.h"
#include "filesystem.h"
#include "demofile/demoformat.h"

class CUtlBuffer;

class CToolDemoFile  
{
public:
	CToolDemoFile();
	virtual ~CToolDemoFile();

	bool	Open(const char *name, bool bReadOnly);
	bool	IsOpen();
	void	Close();

	void	SeekTo( int position );
	unsigned int GetCurPos();
	int GetSize();

	int		ReadRawData( char *buffer, int length );

	void	ReadSequenceInfo(int &nSeqNrIn, int &nSeqNrOutAck);

	void	ReadCmdInfo( democmdinfo_t& info );

	void	ReadCmdHeader( unsigned char& cmd, int& tick );
	
	const char *ReadConsoleCommand( void );

	int		ReadNetworkDataTables( CUtlBuffer *buf ); // if buf is NULL, skip it
	
	int		ReadUserCmd( char *buffer, int &size );

	demoheader_t *ReadDemoHeader();


public:
	FileHandle_t	m_hDemoFile;	// filesystem handle
	char			m_szFileName[MAX_PATH];	//name of current demo file
	demoheader_t    m_DemoHeader;  //general demo info
};

#endif // TOOLDEMOFILE_H